"null" counter information
[ouya-game-data.git] / game-metadata.html
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE html>
3 <html xmlns="http://www.w3.org/1999/xhtml">
4  <head>
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">
8    thead th {
9      position: sticky;
10      top: 0px;
11      background-color: lightgrey;
12    }
13   </style>
14  </head>
15  <body>
16   <table border="1">
17    <thead>
18     <tr>
19      <th>Group</th>
20      <th>Datum</th>
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>
26      <th>Example</th>
27      <th>Description</th>
28     </tr>
29    </thead>
30    <tbody>
31
32     <tr>
33      <td>app</td>
34      <td>Game title</td>
35      <td>title</td>
36      <td>title</td>
37      <td>title</td>
38      <td>title</td>
39      <td>App.title</td>
40      <td>Bloo Kid 2</td>
41      <td></td>
42     </tr>
43     <tr>
44      <td>app</td>
45      <td>Overview text</td>
46      <td>overview (optional)</td>
47      <td></td>
48      <td>overview</td>
49      <td>-</td>
50      <td>App.overview</td>
51      <td>Released in October 2015 by winterworks GmbH.</td>
52      <td></td>
53     </tr>
54     <tr>
55      <td>app</td>
56      <td>Description</td>
57      <td>description</td>
58      <td></td>
59      <td>description</td>
60      <td>description</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>
63      <td></td>
64     </tr>
65     <tr>
66      <td>app</td>
67      <td>Number of players</td>
68      <td>players</td>
69      <td>gamerNumbers</td>
70      <td>gamerNumbers</td>
71      <td>gamerNumbers</td>
72      <td>App.playerNumbers</td>
73      <td>[1]</td>
74      <td>Any combination of 1-4</td>
75     </tr>
76     <tr>
77      <td>app</td>
78      <td>Genre list</td>
79      <td>genres</td>
80      <td>genres</td>
81      <td>genres</td>
82      <td>genres</td>
83      <td>App.genres</td>
84      <td>[Platformer, Retro]</td>
85      <td>
86       original genre list:
87       <ul>
88        <li>Adventure</li>
89        <li>App</li>
90        <li>Arcade/Pinball</li>
91        <li>Card/Casino</li>
92        <li>Dual Stick</li>
93        <li>Entertainment</li>
94        <li>Fight!</li>
95        <li>FPS/Shooter</li>
96        <li>Kids List</li>
97        <li>Meditative</li>
98        <li>Multiplayer</li>
99        <li>Music</li>
100        <li>Platformer</li>
101        <li>Puzzle/Trivia</li>
102        <li>Racing</li>
103        <li>Retro</li>
104        <li>Role-Playing</li>
105        <li>Short on Time?</li>
106        <li>Sim/Strategy</li>
107        <li>Sports</li>
108        <li>Utility</li>
109        <li>Video</li>
110       </ul>
111      </td>
112     </tr>
113     <tr>
114      <td>app</td>
115      <td>Package name</td>
116      <td>packageName</td>
117      <td>package</td>
118      <td></td>
119      <td>apk.package</td>
120      <td>App.packageName</td>
121      <td>evil.corptron.DuckGame</td>
122      <td>Run "aapt dump badging file.apk", field "package: name"</td>
123     </tr>
124     <tr>
125      <td>app</td>
126      <td>Details URL</td>
127      <td>-</td>
128      <td>url</td>
129      <td></td>
130      <td>-</td>
131      <td>-</td>
132      <td>ouya://launcher/details?app=evil.corptron.DuckGame</td>
133      <td></td>
134     </tr>
135     <tr>
136      <td>app</td>
137      <td>Game website</td>
138      <td>website (optional)</td>
139      <td></td>
140      <td>website</td>
141      <td>-</td>
142      <td>App.website</td>
143      <td>http://www.winterworks.de</td>
144      <td></td>
145     </tr>
146     <tr>
147      <td>app</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>
154      <td>Everyone</td>
155      <td>
156       <ul>
157        <li>Everyone</li>
158        <li>9+</li>
159        <li>12+</li>
160        <li>17+</li>
161       </ul>
162      </td>
163     </tr>
164     <tr>
165      <td>app</td>
166      <td>FIXME</td>
167      <td>premium (optional)</td>
168      <td>premium</td>
169      <td>premium</td>
170      <td>premium</td>
171      <td>App.premium</td>
172      <td>false</td>
173      <td></td>
174     </tr>
175     <tr>
176      <td>app</td>
177      <td>When the game was published</td>
178      <td>firstPublishedAt (optional)</td>
179      <td></td>
180      <td>firstPublishedAt</td>
181      <td>firstPublishedAt (unix timestamp)</td>
182      <td>App.firstPublishedAt</td>
183      <td>2015-10-09T07:53:25Z</td>
184      <td></td>
185     </tr>
186     <tr>
187      <td>app</td>
188      <td>Are there in-app purchases?</td>
189      <td>inAppPurchases (optional)</td>
190      <td>inAppPurchases</td>
191      <td></td>
192      <td>inAppPurchases</td>
193      <td>-</td>
194      <td>true</td>
195      <td></td>
196     </tr>
197     <tr>
198      <td>app</td>
199      <td>FIXME</td>
200      <td>-</td>
201      <td>type</td>
202      <td></td>
203      <td>type</td>
204      <td>-</td>
205      <td>app</td>
206      <td>
207       discover: "app", "discover" or "details_page" (for bundles)<br/>
208       details: "Game", FIXME
209      </td>
210     </tr>
211     <tr>
212      <td>app</td>
213      <td>Last update (unix timestamp)</td>
214      <td>-</td>
215      <td>updated_at</td>
216      <td></td>
217      <td>-</td>
218      <td>AppVersion.releaseTime</td>
219      <td>1417731390</td>
220      <td></td>
221     </tr>
222     <tr>
223      <td>app</td>
224      <td>Last update</td>
225      <td>releases.*.date (when "latest")</td>
226      <td>updatedAt</td>
227      <td></td>
228      <td>-</td>
229      <td>AppVersion.releaseTime</td>
230      <td>2014-12-04T22:16:30Z</td>
231      <td></td>
232     </tr>
233
234     <tr>
235      <td>?</td>
236      <td>Metadata about the file</td>
237      <td>-</td>
238      <td>-</td>
239      <td></td>
240      <td>metaData</td>
241      <td>-</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>
244     </tr>
245
246     <tr>
247      <td>rating</td>
248      <td>Number of likes?</td>
249      <td>rating.likeCount (optional)</td>
250      <td></td>
251      <td>likeCount</td>
252      <td>-</td>
253      <td>Rating.likeCount</td>
254      <td>0</td>
255      <td></td>
256     </tr>
257     <tr>
258      <td>rating</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>
265      <td>4.1</td>
266      <td></td>
267     </tr>
268     <tr>
269      <td>rating</td>
270      <td>Number of ratings</td>
271      <td>rating.count (optional)</td>
272      <td>rating.count</td>
273      <td>ratingCount</td>
274      <td>rating.count</td>
275      <td>Rating.reviewCount</td>
276      <td>355</td>
277      <td></td>
278     </tr>
279
280     <tr>
281      <td>product</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>
288      <td>null</td>
289      <td>May be "null" if none, otherwise object</td>
290     </tr>
291     <tr>
292      <td>product</td>
293      <td>Product key</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>
300      <td></td>
301     </tr>
302     <tr>
303      <td>product</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>
311      <td></td>
312     </tr>
313     <tr>
314      <td>product</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>
320      <td>-</td>
321      <td>EUR</td>
322      <td></td>
323     </tr>
324     <tr>
325      <td>product</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>
332      <td>
333       Remove the 9 satellites limitation. Infinite satellites!<br/>
334       null (759x)
335      </td>
336      <td></td>
337     </tr>
338     <tr>
339      <td>product</td>
340      <td>Saving</td>
341      <td>-</td>
342      <td>promotedProduct.percentOff</td>
343      <td>promotedProduct.percentOff</td>
344      <td>promotedProduct.percentOff</td>
345      <td>-</td>
346      <td>0</td>
347      <td></td>
348     </tr>
349     <tr>
350      <td>product</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>
356      <td>-</td>
357      <td>1.99</td>
358      <td></td>
359     </tr>
360     <tr>
361      <td>product</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>
368      <td>1.99</td>
369      <td></td>
370     </tr>
371     <tr>
372      <td>product</td>
373      <td>FIXME</td>
374      <td>?</td>
375      <td>?</td>
376      <td>?</td>
377      <td>promotedProduct.type</td>
378      <td>?</td>
379      <td>"entitlement" (502x), null (758x)</td>
380      <td></td>
381     </tr>
382
383     <tr>
384      <td>apk</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>
391      <td>1.6</td>
392      <td>Run "aapt dump badging file.apk", field "versionName"</td>
393     </tr>
394     <tr>
395      <td>apk</td>
396      <td>UUID of latest apk version</td>
397      <td>releases.*.uuid</td>
398      <td>
399       uuid<br/>
400       latestVersion.uuid
401      </td>
402      <td>
403       uuid<br/>
404       latestVersion
405      </td>
406      <td>version.uuid</td>
407      <td>App.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>
410     </tr>
411     <tr>
412      <td>apk</td>
413      <td>Internal version</td>
414      <td>releases.*.versionCode</td>
415      <td>-</td>
416      <td>-</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>
421     </tr>
422     <tr>
423      <td>apk</td>
424      <td>FIXME</td>
425      <td>releases.*.publicSize (optional)</td>
426      <td></td>
427      <td>publicSize</td>
428      <td>apk.publicSize</td>
429      <td>Apk.publicSize</td>
430      <td>27275</td>
431      <td></td>
432     </tr>
433     <tr>
434      <td>apk</td>
435      <td>FIXME</td>
436      <td>releases.*.nativeSize (optional)</td>
437      <td></td>
438      <td>nativeSize</td>
439      <td>apk.nativeSize</td>
440      <td>Apk.nativeSize</td>
441      <td>20292</td>
442      <td></td>
443     </tr>
444     <tr>
445      <td>apk</td>
446      <td>MD5 file hash</td>
447      <td>releases.*.md5sum</td>
448      <td>latestVersion.apk.md5sum</td>
449      <td>md5sum</td>
450      <td>apk.md5sum</td>
451      <td>Apk.md5sum</td>
452      <td>a5b0f82d54df5f551a64295e43771a10, null (432x)</td>
453      <td></td>
454     </tr>
455     <tr>
456      <td>apk</td>
457      <td>APK file size</td>
458      <td>releases.*.size</td>
459      <td></td>
460      <td>apkFileSize</td>
461      <td>apk.fileSize</td>
462      <td>Apk.size</td>
463      <td>25507828</td>
464      <td></td>
465     </tr>
466     <tr>
467      <td>apk</td>
468      <td>APK publish date</td>
469      <td>releases.*.date</td>
470      <td></td>
471      <td>publishedAt</td>
472      <td>version.publishedAt (unix timestamp)</td>
473      <td>AppVersion.releaseTime</td>
474      <td>2015-10-23T09:58:19Z</td>
475      <td></td>
476     </tr>
477     <tr>
478      <td>apk</td>
479      <td>downloadLink</td>
480      <td>releases.*.url</td>
481      <td></td>
482      <td></td>
483      <td>apk.filename</td>
484      <td>Apk.location</td>
485      <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
488      </td>
489      <td>
490       Also in download.json<br/>
491       Details field: only a file name, no path/domain. Always set.
492      </td>
493     </tr>
494     <tr>
495      <td>apk</td>
496      <td>state</td>
497      <td>-</td>
498      <td>?</td>
499      <td>?</td>
500      <td>apk.state</td>
501      <td>?</td>
502      <td>
503       "complete"
504      </td>
505      <td></td>
506     </tr>
507
508     <tr>
509      <td>media</td>
510      <td>Discover image</td>
511      <td>media.discover</td>
512      <td>image</td>
513      <td></td>
514      <td>tileImage</td>
515      <td>Media</td>
516      <td>https://www.filepicker.io/api/file/05y2T8cKTY6cUfX7RYFR</td>
517      <td></td>
518     </tr>
519     <tr>
520      <td>media</td>
521      <td>Large image</td>
522      <td>media.large</td>
523      <td></td>
524      <td>mainImageFullUrl</td>
525      <td>-</td>
526      <td>App.titleImage</td>
527      <td>https://d3e4aumcqn8cw3.cloudfront.net/api/file/MASaiOBlTEO7GKYXsIns</td>
528      <td></td>
529     </tr>
530     <tr>
531      <td>media</td>
532      <td>FIXME</td>
533      <td>-</td>
534      <td>-</td>
535      <td>-</td>
536      <td>heroImage.url</td>
537      <td>?</td>
538      <td>
539       https://s3.amazonaws.com/ouya-screenshots/3d819f4e-2195-433c-81ea-c766a6f3144f/ouya-image20170118-3-i56ad1<br/>
540       null
541      </td>
542      <td>
543       Most games, had "null" here, only 14 had one set.
544       When this was set, mobileAppIcon was also set.
545      </td>
546     </tr>
547     <tr>
548      <td>media</td>
549      <td>Video</td>
550      <td>media.video (optional)</td>
551      <td></td>
552      <td>videoUrl</td>
553      <td></td>
554      <td>Media</td>
555      <td>https://vimeo.com/141878938</td>
556      <td></td>
557     </tr>
558     <tr>
559      <td>media</td>
560      <td>Game screenshots</td>
561      <td>media.screenshots (optional)</td>
562      <td></td>
563      <td>filepickerScreenshots</td>
564      <td>-</td>
565      <td>Media</td>
566      <td>[urls]</td>
567      <td></td>
568     </tr>
569     <tr>
570      <td>media</td>
571      <td>Detail video</td>
572      <td>media.details.*.url</td>
573      <td></td>
574      <td></td>
575      <td>mediaTiles.*.url (type=video)</td>
576      <td>?</td>
577      <td>
578       <pre>[
579   {
580     "type": "video",
581     "url": "https://vimeo.com/141878938"
582   }
583 ]</pre>
584      </td>
585      <td rowspan="4">
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/>
592       <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
597       mediaTiles format.
598      </td>
599     </tr>
600     <tr>
601      <td>media</td>
602      <td>Detail image thumbnail</td>
603      <td>media.details.*.thumb</td>
604      <td></td>
605      <td></td>
606      <td>mediaTiles.*.urls.thumb (type=image)</td>
607      <td>?</td>
608      <td>
609       Thumbnails were all size 852x479
610       <pre>[
611   {
612     "type: "image",
613     "urls": [
614       "full": "http://...",
615       "thumb": "http://...",
616     ],
617     "fp_url": "http://...."
618   },
619 ]</pre>
620      </td>
621     </tr>
622     <tr>
623      <td>media</td>
624      <td>Detail image full resolution</td>
625      <td>media.details.*.url</td>
626      <td></td>
627      <td></td>
628      <td>mediaTiles.*.urls.full (type=image)</td>
629      <td>?</td>
630      <td>
631       Many detail images had a resolution of 1280x720.
632       <pre>[
633   {
634     "type: "image",
635     "urls": [
636       "full": "http://...",
637       "thumb": "http://...",
638     ],
639     "fp_url": "http://...."
640   }
641 ]</pre>
642      </td>
643     </tr>
644     <tr>
645      <td>media</td>
646      <td>Detail image file picker URL</td>
647      <td>-</td>
648      <td></td>
649      <td></td>
650      <td>mediaTiles.*.fp_url</td>
651      <td>?</td>
652      <td>
653       <pre>[
654   {
655     "type: "image",
656     "urls": [
657       "full": "http://...",
658       "thumb": "http://...",
659     ],
660     "fp_url": "http://...."
661   }
662 ]</pre>
663      </td>
664     </tr>
665     <tr>
666      <td>media</td>
667      <td>FIXME</td>
668      <td>-</td>
669      <td></td>
670      <td>mobileAppIcon</td>
671      <td>mobileAppIcon</td>
672      <td>App.iconImage</td>
673      <td>
674       null<br/>
675       https://s3.amazonaws.com/ouya-screenshots/3ae8fc67-f7f5-4f97-a48c-8ea2d31460fd/ouya-image20170911-3-v6tjz1
676      </td>
677      <td>
678       1246x null, rest had its own URL.
679       Set when heroImage was filled.
680      </td>
681     </tr>
682
683     <tr>
684      <td>developer</td>
685      <td>Developer name</td>
686      <td>developer.name</td>
687      <td></td>
688      <td>developer</td>
689      <td>developer.name</td>
690      <td>Developer.name</td>
691      <td>winterworks GmbH</td>
692      <td></td>
693     </tr>
694     <tr>
695      <td>developer</td>
696      <td>Developer support mail</td>
697      <td>developer.supportEmail (optional)</td>
698      <td></td>
699      <td>supportEmailAddress</td>
700      <td>-</td>
701      <td>Developer.supportEmail</td>
702      <td>null</td>
703      <td></td>
704     </tr>
705     <tr>
706      <td>developer</td>
707      <td>Support phone number</td>
708      <td>developer.supportPhone (optional)</td>
709      <td></td>
710      <td>supportPhone</td>
711      <td>-</td>
712      <td>Developer.supportPhone</td>
713      <td>null</td>
714      <td></td>
715     </tr>
716     <tr>
717      <td>developer</td>
718      <td>Developer is a founder</td>
719      <td>developer.founder (optional)</td>
720      <td></td>
721      <td>founder</td>
722      <td>developer.founder</td>
723      <td>Developer.founder</td>
724      <td>false</td>
725      <td></td>
726     </tr>
727     <tr>
728      <td>developer</td>
729      <td>Developer UUID</td>
730      <td>developer.uuid (optional)</td>
731      <td>-</td>
732      <td>-</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>
736      <td></td>
737     </tr>
738
739    </tbody>
740   </table>
741  </body>
742 </html>