├── .gitignore
├── api
├── devs.ouya.tv
│ ├── api-razer-session.response.json
│ ├── api-v1-credit_card.put.response.json
│ ├── api-v1-sessions.response-valid.json
│ ├── api-v1-themes.response.json
│ ├── api-v1-partner_builds.exit.json
│ ├── api-v1-details.response-unlisted.json
│ ├── api-v1-partner_builds-release_notes.response.json
│ ├── api-v1-sessions.response-invalid.json
│ ├── api-v1-wallet.response.json
│ ├── agreements-marketplace.html.response.html
│ ├── api-v1-games-xxx-purchases.post.request-decrypted.json
│ ├── api-v1-gamers-me-agreements.response.json
│ ├── api-v1-developers-xxx-current_gamer.response.json
│ ├── api-v1-credit_card.post.response.json
│ ├── api-v1-gamers-me.response.json
│ ├── api-v1-queued_downloads.response-2.json
│ ├── api-v1-search.response.json
│ ├── api-razer-gamer.put.rst
│ ├── api-v1-console_configuration.response.json
│ ├── api-v1-discover-tutorials.rst
│ ├── api-v1-wallet.response-2.json
│ ├── api-v1-credit_card.put.get-body.txt
│ ├── api-v1-details.response-button-url.json
│ ├── api-v1-gamers-me-apps-developed.rst
│ ├── api-v1-ratings.response.json
│ ├── api-v1-crash_report.rst
│ ├── api-v1-details.response-button-appdetails.json
│ ├── api-v1-apps-xxx-download.response.json
│ ├── api-v1-queued_downloads.response.json
│ ├── api-v1-gamers.response-invalid.json
│ ├── api-v1-games-xxx-purchases.post.request-nocrypt.json
│ ├── api-v1-details.response-button-switchable.json
│ ├── api-v1-games-xxx-purchases.response-decrypted.json
│ ├── api-v1-developers-xxx-products.response.json
│ ├── update_strings.txt.response.txt
│ ├── api-v1-games-xxx-purchases.response.json
│ ├── update_strings.txt.rst
│ ├── api-razer-gamer.post.rst
│ ├── agreements-marketplace.html.rst
│ ├── api-v1-ratings.rst
│ ├── api-firmware_builds.response-short.json
│ ├── api-v1-premium_purchases.rst
│ ├── api-v1-console_configuration.rst
│ ├── api-v1-discover.response-bundle.json
│ ├── api-v1-games-xxx-purchases.post.response.json
│ ├── api-v1-gamers-me.rst
│ ├── api-v1-apps-xxx-download.rst
│ ├── api-v1-gamers-me-user_messages.rst
│ ├── api-v1-developers-xxx-current_gamer.rst
│ ├── api-v1-recommendations.rst
│ ├── api-v1-gamers-me-agreements.rst
│ ├── api-v1-discover-home.rst
│ ├── api-v1-queued_downloads-xxx.delete.rst
│ ├── api-v1-gamers-me-consoles.rst
│ ├── api-firmware_builds.rst
│ ├── api-v1-recommendations.response.json
│ ├── api-v1-ratings.post.rst
│ ├── api-v1-gamers-me-agreements.put.rst
│ ├── api-v1-apps-xxx.rst
│ ├── api-v1-credit_card.put.rst
│ ├── api-v1-wallet.rst
│ ├── api-v1-credit_card.post.rst
│ ├── api-v1-events.rst
│ ├── api-v1-search.rst
│ ├── api-v1-partner_builds.response.json
│ ├── api-v1-partner_builds-release_notes.rst
│ ├── api-v1-developers-xxx-products.rst
│ ├── api-v1-queued_downloads.rst
│ ├── api-v1-themes.rst
│ ├── api-v1-games-xxx-community_content.post.rst
│ ├── api-v1-gamers-key.put.rst
│ ├── api-razer-session.rst
│ ├── api-v1-sessions.rst
│ ├── api-v1-gamers.rst
│ ├── api-v1-games-xxx-community_content.rst
│ ├── api-v1-games-xxx-purchases.post.rst
│ ├── api-v1-apps-xxxuuid-response.json
│ ├── api-v1-premium_purchases.response.json
│ ├── api-v1-details.response-bundle.json
│ ├── api-v1-games-xxx-purchases.rst
│ ├── api-v1-apps-xxx.response-bombsquad.json
│ ├── api-v1-apps-xxx.response.json
│ ├── api-v1-details.rst
│ ├── api-v1-discover.response.json
│ ├── api-v1-partner_builds.rst
│ ├── api-v1-details.response-app.json
│ ├── api-v1-discover.rst
│ ├── api-v1-discover-home.response.json
│ ├── api-v1-events.request.urlencoded
│ ├── api-v1-events.request.json
│ └── api-v1-details.response-bundle-full.json
├── status.ouya.tv
│ └── api-v1-status.rst
├── www.ouya.tv
│ └── system_message.rst
├── ouya-updates.s3.amazonaws.com
│ ├── updates-ouya_1_1.rst
│ ├── updates-ouya_1_1.json
│ └── updates-ouya_1_1.html
├── ott9.wpstn.com
│ └── live.rst
└── configuration.rst
├── styles.css
├── headers.rst
└── README.rst
/.gitignore:
--------------------------------------------------------------------------------
1 | /*.htm
2 | /*.html
3 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-razer-session.response.json:
--------------------------------------------------------------------------------
1 | {
2 | "token": "00702342-0000-1111-2222-c3e1500cafe1"
3 | }
4 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-credit_card.put.response.json:
--------------------------------------------------------------------------------
1 | {
2 | "country": null,
3 | "success": true
4 | }
5 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-sessions.response-valid.json:
--------------------------------------------------------------------------------
1 | {
2 | "token": "96bfeaae-212d-447b-b4bf-caa5e86c0502"
3 | }
4 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-themes.response.json:
--------------------------------------------------------------------------------
1 | {
2 | "background_style": "static",
3 | "background": "",
4 | "video": ""
5 | }
6 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-partner_builds.exit.json:
--------------------------------------------------------------------------------
1 | {
2 | "actions": [
3 | {
4 | "action": "exit"
5 | }
6 | ]
7 | }
8 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-details.response-unlisted.json:
--------------------------------------------------------------------------------
1 | {
2 | "error": {
3 | "message": "Unknown application",
4 | "code": 2005
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-partner_builds-release_notes.response.json:
--------------------------------------------------------------------------------
1 | {
2 | "releaseNotes": "This is the latest firmware for the Razer Forge TV."
3 | }
4 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-sessions.response-invalid.json:
--------------------------------------------------------------------------------
1 | {
2 | "error": {
3 | "message": "Invalid authentication data",
4 | "code": 2001
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-wallet.response.json:
--------------------------------------------------------------------------------
1 | {
2 | "requiresPaymentMethod": true,
3 | "balance": 0,
4 | "credit_card": null,
5 | "currency": "EUR"
6 | }
7 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/agreements-marketplace.html.response.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cweiske/ouya-store-api/master/api/devs.ouya.tv/agreements-marketplace.html.response.html
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-games-xxx-purchases.post.request-decrypted.json:
--------------------------------------------------------------------------------
1 | {
2 | "identifier":"SONIC4EP1FULL_001",
3 | "testing":"true",
4 | "uuid":"2ba72281837f0df3"
5 | }
6 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-gamers-me-agreements.response.json:
--------------------------------------------------------------------------------
1 | {
2 | "marketplace_required_version": 2,
3 | "marketplace": 0,
4 | "privacy_required_version": 0,
5 | "privacy": 0
6 | }
7 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-developers-xxx-current_gamer.response.json:
--------------------------------------------------------------------------------
1 | {
2 | "gamer": {
3 | "username": "cwdev3",
4 | "uuid": "0a6f5fc0-bf9b-42b2-a4d0-69f2c8e4d5da"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-credit_card.post.response.json:
--------------------------------------------------------------------------------
1 | {
2 | "one_time_token": "C187D8AE8970435C9638C58C8351E2DEF975680B737A4B55A3D314BF0C477F2A",
3 | "redirect_url": "https://ott9.wpstn.com/live/"
4 | }
5 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-gamers-me.response.json:
--------------------------------------------------------------------------------
1 | {
2 | "gamer": {
3 | "uuid": "0a6f5fc0-bf9b-42b2-a4d0-69f2c8e4d5da",
4 | "settings": {},
5 | "founder": false,
6 | "email": "cwdev3@example.org",
7 | "username": "cwdev3"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-queued_downloads.response-2.json:
--------------------------------------------------------------------------------
1 | {
2 | "queue": [
3 | {
4 | "versionUuid": "",
5 | "title": "Sonic The Hedgehog 4 Episode I",
6 | "source": "gamer",
7 | "uuid": "com.sega.sonic4epi"
8 | }
9 | ]
10 | }
11 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-search.response.json:
--------------------------------------------------------------------------------
1 | {
2 | "count": 1,
3 | "results": [
4 | {
5 | "title": "Frightfight",
6 | "url": "ouya://launcher/details?app=com.appsolutegames.frightfight",
7 | "contentRating": "Everyone"
8 | }
9 | ]
10 | }
11 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-razer-gamer.put.rst:
--------------------------------------------------------------------------------
1 | ============================================
2 | ``PUT https://devs.ouya.tv/api/razer/gamer``
3 | ============================================
4 |
5 | Update the gamer profile (store the nickname during login).
6 |
7 | FIXME: Undocumented.
8 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-console_configuration.response.json:
--------------------------------------------------------------------------------
1 | {"BTC_LAUNCHER_PACKAGES":"tv.ouya.xbmc,tunein.player,tv.twitch.android.viewer,com.plexapp.android,tv.ouya.bbciplayer,tv.ouya.hulu,tv.ouya.minecrafttv,tv.ouya.ouyabrowser,tv.ouya.pandora,tv.ouya.visiomgo,tv.ouya.youtube,tv.ouya.tubitv"}
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-discover-tutorials.rst:
--------------------------------------------------------------------------------
1 | ======================================================
2 | ``GET https://devs.ouya.tv/api/v1/discover/tutorials``
3 | ======================================================
4 |
5 | Loaded then the user enters the "develop" menu.
6 |
7 | FIXME
8 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-wallet.response-2.json:
--------------------------------------------------------------------------------
1 | {
2 | "balance": 0.0,
3 | "credit_card": {
4 | "expires_at": "09/30/2016",
5 | "last_four": "1234",
6 | "provider": "MasterCard"
7 | },
8 | "currency": "USD",
9 | "requiresPaymentMethod": true
10 | }
11 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-credit_card.put.get-body.txt:
--------------------------------------------------------------------------------
1 | HTTP/1.1 303 See Otherlocation: https://devs.ouya.tv/wpsuccess?OTT=C187D8AE8970435C9638C58C8351E2DEF975680B737A4B55A3D314BF0C477F2A
2 | Content-Length: 9
3 | Via: 1.1 localhost (Apache-HttpClient/UNAVAILABLE (cache))
4 | Date: Wed, 17 Jun 2015 21:51:23 GMT
5 | See Other
6 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-details.response-button-url.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "Game",
3 | "title": "Bloo Kid 2",
4 | "buttons": [
5 | {
6 | "bold": false,
7 | "url": "http://cweiske.de/",
8 | "text": "Open developer page"
9 | }
10 | ],
11 | ...
12 | }
13 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-gamers-me-apps-developed.rst:
--------------------------------------------------------------------------------
1 | ============================================================
2 | ``GET https://devs.ouya.tv/api/v1/gamers/me/apps/developed``
3 | ============================================================
4 |
5 | Loaded then the user enters the "develop" menu and activates
6 | the "builds" menu item.
7 |
8 | FIXME
9 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-ratings.response.json:
--------------------------------------------------------------------------------
1 | {
2 | "ratings": [
3 | {
4 | "score": 4,
5 | "game": "com.grahamweldon.games.puzzle2048"
6 | },
7 | {
8 | "score": 2,
9 | "game": "com.baKno.Motorbike"
10 | },
11 | {
12 | "score": 4,
13 | "game": "org.jfedor.frozenbubble"
14 | }
15 | ]
16 | }
17 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-crash_report.rst:
--------------------------------------------------------------------------------
1 | =================================================
2 | ``POST https://devs.ouya.tv/api/v1/crash_report``
3 | =================================================
4 |
5 | When the OUYA launcher crashed, it saves a crash log.
6 | When the OUYA reboots, it tries to send the crash log data
7 | to this URL.
8 |
9 | FIXME
10 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-details.response-button-appdetails.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "Game",
3 | "title": "Bloo Kid 2",
4 | "buttons": [
5 | {
6 | "bold": false,
7 | "url": "ouya://launcher/details?app=de.eiswuxe.blookid2_unlocked",
8 | "text": "Show unlocked"
9 | }
10 | ],
11 | ...
12 | }
13 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-apps-xxx-download.response.json:
--------------------------------------------------------------------------------
1 | {
2 | "app": {
3 | "downloadLink": "http://cds.t2z5c2q6.hwcdn.net/apps/a137f31c-ad28-47e6-ae43-0a346ebe249a/com.toa.tetrisFusionOuya/0fba3bba-83e0-4e3e-9f29-409258429757/Gx9cZz0KTRCNstv78Mq5_ToaFusionOuya-2.0.1r.apk",
4 | "contentRating": "Everyone",
5 | "version": "0fba3bba-83e0-4e3e-9f29-409258429757",
6 | "fileSize": 41125055
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-queued_downloads.response.json:
--------------------------------------------------------------------------------
1 | {
2 | "queue": [
3 | {
4 | "versionUuid": "",
5 | "title": "Tetris Battle Fusion",
6 | "source": "new-user",
7 | "uuid": "com.toa.tetrisFusionOuya"
8 | },
9 | {
10 | "versionUuid": "",
11 | "title": "BombSquad",
12 | "source": "new-user",
13 | "uuid": "net.froemling.bombsquad"
14 | }
15 | ]
16 | }
17 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-gamers.response-invalid.json:
--------------------------------------------------------------------------------
1 | {
2 | "error": {
3 | "data": {
4 | "username": [
5 | "can't be blank",
6 | "is too short (minimum is 3 characters)",
7 | "is invalid"
8 | ],
9 | "password": [
10 | "can't be blank",
11 | "cannot contain username"
12 | ]
13 | },
14 | "message": "Validation errors occurred",
15 | "code": 2006
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-games-xxx-purchases.post.request-nocrypt.json:
--------------------------------------------------------------------------------
1 | blob=eyAia2V5IiA6ICJHcnl0dnRSYjY5TDh6L3pIT3RTdGFnPT0iLCAiaXYiIDogIjZzMDd3OGo3VFNleVhQdzBsMXdvRUE9PSIsICJibG9iIiA6ICJleUpwWkdWdWRHbG1hV1Z5SWpvaVoyOWlYMloxYkd4ZloyRnRaVjkxYm14dlkyc2lMQ0owWlhOMGFXNW5Jam9pZEhKMVpTSXNJblYxYVdRaU9pSTNOak0xTjJFME9XRm1NVFk0WWpJNUluMD0iIH0%3D&iv=QHpnmyEf7BGZhTnK37NggQ%3D%3D&key=bdR0jZ22clKqJwOsyYdn8w%3D%3D&auth_token=00702342-0000-1111-2222-c3e1500cafe1
2 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-details.response-button-switchable.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "Game",
3 | "title": "Bloo Kid 2",
4 | "buttons": [
5 | {
6 | "bold": false,
7 | "status_url": "http://example.org/activation-status",
8 | "url": "http://example.org/activate",
9 | "off_url": "http://example.org/deactivate",
10 | "text": "Activate feature",
11 | "on_text": "Deactivate feature"
12 | }
13 | ],
14 | ...
15 | }
16 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-games-xxx-purchases.response-decrypted.json:
--------------------------------------------------------------------------------
1 | {
2 | "purchases": [
3 | {
4 | "purchaseDate": 1576845859000,
5 | "generateDate": 1576845859000,
6 | "identifier": "blookid2_full",
7 | "gamer": "00702342-0000-1111-2222-c3e1500cafe2",
8 | "uuid": "0dc813a0-37d5-11ea-9ea4-075f44abe85b",
9 | "priceInCents": 399,
10 | "localPrice": 3.99,
11 | "currency": "EUR"
12 | }
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/styles.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 3ex 15%;
3 | font-family: helvetica;
4 | color: #222;
5 | }
6 |
7 | header code, #contents code {
8 | font-size: inherit;
9 | border: none;
10 | background-color: transparent;
11 | color: inherit;
12 | }
13 | h1 {
14 | text-align: center;
15 | margin-bottom: 2ex;
16 | }
17 | h2 {
18 | margin-top: 3ex;
19 | padding-top: 1ex;
20 | border-top: 1px solid grey;
21 | }
22 |
23 | dd {
24 | margin-left: 3ex;
25 | }
26 |
27 | span.literal {
28 | font-family: monospace;
29 | }
30 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-developers-xxx-products.response.json:
--------------------------------------------------------------------------------
1 | {
2 | "developerName": "AppBarbecue Inc.",
3 | "currency": "USD",
4 | "products": [
5 | {
6 | "type": "entitlement",
7 | "description": "Instantly unlock full game with all Pro Levels. The challenging puzzles will take days to solve. Explore Assyria, Hanging Gardens & more. ",
8 | "percentOff": 0,
9 | "originalPrice": 4.99,
10 | "localPrice": 4.99,
11 | "priceInCents": 499,
12 | "name": "Unlock All Pro Levels",
13 | "identifier": "unlock_pro"
14 | }
15 | ]
16 | }
17 |
--------------------------------------------------------------------------------
/api/status.ouya.tv/api-v1-status.rst:
--------------------------------------------------------------------------------
1 | ===========================================
2 | ``GET http://status.ouya.tv/api/v1/status``
3 | ===========================================
4 |
5 | Check if the internet connection is working by fetching an empty file.
6 |
7 | HTTP request
8 | ============
9 | Protocol
10 | ``http``
11 | Method
12 | ``GET``
13 | Host
14 | ``status.ouya.tv``
15 | Path
16 | ``/api/v1/status``
17 | Headers
18 | None of the standard headers.
19 |
20 | ``User-Agent``
21 | ``Ouya-Connection-Test``
22 |
23 |
24 | HTTP response
25 | =============
26 | Status code
27 | ``204 No Content``
28 |
29 | Empty body.
30 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/update_strings.txt.response.txt:
--------------------------------------------------------------------------------
1 | Preparing to televise the Revolution…
2 | Downloading awesome sauce…
3 | Maximizing fun level…
4 | Shifting bits…
5 | Tasting rainbows…
6 | Herding cats…
7 | Aligning synergies…
8 | Shooting stars…
9 | Well, I never! ಠ_ರೃ
10 | Bending genres…
11 | Stretching analogies…
12 | Calculating odds…
13 | Peeling away layers…
14 | Reducing complexity…
15 | Opening flaps…
16 | Inventing emoticons… ≈:¬D
17 | Sharpening skates…
18 | Keeping calm…
19 | Refactoring bezier curves…
20 | We Must Perform A Quirkafleeg…
21 | To be honest, just downloading a firmware update…
22 | Rearranging deckchairs…
23 | Arming Photon Torpedoes…
24 | Adding the fun…
25 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-games-xxx-purchases.response.json:
--------------------------------------------------------------------------------
1 | {
2 | "blob": "0F/7D3gtCgLNJ6pZsy8M5LOLMlNsKPouBlY2VvYeTSF+k5LZQR0Otbp8vZXV\nS8Ad/hlQAuqrVgnLYEO1gxadfWQnQE1ZEoOnGcxBiNL2svOftt1uonvyTqBt\nKz5qLrd2oNI8V65dX+0ydZ7IwT5TOglC4B/YHKjA32GYNaw7GaNMmu3zJVfF\nJblVT4bZDOeyxTLanp3Fan7fZ6AkMlWy81T5RMf9vB/PBkUWlpIUZeUToXBT\n6HSRV1Ke4kfkyvmY2WisxJ0dApkcgS+bdbWhH7JsdMTT+zwUISxav5iJLkVt\n1fA1g5WN8NwVzb2OKPZcAQm1d/TnsqUnMQBfDAFaji7ADZ0Ukd0xxsirYQTW\nWpNJbFVtAJpkLNjEqVSVWqr0\n",
3 | "iv": "t3jir1LHpICunvhlM76edQ==\n",
4 | "key": "CqREllniR2CZsTdqGlSHq+b1n/ludDCPV8AAaR3aF4va8lckIRONsvQmndJS\niccb/UeYHXQOf2o06/oR8rGJvrAf598K7a7QQSSY1u6Btd8op/nOzCn+F7Q5\n4tqu7qvlVRrIMDIQtms/SfQTE2XEyKvEQVm2N/PhbdjXmXmgJHU=\n"
5 | }
6 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/update_strings.txt.rst:
--------------------------------------------------------------------------------
1 | ===============================================
2 | ``GET https://devs.ouya.tv/update_strings.txt``
3 | ===============================================
4 |
5 | Labels to show when updating the firmware.
6 |
7 |
8 | HTTP request
9 | ============
10 | Protocol
11 | ``https``
12 | Method
13 | ``GET``
14 | Host
15 | ``devs.ouya.tv``
16 | Path
17 | ``/update_strings.txt``
18 | Headers
19 | None of the standard headers required.
20 | GET parameters
21 | None
22 |
23 |
24 | HTTP response
25 | =============
26 | Plain text file with one string per line
27 |
28 |
29 | Example
30 | -------
31 | .. include:: update_strings.txt.response.txt
32 | :code:
33 | :end-line: 5
34 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-razer-gamer.post.rst:
--------------------------------------------------------------------------------
1 | =============================================
2 | ``POST https://devs.ouya.tv/api/razer/gamer``
3 | =============================================
4 |
5 | Register a new account on a Razer Forge TV.
6 |
7 | Similar to `POST https://devs.ouya.tv/api/v1/gamers`_,
8 | but uses different POST data.
9 |
10 |
11 | Request
12 | =======
13 |
14 | POST data
15 | ---------
16 | ``email``
17 | E-mail address
18 | ``password``
19 | Password
20 | ``email_opt_out``
21 | Inverted checkbox "Opt-in for emails from Razer".
22 |
23 | Value: ``true`` or ``false``
24 |
25 | Response
26 | ========
27 |
28 | See `POST https://devs.ouya.tv/api/v1/gamers`_.
29 |
30 | Validation error for e-mail is in the ``email`` property.
31 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/agreements-marketplace.html.rst:
--------------------------------------------------------------------------------
1 | ========================================================
2 | ``GET https://devs.ouya.tv/agreements/marketplace.html``
3 | ========================================================
4 |
5 | Terms of services you have to accept during registration.
6 |
7 | Fetched by the browser / web view.
8 |
9 |
10 | HTTP request
11 | ============
12 | Protocol
13 | ``https``
14 | Method
15 | ``GET``
16 | Host
17 | ``devs.ouya.tv``
18 | Path
19 | ``/agreements/marketplace.rst``
20 | Headers
21 | None of the standard headers required.
22 | GET parameters
23 | None
24 |
25 |
26 | HTTP response
27 | =============
28 | HTML file
29 |
30 |
31 | See also
32 | ========
33 | - `GET https://devs.ouya.tv/api/v1/gamers/me/agreements`_
34 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-ratings.rst:
--------------------------------------------------------------------------------
1 | ===========================================
2 | ``GET https://devs.ouya.tv/api/v1/ratings``
3 | ===========================================
4 |
5 | Get a list of games and the ratings the user made for them.
6 |
7 |
8 | HTTP request
9 | ============
10 | Protocol
11 | ``https``
12 | Method
13 | ``GET``
14 | Host
15 | ``devs.ouya.tv``
16 | Path
17 | ``/api/v1/ratings``
18 | Headers
19 | Standard headers
20 | GET parameters
21 | ``auth_token``
22 | Same as ``X-OUYA-AuthToken``
23 |
24 |
25 | HTTP response
26 | =============
27 | Status code
28 | ``200 OK``
29 | Content-type
30 | ``application/json; charset=utf-8``
31 |
32 |
33 | Example
34 | -------
35 |
36 | .. include:: api-v1-ratings.response.json
37 | :code:
38 |
--------------------------------------------------------------------------------
/api/www.ouya.tv/system_message.rst:
--------------------------------------------------------------------------------
1 | ==========================================
2 | ``GET https://www.ouya.tv/system_message``
3 | ==========================================
4 |
5 | Unknown
6 |
7 | Usage
8 | =====
9 | - After storing credit card result in
10 | `PUT https://devs.ouya.tv/api/v1/credit_card`_.
11 |
12 | HTTP request
13 | ============
14 | Protocol
15 | ``https``
16 | Method
17 | ``GET``
18 | Host
19 | ``www.ouya.tv``
20 | Path
21 | ``//system_message``
22 | Headers
23 | ``User-Agent``
24 | ``OUYA 0 1.00 1.2.1427_r1``
25 | GET parameters
26 | ``build``:
27 | ``1.2.1427_r1``
28 |
29 | OUYA firmware version
30 |
31 | HTTP response
32 | =============
33 | Status code
34 | ``403 Forbidden``
35 |
36 | This was probably once used, but now does only return an error.
37 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-firmware_builds.response-short.json:
--------------------------------------------------------------------------------
1 | {
2 | "result": [
3 | {
4 | "incremental": false,
5 | "filename": "OUYA-1.2.1427-r1.zip",
6 | "timestamp": "1418407476",
7 | "md5sum": "3a95be82b4c33bd68353dc314346f39f",
8 | "channel": "stable",
9 | "url": "http://cds.t2z5c2q6.hwcdn.net/ota/RC-OUYA-1.2.1427-r1_ota.zip",
10 | "requiredUpto": "1.2.995",
11 | "changes": "https://devs.ouya.tv/api/changelog/3a95be82b4c33bd68353dc314346f39f.txt",
12 | "changesLocalized": {
13 | "de": " \r\n\r\n...",
14 | "it": "\r\n\r\n..",
15 | "fr": "\r\n\r\n..",
16 | "es": "\r\n\r\n..",
17 | "en": "\r\n\r\n.."
18 | }
19 | }
20 | ]
21 | }
22 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-premium_purchases.rst:
--------------------------------------------------------------------------------
1 | =====================================================
2 | ``GET https://devs.ouya.tv/api/v1/premium_purchases``
3 | =====================================================
4 |
5 | Get a list of all games that have been bought.
6 |
7 |
8 | HTTP request
9 | ============
10 | Protocol
11 | ``https``
12 | Method
13 | ``GET``
14 | Host
15 | ``devs.ouya.tv``
16 | Path
17 | ``/api/v1/premium_purchases``
18 | Headers
19 | Standard headers
20 | GET parameters
21 | ``auth_token``
22 | Same as ``X-OUYA-AuthToken``
23 |
24 |
25 | HTTP response
26 | =============
27 | Status code
28 | ``200 OK``
29 | Content-type
30 | ``application/json; charset=utf-8``
31 |
32 | Full details of the apps.
33 |
34 | Example
35 | -------
36 |
37 | .. include:: api-v1-premium_purchases.response.json
38 | :code:
39 |
--------------------------------------------------------------------------------
/api/ouya-updates.s3.amazonaws.com/updates-ouya_1_1.rst:
--------------------------------------------------------------------------------
1 | ==================================================================
2 | ``GET http://ouya-updates.s3.amazonaws.com/updates-ouya_1_1.json``
3 | ==================================================================
4 |
5 | Information about the latest firmware.
6 | Only used by old firmware versions like ``1.0.138`` and ``1.0.158``.
7 |
8 | Firmware ``1.0.248`` and later do not check this URL anymore and
9 | use `GET https://devs.ouya.tv/api/firmware_builds`_ instead.
10 |
11 |
12 | HTTP request
13 | ============
14 | Protocol
15 | ``http``
16 | Method
17 | ``GET``
18 | Host
19 | ``ouya-updates.s3.amazonaws.com``
20 | Path
21 | ``/updates-ouya_1_1.json``
22 |
23 |
24 | HTTP response
25 | =============
26 | Status code
27 | ``200 OK``
28 |
29 | .. include:: updates-ouya_1_1.json
30 | :code:
31 |
--------------------------------------------------------------------------------
/api/ouya-updates.s3.amazonaws.com/updates-ouya_1_1.json:
--------------------------------------------------------------------------------
1 | {
2 | "result": [
3 | {
4 | "filename": "OUYA-1.2.1084-r1.zip",
5 | "timestamp": "1400714704",
6 | "md5sum": "ed9f1712988c5ec2033f44fabe8e6297",
7 | "channel": "stable",
8 | "url": "http://devs-ouya-tv-prod.s3.amazonaws.com/ota/RC-OUYA-1.2.1084-r1_ota.zip",
9 | "requiredUpto": "1.2.995",
10 | "changes": "https://devs.ouya.tv/api/changelog/ed9f1712988c5ec2033f44fabe8e6297.txt",
11 | "changesLocalized": {
12 | "en": "\r\n\r\n
\r\n...",
13 | "es": "\r\n\r\n \r\n...",
14 | "fr": "\r\n\r\n \r\n...",
15 | "it": "\r\n\r\n \r\n...",
16 | "de": "\r\n\r\n \r\n..."
17 | },
18 | "incremental": false
19 | }
20 | ]
21 | }
22 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-console_configuration.rst:
--------------------------------------------------------------------------------
1 | =========================================================
2 | ``GET https://devs.ouya.tv/api/v1/console_configuration``
3 | =========================================================
4 |
5 | Sets Android system properties.
6 | Allows to enable debug or kiosk mode remotely.
7 |
8 | This file is downloaded every hour.
9 |
10 | See `Configuration options`_.
11 |
12 |
13 | HTTP request
14 | ============
15 | Protocol
16 | ``https``
17 | Method
18 | ``GET``
19 | Host
20 | ``devs.ouya.tv``
21 | Path
22 | ``/api/v1/console_configuration``
23 | Headers
24 | Standard headers
25 | GET parameters
26 | ``auth_token``
27 | May be empty.
28 |
29 | Does not seem to have any influence on the response.
30 |
31 |
32 | HTTP response
33 | =============
34 | Status code
35 | ``200 OK``
36 |
37 | Example
38 | -------
39 |
40 | .. include:: api-v1-console_configuration.response.json
41 | :code:
42 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-discover.response-bundle.json:
--------------------------------------------------------------------------------
1 | {
2 | "rows": [
3 | ],
4 | "tiles": [
5 | {
6 | "bundle": {
7 | "apps": [
8 | "com.GoldenTricycle.Clark",
9 | "com.Tripleslash.MagneticByNature",
10 | "com.Thinice.TwinRobots",
11 | "com.scaryrobot.badbadbots"
12 | ],
13 | "currency": "EUR",
14 | "price": 6.99,
15 | "contentRating": "9+",
16 | "purchaseUrl": "ouya://launcher/purchase?developer=ec1a9ccd-373f-4047-bd07-36466ab7e25d&product=ROBOBUNDLE"
17 | },
18 | "url": "ouya://launcher/details?page=be239ca4-10fd-42dd-89cd-1806e80b1362",
19 | "image": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150202-3-6hikjv.jpeg",
20 | "uuid": "be239ca4-10fd-42dd-89cd-1806e80b1362",
21 | "title": "ROBO GAME BUNDLE!",
22 | "type": "details_page"
23 | }
24 | ]
25 | }
26 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-games-xxx-purchases.post.response.json:
--------------------------------------------------------------------------------
1 | {
2 | "blob": "YKNolqKuaDcQnqQH8yncS+0hVl/YnajMgnojfMaO2IzUpfVg4lBVrz5NF30N\nXUkgpBTnXdcPUalv7YvWsqT9b8Tdm5PYgoduqi2zLyXF+bSWY+bBigDX+MDG\nyvgxjfpYcWeyYaNLn2vhsj0rVNVorT5CggAXrry2eeUIFOX+9IUzbHmxfiqP\nlglVtrudwzQO1PS5n3KNJnHfp+r7vgBG5DzErUK4YHUYBe4/9li313tEIwnK\nX4kDZXSzKiZ2SPfyYTaVgIr82x9GDaIa1ZXIBuFlQSUo55A5Gy7Wy9rTDzMb\n80LdsNlbHeOiSIBN7Rj7CuOu7Uz5btuWLCpmCHZ2xgyhN6I9y2/KTNYa2JIA\n/9fsBGcrdkiu4f3aKdiZlI8bh07npp10KpQEMszz59xr5V6h0Xjjcgw95SaE\nDmxxz3LSRVtNpjGsTlqsb4Jnc/fKcMrJcmzoDLAodfgnSev8hrNUmgs6f/df\neXKQ0J6JuiWAgKXUZ9g5GEkUn0uIo3RzIyVqRIJL9zM6oeaZ487zG1X2e5Xy\noCc1x6GKQpGr9Qp+hRp6HSp8NUyR2ZziD+DSHbZeDaZdu3bbWrzIDEVJLpwU\noVROZR2nqyR9i3eQlpvSJGUPBM9pi8KdYTvOuBKB9hrz1XYe8852bFsbn0G/\np8nmKKPM0xDc0gHuScLfUZQ=\n",
3 | "iv": "wV8mnhuGz7YaxNSP1QWfVQ==\n",
4 | "key": "hxvgGjQWJJ8vSidCF5eP4JC1VqUjZxL+ZLq9p6BrbuhSMqvtFU/YZxinKTeD\nMkCnK3Ie0lP8OoKGFl21F+/5rOuybD+FKfVJdXwIsA1ryjkFi8KBMq2G+YWo\nxMM9T0zdkOKiidK1GYHqJyLlVLrEC+qaLSqSPEoL9R0ovZhy64c=\n"
5 | }
6 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-gamers-me.rst:
--------------------------------------------------------------------------------
1 | =============================================
2 | ``GET https://devs.ouya.tv/api/v1/gamers/me``
3 | =============================================
4 |
5 | Fetch username, e-mail and other data about the user currently logged in.
6 |
7 | HTTP request
8 | ============
9 | Protocol
10 | ``https``
11 | Method
12 | ``GET``
13 | Host
14 | ``devs.ouya.tv``
15 | Path
16 | ``/api/v1/gamers/me``
17 | Headers
18 | Standard headers
19 | GET parameters
20 | ``auth_token``
21 | Same data as in standard header ``X-OUYA-AuthToken``
22 |
23 |
24 | HTTP response
25 | =============
26 | Status code
27 | ``200 OK``
28 | Content type
29 | ``application/json; charset=utf-8``
30 |
31 | Example:
32 |
33 | .. include:: api-v1-gamers-me.response.json
34 | :code:
35 |
36 | Razer Forge TV want this additional properties:
37 |
38 | ``nickname``
39 | Same as ``username`` on the OUYA.
40 | When not set, the Forge asks to enter the nickname during login.
41 | ``avatar``
42 | URL of a custom avatar image
43 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-apps-xxx-download.rst:
--------------------------------------------------------------------------------
1 | =====================================================
2 | ``GET https://devs.ouya.tv/api/v1/apps/xxx/download``
3 | =====================================================
4 |
5 | Fetch the download link for a specific version of an app.
6 |
7 |
8 | Usage
9 | =====
10 | - When the user clicks "download"
11 |
12 |
13 |
14 | HTTP request
15 | ============
16 | Protocol
17 | ``https``
18 | Method
19 | ``GET``
20 | Host
21 | ``devs.ouya.tv``
22 | Path
23 | ``/api/v1/apps/xxx/download``
24 |
25 | ``xxx``
26 | ``latestVersion`` string from the apps details page
27 |
28 | Example: ``/api/v1/apps/0fba3bba-83e0-4e3e-9f29-409258429757/download``
29 | Headers
30 | Standard headers
31 | GET parameters
32 | ``auth_token``
33 | Same as ``X-OUYA-AuthToken``
34 |
35 |
36 | HTTP response
37 | =============
38 | Status code
39 | ``200 OK``
40 | Content-type
41 | ``application/json; charset=utf-8``
42 |
43 |
44 | Example
45 | -------
46 |
47 | .. include:: api-v1-apps-xxx-download.response.json
48 | :code:
49 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-gamers-me-user_messages.rst:
--------------------------------------------------------------------------------
1 | ===========================================================
2 | ``GET https://devs.ouya.tv/api/v1/gamers/me/user_messages``
3 | ===========================================================
4 |
5 | Send messages to users.
6 |
7 | The API returns a list of URLs that get displayed to the user in a popup
8 | in the main menu.
9 |
10 |
11 | HTTP request
12 | ============
13 | Protocol
14 | ``https``
15 | Method
16 | ``GET``
17 | Host
18 | ``devs.ouya.tv``
19 | Path
20 | ``/api/v1/gamers/me/user_messages``
21 | Headers
22 | Standard headers
23 | GET parameters
24 | ``auth_token``
25 | Same as ``X-OUYA-AuthToken``
26 |
27 |
28 | HTTP response
29 | =============
30 | Status code
31 | ``200 OK``
32 | Content-type
33 | ``application/json; charset=utf-8``
34 |
35 | Example (empty)::
36 |
37 | {
38 | "messages": [
39 | null
40 | ]
41 | }
42 |
43 | Example (one URL)::
44 |
45 | {
46 | "messages": [
47 | "https://www.ouya.tv/message_to_all_users.txt"
48 | ]
49 | }
50 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-developers-xxx-current_gamer.rst:
--------------------------------------------------------------------------------
1 | ================================================================
2 | ``GET https://devs.ouya.tv/api/v1/developers/xxx/current_gamer``
3 | ================================================================
4 |
5 | Fetch gamer information from within a game.
6 |
7 | Usage
8 | =====
9 | - At the startup of Knightmare Tower and Towerfall (when bought)
10 |
11 |
12 | HTTP request
13 | ============
14 | Protocol
15 | ``https``
16 | Method
17 | ``GET``
18 | Host
19 | ``devs.ouya.tv``
20 | Path
21 | ``/api/v1/developers/xxx/current_gamer``
22 |
23 | ``xxx``
24 | Developer UUID
25 | Headers
26 | Standard headers
27 | GET parameters
28 | ``auth_token``
29 | Same data as in standard header ``X-OUYA-AuthToken``
30 |
31 |
32 | HTTP response
33 | =============
34 | Status code
35 | ``200 OK``
36 | Content-type
37 | ``application/json; charset=utf-8``
38 |
39 | Same data as in ``gamers/me``.
40 |
41 | Example
42 | -------
43 |
44 | .. include:: api-v1-developers-xxx-current_gamer.response.json
45 | :code:
46 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-recommendations.rst:
--------------------------------------------------------------------------------
1 | ===================================================
2 | ``GET https://devs.ouya.tv/api/v1/recommendations``
3 | ===================================================
4 |
5 | Get a list of games for the "you may also like" section.
6 |
7 | Games already installed on the OUYA will be shown, too - with a checkmark.
8 |
9 |
10 | Usage
11 | =====
12 | - When the user tries to exit a game (double-pressing ``U``)
13 |
14 |
15 | HTTP request
16 | ============
17 | Protocol
18 | ``https``
19 | Method
20 | ``GET``
21 | Host
22 | ``devs.ouya.tv``
23 | Path
24 | ``/api/v1/recommendations``
25 | Headers
26 | Standard headers
27 | GET parameters
28 | ``auth_token``
29 | Same as ``X-OUYA-AuthToken``
30 | ``uuid``
31 | Package name of the game that is being exited
32 |
33 | Example: ``net.sourceforge.clonekeenplus``
34 |
35 | HTTP response
36 | =============
37 | Status code
38 | ``200 OK``
39 | Content-type
40 | ``application/json; charset=utf-8``
41 |
42 |
43 | Example
44 | -------
45 |
46 | .. include:: api-v1-recommendations.response.json
47 | :code:
48 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-gamers-me-agreements.rst:
--------------------------------------------------------------------------------
1 | ========================================================
2 | ``GET https://devs.ouya.tv/api/v1/gamers/me/agreements``
3 | ========================================================
4 |
5 | Check which legal agreements have been confirmed by the user,
6 | and if there are updates that have to be confirmed.
7 |
8 |
9 | HTTP request
10 | ============
11 | Protocol
12 | ``https``
13 | Method
14 | ``GET``
15 | Host
16 | ``devs.ouya.tv``
17 | Path
18 | ``/api/v1/gamers/me/agreements``
19 | Headers
20 | Standard headers
21 | GET parameters
22 | ``auth_token``
23 | Same data as in standard header ``X-OUYA-AuthToken``
24 |
25 |
26 | HTTP response
27 | =============
28 | Status code
29 | ``200 OK``
30 | Content type
31 | ``application/json; charset=utf-8``
32 |
33 | Example:
34 |
35 | .. include:: api-v1-gamers-me-agreements.response.json
36 | :code:
37 |
38 | Each agreement has an associated HTML file with the same name
39 | at ``https://devs.ouya.tv/agreements/``, e.g.
40 | ``https://devs.ouya.tv/agreements/marketplace.html`` for the
41 | ``marketplace`` agreement.
42 |
43 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-discover-home.rst:
--------------------------------------------------------------------------------
1 | =================================================
2 | ``GET https://devs.ouya.tv/api/v1/discover/home``
3 | =================================================
4 |
5 | Probably the list of games to be featured on the main menu.
6 |
7 | More than the 4 displayed because it could be that a player already
8 | bought some of them - they would not be shown then.
9 |
10 |
11 | HTTP request
12 | ============
13 | Protocol
14 | ``https``
15 | Method
16 | ``GET``
17 | Host
18 | ``devs.ouya.tv``
19 | Path
20 | ``/api/v1/discover/home``
21 | Headers
22 | Standard headers
23 | GET parameters
24 | ``auth_token``
25 | Same as ``X-OUYA-AuthToken``
26 |
27 |
28 | HTTP response
29 | =============
30 | Status code
31 | ``200 OK``
32 | Content-type
33 | ``application/json; charset=utf-8``
34 |
35 | Response body definition
36 | ------------------------
37 | Same as `GET https://devs.ouya.tv/api/v1/discover`_ with some limitations:
38 |
39 | - Only one entry in the ``rows`` array
40 |
41 | Title of this row is ``FEATURED``, price is shown, not ranked.
42 | - ``title`` attribute value is ``home``.
43 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-queued_downloads-xxx.delete.rst:
--------------------------------------------------------------------------------
1 | ===========================================================
2 | ``DELETE https://devs.ouya.tv/api/v1/queued_downloads/xxx``
3 | ===========================================================
4 |
5 | Remove an app from the list of queued downloads.
6 |
7 |
8 | Usage
9 | =====
10 | After the app has been installed automatically on the OUYA.
11 |
12 |
13 | HTTP request
14 | ============
15 | Protocol
16 | ``https``
17 | Method
18 | ``DELETE``
19 | Host
20 | ``devs.ouya.tv``
21 | Path
22 | ``/api/v1/queued_downloads/xxx``
23 |
24 | ``xxx``
25 | Package name. The ``uuid`` value from the queued downloads list.
26 |
27 | Example: ``/api/v1/queued_downloads/net.froemling.bombsquad``
28 |
29 | Headers
30 | Standard headers
31 |
32 | ``uuid``
33 | The ``uuid`` value from the queued downloads list, which is actually
34 | a package name and not an UUID.
35 |
36 | Same as the ``xxx`` in the path.
37 | GET parameters
38 | ``auth_token``
39 | Same as ``X-OUYA-AuthToken``
40 |
41 | HTTP response
42 | =============
43 | Status code
44 | ``204 No Content``
45 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-gamers-me-consoles.rst:
--------------------------------------------------------------------------------
1 | =======================================================
2 | ``POST https://devs.ouya.tv/api/v1/gamers/me/consoles``
3 | =======================================================
4 |
5 | Associate a console ID with the account.
6 |
7 |
8 | Usage
9 | =====
10 |
11 | #. After logging in with an existing account
12 | #. (Probably after registering a new account)
13 |
14 |
15 | HTTP request
16 | ============
17 | Protocol
18 | ``https``
19 | Method
20 | ``POST``
21 | Host
22 | ``devs.ouya.tv``
23 | Path
24 | ``/api/v1/gamers/me/consoles``
25 | Headers
26 | Standard headers
27 |
28 | ``Content-Type``
29 | ``application/x-www-form-urlencoded``
30 | GET parameters
31 | ``auth_token``
32 | Same data as in standard header ``X-OUYA-AuthToken``
33 | POST parameters
34 | ``console_id``:
35 | ``015d4b33bc64141b``
36 |
37 | Same data as in standard header ``X-OUYA-Console-Id``
38 | ``auth_token``:
39 | Same data as in standard header ``X-OUYA-AuthToken``
40 |
41 |
42 | HTTP response
43 | =============
44 | Status code
45 | ``200 OK``
46 | Content type
47 | ``application/json; charset=utf-8``
48 | Body
49 | ``{}``
50 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-firmware_builds.rst:
--------------------------------------------------------------------------------
1 | ================================================
2 | ``GET https://devs.ouya.tv/api/firmware_builds``
3 | ================================================
4 |
5 | List the latest available firmware version.
6 |
7 |
8 | Usage
9 | =====
10 |
11 | #. During the OUYA setup (Parameter ``oobe=true`` is set)
12 | #. During bootup
13 | #. Every 3 minutes unless an "Expires" header is set
14 |
15 |
16 | HTTP request
17 | ============
18 | Protocol
19 | ``https``
20 | Method
21 | ``GET``
22 | Host
23 | ``devs.ouya.tv``
24 | Path
25 | ``/api/firmware_builds``
26 | Headers
27 | Standard headers
28 |
29 | Token parameters not required.
30 | GET parameters
31 | ``auth_token``
32 | May be empty.
33 |
34 | Does not seem to have any influence on the response.
35 |
36 | ``oobe``
37 | ``true``
38 |
39 | Optional.
40 |
41 | Is set once during the OUYA setup (Out Of Box Experience).
42 |
43 |
44 | HTTP response
45 | =============
46 | Status code
47 | ``200 OK``
48 | Content type
49 | ``application/json; charset=utf-8``
50 |
51 | Example
52 | -------
53 |
54 | .. include:: api-firmware_builds.response-short.json
55 | :code:
56 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-recommendations.response.json:
--------------------------------------------------------------------------------
1 | {
2 | "games": [
3 | {
4 | "rating": {
5 | "count": 716,
6 | "average": 4.25
7 | },
8 | "image": "https://www.filepicker.io/api/file/VzCsgc3BTx2RiGpTr4Uw",
9 | "content_rating": "Everyone",
10 | "version": "7230ac05-d24c-4347-a990-7ac283c17063",
11 | "uuid": "com.GoldenTricycle.Clark",
12 | "title": "CLARC"
13 | },
14 | {
15 | "rating": {
16 | "count": 1108,
17 | "average": 3.49
18 | },
19 | "image": "https://www.filepicker.io/api/file/ej3IxeX8SwKZW5uFOw9g",
20 | "content_rating": "Everyone",
21 | "version": "544236ed-6dde-4b9e-8c4f-ac6e8b91bcd3",
22 | "uuid": "com.sega.sonic4epi",
23 | "title": "Sonic The Hedgehog 4 Episode I"
24 | },
25 | {
26 | "rating": {
27 | "count": 522,
28 | "average": 4.38
29 | },
30 | "image": "https://www.filepicker.io/api/file/s8HCRKaSB8wF2hSKbBzQ",
31 | "content_rating": "Everyone",
32 | "version": "29457560-1669-45ce-bb19-88c1651c7552",
33 | "uuid": "com.x10studio.SoManyMe",
34 | "title": "So Many Me"
35 | }
36 | ]
37 | }
38 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-ratings.post.rst:
--------------------------------------------------------------------------------
1 | ============================================
2 | ``POST https://devs.ouya.tv/api/v1/ratings``
3 | ============================================
4 |
5 | Store the rating of a single game
6 |
7 | Usage
8 | =====
9 | Directly after a user rated a game on the exit screen.
10 |
11 |
12 | HTTP request
13 | ============
14 | Protocol
15 | ``https``
16 | Method
17 | ``POST``
18 | Host
19 | ``devs.ouya.tv``
20 | Path
21 | ``/api/v1/ratings``
22 | Headers
23 | Standard headers
24 | GET parameters
25 | ``auth_token``
26 | Same as ``X-OUYA-AuthToken``
27 | POST parameters
28 | ``auth_token``
29 | Same as ``X-OUYA-AuthToken``
30 | ``game``
31 | Package name of the game
32 |
33 | E.g. ``com.littleguy77.filepwn``
34 | ``score``
35 | integer
36 |
37 | 1 to 5:
38 |
39 | 1
40 | Hate it
41 | 2
42 | Don't like it
43 | 3
44 | Like it
45 | 4
46 | Really like it
47 | 5
48 | Love it
49 |
50 | HTTP response
51 | =============
52 | Status code
53 | ``200 OK``
54 | Content-type
55 | ``application/json; charset=utf-8``
56 |
57 | Example::
58 |
59 | {
60 | "success": true
61 | }
62 |
63 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-gamers-me-agreements.put.rst:
--------------------------------------------------------------------------------
1 | ========================================================
2 | ``PUT https://devs.ouya.tv/api/v1/gamers/me/agreements``
3 | ========================================================
4 |
5 | Store that a legal agreement has been confirmed by the user.
6 |
7 |
8 | Usage
9 | =====
10 |
11 | #. After setting up a factory-reset OUYA.
12 | #. After logging in with an existing account.
13 | #. After booting up the OUYA.
14 |
15 |
16 | HTTP request
17 | ============
18 | Protocol
19 | ``https``
20 | Method
21 | ``PUT``
22 | Host
23 | ``devs.ouya.tv``
24 | Path
25 | ``/api/v1/gamers/me/agreements``
26 | Headers
27 | Standard headers
28 |
29 | ``Content-Type``
30 | ``application/x-www-form-urlencoded``
31 | GET parameters
32 | ``auth_token``
33 | Same data as in standard header ``X-OUYA-AuthToken``
34 | POST parameters
35 | ``marketplace``:
36 | ``2``
37 |
38 | Version of the marketplace agreement
39 | ``auth_token``:
40 | Same data as in standard header ``X-OUYA-AuthToken``
41 |
42 |
43 | HTTP response
44 | =============
45 | Status code
46 | ``200 OK``
47 | Content type
48 | ``application/json; charset=utf-8``
49 | Body
50 | ``{}``
51 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-apps-xxx.rst:
--------------------------------------------------------------------------------
1 | ============================================
2 | ``GET https://devs.ouya.tv/api/v1/apps/xxx``
3 | ============================================
4 |
5 | Fetch the details for an app/game.
6 |
7 |
8 | Usage
9 | =====
10 | - When the user enters the detail page in the discover store.
11 | - Sometimes the OUYA refreshes details of all installed apps while running.
12 |
13 | Related to ``api/v1/details``, which is used for already installed apps.
14 |
15 |
16 | HTTP request
17 | ============
18 | Protocol
19 | ``https``
20 | Method
21 | ``GET``
22 | Host
23 | ``devs.ouya.tv``
24 | Path
25 | ``/api/v1/apps/xxx``
26 |
27 | ``xxx``
28 | Package name of an app
29 |
30 | Also UUID of a package release.
31 |
32 | Example: ``/api/v1/apps/com.toa.tetrisFusionOuya``
33 | Headers
34 | Standard headers
35 |
36 | ``console_id``
37 | Same as ``X-OUYA-Console-Id``
38 | GET parameters
39 | ``auth_token``
40 | Same as ``X-OUYA-AuthToken``
41 |
42 |
43 | HTTP response
44 | =============
45 | Status code
46 | ``200 OK``
47 | Content-type
48 | ``application/json; charset=utf-8``
49 |
50 |
51 | Example
52 | -------
53 |
54 | .. include:: api-v1-apps-xxx.response.json
55 | :code:
56 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-credit_card.put.rst:
--------------------------------------------------------------------------------
1 | ===============================================
2 | ``PUT https://devs.ouya.tv/api/v1/credit_card``
3 | ===============================================
4 |
5 | Store the result of the credit card storage request.
6 |
7 | Usage
8 | =====
9 | Called after `POST https://ott9.wpstn.com/live/`_.
10 |
11 | HTTP request
12 | ============
13 | Protocol
14 | ``https``
15 | Method
16 | ``PUT``
17 | Host
18 | ``devs.ouya.tv``
19 | Path
20 | ``/api/v1/credit_card``
21 | Headers
22 | Standard headers
23 |
24 | ``Content-Type``
25 | ``application/x-www-form-urlencoded``
26 | GET parameters
27 | ``auth_token``
28 | Same data as in standard header ``X-OUYA-AuthToken``
29 | ``body``:
30 | Complete response including headers
31 | ``zipcode``:
32 | Postal code
33 | POST parameters
34 | ``auth_token``
35 | Same data as in standard header ``X-OUYA-AuthToken``
36 |
37 | Example body parameter:
38 |
39 | .. include:: api-v1-credit_card.put.get-body.txt
40 | :code:
41 |
42 |
43 | HTTP response
44 | =============
45 | Status code
46 | ``200 OK``
47 | Content type
48 | ``application/json; charset=utf-8``
49 |
50 | Example:
51 |
52 | .. include:: api-v1-credit_card.put.response.json
53 | :code:
54 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-wallet.rst:
--------------------------------------------------------------------------------
1 | ==========================================
2 | ``GET https://devs.ouya.tv/api/v1/wallet``
3 | ==========================================
4 |
5 | Get the account balance and currency.
6 |
7 | Usage
8 | =====
9 | After user registration, before the credit card input form is shown.
10 |
11 |
12 | HTTP request
13 | ============
14 | Protocol
15 | ``https``
16 | Method
17 | ``GET``
18 | Host
19 | ``devs.ouya.tv``
20 | Path
21 | ``/api/v1/wallet``
22 | Headers
23 | Standard headers
24 | GET parameters
25 | ``auth_token``
26 | Same data as in standard header ``X-OUYA-AuthToken``
27 |
28 |
29 | HTTP response
30 | =============
31 | Status code
32 | ``200 OK``
33 | Content type
34 | ``application/json; charset=utf-8``
35 |
36 |
37 | Example without credit card data
38 | --------------------------------
39 | .. include:: api-v1-wallet.response.json
40 | :code:
41 |
42 | FIXME: Find out if we get that response when giving a dummy number
43 | during registration (4111 1111 1111 1111).
44 |
45 |
46 | Example with credit card data
47 | -----------------------------
48 | .. include:: api-v1-wallet.response-2.json
49 | :code:
50 |
51 | FIXME: Find out if we can disable credit card input by setting
52 | ``requiresPaymentMethod`` to ``false``.
53 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-credit_card.post.rst:
--------------------------------------------------------------------------------
1 | ================================================
2 | ``POST https://devs.ouya.tv/api/v1/credit_card``
3 | ================================================
4 |
5 | Prepare the credit card registration process and fetch a one-time token
6 | for the wpstn.com (world pay) credit card processor.
7 |
8 |
9 | HTTP request
10 | ============
11 | Protocol
12 | ``https``
13 | Method
14 | ``POST``
15 | Host
16 | ``devs.ouya.tv``
17 | Path
18 | ``/api/v1/credit_card``
19 | Headers
20 | Standard headers
21 |
22 | ``Content-Type``
23 | ``application/x-www-form-urlencoded``
24 | GET parameters
25 | ``auth_token``
26 | Same data as in standard header ``X-OUYA-AuthToken``
27 |
28 | ``zipcode``
29 | Postal code entered on the credit card form.
30 | POST parameters
31 | ``auth_token``:
32 | Same data as in standard header ``X-OUYA-AuthToken``
33 |
34 |
35 | HTTP response
36 | =============
37 | Status code
38 | ``200 OK``
39 | Content type
40 | ``application/json; charset=utf-8``
41 |
42 | Example:
43 |
44 | .. include:: api-v1-credit_card.post.response.json
45 | :code:
46 |
47 | The ``one_time_token`` is used in the following ``POST`` request to
48 | the URL determined in ``redirect_url``.
49 |
50 | See `POST https://ott9.wpstn.com/live/`_.
51 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-events.rst:
--------------------------------------------------------------------------------
1 | ===========================================
2 | ``POST https://devs.ouya.tv/api/v1/events``
3 | ===========================================
4 |
5 | Send information about the last events on the OUYA console to the
6 | logging/tracking server.
7 |
8 |
9 | Usage
10 | =====
11 |
12 | #. Every now and then when enough events have been collected
13 |
14 | FIXME: determine exact behavior
15 |
16 |
17 | HTTP request
18 | ============
19 | Protocol
20 | ``https``
21 | Method
22 | ``POST``
23 | Host
24 | ``devs.ouya.tv``
25 | Path
26 | ``/api/v1/events``
27 | Headers
28 | Standard headers
29 |
30 | ``Content-Type``
31 | ``application/x-www-form-urlencoded``
32 | POST parameters
33 | ``current_time``
34 | ``1434577856574``
35 |
36 | Unix timestamp, milliseconds.
37 | ``console_id``
38 | Same data as in standard header ``X-OUYA-Console-Id``
39 | ``events``
40 | JSON-encoded array of event objects
41 | ``auth_token``
42 | Same data as in standard header ``X-OUYA-AuthToken``
43 |
44 | Example event JSON data:
45 |
46 | .. include:: api-v1-events.request.json
47 | :code:
48 | :end-line: 30
49 |
50 |
51 | HTTP response
52 | =============
53 | Status code
54 | ``200 OK``
55 | Content type
56 | ``application/json; charset=utf-8``
57 | Body
58 | ``{}``
59 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-search.rst:
--------------------------------------------------------------------------------
1 | ====================================================
2 | ``GET https://devs.ouya.tv/api/v1/search``
3 | ====================================================
4 |
5 | Search for games in the discover store.
6 |
7 |
8 | HTTP request
9 | ============
10 | Protocol
11 | ``https``
12 | Method
13 | ``GET``
14 | Host
15 | ``devs.ouya.tv``
16 | Path
17 | ``/api/v1/search``
18 | Headers
19 | Standard headers
20 | GET parameters
21 | ``auth_token``
22 | Same as ``X-OUYA-AuthToken``
23 | ``q``
24 | Search word(s)
25 |
26 |
27 | HTTP response
28 | =============
29 | Status code
30 | ``200 OK``
31 | Content-type
32 | ``application/json; charset=utf-8``
33 |
34 | The ``count`` property contains the number of games that matched the search
35 | string, even if they are not all returned in the result list.
36 | The search result list is limited to 20 or 40 games.
37 |
38 | When the ``count`` is higher than the number of items in ``results``,
39 | the OUYA will send a new search request to the API when another letter is added
40 | to the search word.
41 |
42 | If the ``count`` and ``results`` are the same, the OUYA will use the current
43 | response and filter it for itself without asking the server again.
44 |
45 | Example
46 | -------
47 | .. include:: api-v1-search.response.json
48 | :code:
49 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-partner_builds.response.json:
--------------------------------------------------------------------------------
1 | {
2 | "actions": [
3 | {
4 | "action": "installFile",
5 | "packageName": "tv.ouya.oobe",
6 | "friendlyName": "OUYA OOBE",
7 | "md5": "41d50891225591fdd32045ed0821a3bf",
8 | "filesize": 7725861,
9 | "downloadUrl": "http://ouya.cweiske.de/apks/ouya-everywhere/tv.ouya.oobe-1.2.897.apk",
10 | "versionCode": 10200897
11 | },
12 |
13 | {
14 | "action": "installFile",
15 | "packageName": "tv.ouya",
16 | "friendlyName": "OUYA Framework",
17 | "md5": "95d987e7b100c2c72bdac37a8eda2647",
18 | "filesize": 3123639,
19 | "downloadUrl": "http://ouya.cweiske.de/apks/ouya-everywhere/tv.ouya-1.2.897.apk",
20 | "versionCode": 10200897
21 | },
22 |
23 | {
24 | "action": "installFile",
25 | "packageName": "tv.ouya.console",
26 | "friendlyName": "OUYA launcher",
27 | "md5": "97da25989c64a90c60070978077fff55",
28 | "filesize": 18953944,
29 | "downloadUrl": "http://ouya.cweiske.de/apks/ouya-everywhere/tv.ouya.console-1.2.897.apk",
30 | "versionCode": 10200897
31 | },
32 |
33 | {
34 | "action": "launch",
35 | "packageName": "tv.ouya.console"
36 | }
37 | ]
38 | }
39 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-partner_builds-release_notes.rst:
--------------------------------------------------------------------------------
1 | ================================================================
2 | ``GET https://devs.ouya.tv/api/v1/partner_builds/release_notes``
3 | ================================================================
4 |
5 | Return the changelog for the latest OUYA everywhere installer.
6 |
7 | Used by the Razer Forge TV only (Manage > Razer Cortex > "Update Notes").
8 |
9 |
10 | HTTP request
11 | ============
12 | Protocol
13 | ``https``
14 | Method
15 | ``GET``
16 | Host
17 | ``devs.ouya.tv``
18 | Path
19 | ``/api/v1/partner_builds/release_notes``
20 | Headers
21 | ``User-Agent``
22 | - ``Dalvik/2.1.0 (Linux; U; Android 6.0.1; Forge Build/M-MMB29M-rzs-us-sf-bld2-19HP-08.02.AM)``
23 | ``Accept-Language``
24 | ``de``
25 | ``X-OUYA-Device``
26 | ``pearlyn``
27 | ``X-OUYA-Firmware-Version``:
28 | (empty)
29 | ``X-OUYA-Console-Id``
30 | Build serial number
31 |
32 | ``171256710321511``
33 | ``X-OUYA-Console-Wifi-MAC-Address``
34 | ``C4:8E:8F:82:29:B1``
35 | ``X-OUYA-VersionCode``
36 | ``10202320``
37 | ``X-OUYA-AuthToken``
38 | ``00702342-0000-1111-2222-c3e1500cafe1``
39 |
40 |
41 | HTTP response
42 | =============
43 | Status code
44 | ``200 OK``
45 | Content-type
46 | ``application/json; charset=utf-8``
47 |
48 |
49 | Example
50 | -------
51 |
52 | .. include:: api-v1-partner_builds-release_notes.response.json
53 | :code:
54 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-developers-xxx-products.rst:
--------------------------------------------------------------------------------
1 | ============================================================
2 | ``GET https://devs.ouya.tv/api/v1/developers/xxx/products/``
3 | ============================================================
4 |
5 | Use in-game when purchasing a feature, sometimes already at game startup.
6 |
7 | Some games rely on this to check if the game is purchasable at all.
8 | If the product list does not contain the product identifier they
9 | expect, buying is not possible. (Example: ``com.sega.sonic4epi``)
10 |
11 | Usage
12 | =====
13 | - When the user starts a game and pressed "Sync" in the store
14 | (at "Babylonian Twins")
15 |
16 |
17 | HTTP request
18 | ============
19 | Protocol
20 | ``https``
21 | Method
22 | ``GET``
23 | Host
24 | ``devs.ouya.tv``
25 | Path
26 | ``/api/v1/developers/xxx/products/``
27 |
28 | ``xxx``
29 | Developer UUID
30 |
31 | Example: ``/api/v1/developers/c4e46efe-05fd-4be9-9d7e-1f7607eabd49/products/``
32 | Headers
33 | Standard headers
34 | GET parameters
35 | ``auth_token``
36 | Same as ``X-OUYA-AuthToken``
37 | ``only``
38 | Product key (same as ``Identifier`` in ``promotedProduct`` of app details)
39 |
40 | Example: ``&only=unlock_pro``
41 |
42 |
43 | HTTP response
44 | =============
45 | Status code
46 | ``200 OK``
47 | Content-type
48 | ``application/json; charset=utf-8``
49 |
50 | Example
51 | -------
52 |
53 | .. include:: api-v1-developers-xxx-products.response.json
54 | :code:
55 |
--------------------------------------------------------------------------------
/api/ott9.wpstn.com/live.rst:
--------------------------------------------------------------------------------
1 | =====================================
2 | ``POST https://ott9.wpstn.com/live/``
3 | =====================================
4 |
5 | Store credit card data.
6 |
7 |
8 | Usage
9 | =====
10 | Called after fetching a one time token from
11 | `POST https://devs.ouya.tv/api/v1/credit_card`_.
12 |
13 |
14 | HTTP request
15 | ============
16 | Protocol
17 | ``https``
18 | Method
19 | ``POST``
20 | Host
21 | ``ott9.wpstn.com``
22 | Path
23 | ``/live/``
24 | Headers
25 | ``Content-Type``
26 | ``application/x-www-form-urlencoded``
27 | ``User-Agent``
28 | ``OUYA 0 1.00 1.2.1427_r1``
29 | POST parameters
30 | ``Action``:
31 | ``Add``
32 | ``OTT``:
33 | Random one-time token from credit card POST request.
34 | ``AcctName``:
35 | Credit card account holder name
36 | ``AcctNumber``:
37 | ``4111111111111111``
38 |
39 | Credit card number
40 | ``ExpDate``:
41 | ``012017``
42 |
43 | Month & year
44 | ``CVN``:
45 | ``777``
46 |
47 | Secret code
48 | ``Email``:
49 | E-mail address
50 | ``ZipCode``:
51 | Postal code
52 |
53 |
54 | HTTP response
55 | =============
56 | Status code
57 | ``303 See Other``
58 |
59 | Redirects to ``wpsuccess`` URL on devs.ouya.tv with the ``OTT`` parameter::
60 |
61 | https://devs.ouya.tv/wpsuccess?OTT=C187D8AE8970...
62 |
63 | The redirect location header seems to be ignored; it does not get called.
64 | Instead, `PUT https://devs.ouya.tv/api/v1/credit_card`_ is fetched.
65 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-queued_downloads.rst:
--------------------------------------------------------------------------------
1 | ====================================================
2 | ``GET https://devs.ouya.tv/api/v1/queued_downloads``
3 | ====================================================
4 |
5 | Fetch a list of apps/games that shall get installed automatically
6 | on the OUYA.
7 |
8 | The OUYA checks the download queue exactly every 5 minutes.
9 |
10 | More information: http://cweiske.de/tagebuch/push-to-ouya.htm
11 |
12 |
13 | HTTP request
14 | ============
15 | Protocol
16 | ``https``
17 | Method
18 | ``GET``
19 | Host
20 | ``devs.ouya.tv``
21 | Path
22 | ``/api/v1/queued_downloads``
23 | Headers
24 | Standard headers
25 | GET parameters
26 | ``auth_token``
27 | Same as ``X-OUYA-AuthToken``
28 |
29 |
30 | HTTP response
31 | =============
32 | Status code
33 | ``200 OK``
34 | Content-type
35 | ``application/json; charset=utf-8``
36 |
37 | Known ``source`` options:
38 |
39 | ``gamer``
40 | The user clicked onto "push to my ouya" on the OUYA website
41 | ``game-of-the-month``
42 | The game gets automatically installed because the OUYA people awarded it the
43 | "game of the month" trophy.
44 | ``new-user``
45 | You are a freshly registered user and should have this game on your OUYA.
46 |
47 |
48 | Example
49 | -------
50 | Automatically pushed onto a fresh account:
51 |
52 | .. include:: api-v1-queued_downloads.response.json
53 | :code:
54 |
55 | Manually pushed via the web site:
56 |
57 | .. include:: api-v1-queued_downloads.response-2.json
58 | :code:
59 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-themes.rst:
--------------------------------------------------------------------------------
1 | ==========================================
2 | ``GET https://devs.ouya.tv/api/v1/themes``
3 | ==========================================
4 |
5 | Load the main menu background image/video.
6 |
7 |
8 | Usage
9 | =====
10 | #. During startup before loading the main menu
11 | #. Every three hours
12 |
13 |
14 | HTTP request
15 | ============
16 | Protocol
17 | ``https``
18 | Method
19 | ``GET``
20 | Host
21 | ``devs.ouya.tv``
22 | Path
23 | ``/api/v1/themes``
24 | Headers
25 | Standard headers.
26 | GET parameters
27 | ``auth_token``
28 | May be empty.
29 |
30 | Does not seem to have any influence on the response.
31 |
32 |
33 | HTTP response
34 | =============
35 |
36 | Status code
37 | ``200 OK``
38 | Content type
39 | ``application/json; charset=utf-8``
40 |
41 |
42 | Response body definition
43 | ------------------------
44 |
45 | ``background_style``
46 | Supported until at least ODK 1.0.12.
47 | Latest firmware 1.2.1427 does not support it anymore.
48 |
49 | ``static`` meant that the image would be scaled.
50 | Any value other than ``static`` would make the image pan around.
51 | ``background``
52 | Full URL to a backgroud image
53 | ``video``
54 | Supported until at least ODK 1.0.12.
55 | Latest firmware 1.2.1427 does not support it anymore.
56 |
57 | Video URL had preference over background image URL.
58 |
59 | Example
60 | -------
61 |
62 | .. include:: api-v1-themes.response.json
63 | :code:
64 |
65 | FIXME: get response with video/image set.
66 |
--------------------------------------------------------------------------------
/headers.rst:
--------------------------------------------------------------------------------
1 | =====================
2 | Standard HTTP headers
3 | =====================
4 |
5 | The following HTTP headers are sent with nearly every HTTP request
6 | from the OUYA console to the servers.
7 |
8 | ``Accept-Encoding``
9 | ``gzip``
10 |
11 | The OUYA understands gzip compression
12 | ``Accept-Language``
13 | ``en-US,en``
14 | ``User-Agent``
15 | OUYA: ``OUYA 0 1.00 1.2.1427_r1``
16 |
17 | Razer Forge TV: ``Dalvik/2.1.0 (Linux; U; Android 6.0.1; Forge Build/M-MMB29M-rzs-us-sf-bld2-19HP-08.02.AM)``
18 | ``X-OUYA-AuthToken``
19 | ``96bfeaae-212d-447b-b4bf-caa5e86c0502``
20 |
21 | Authentication token one got from logging in.
22 |
23 | Only sent when logged in.
24 | ``X-OUYA-Console-Id``
25 | ``015d4b33bc64141b``
26 |
27 | Serial number you see when running ``$ adb devices``
28 | ``X-OUYA-Console-Wifi-MAC-Address``
29 | ``B8:5A:F7:82:3C:C8``
30 | ``X-OUYA-Device``
31 | ``ouya_1_1``
32 |
33 | Probably hardware revision
34 | ``X-OUYA-Firmware-Version``
35 | ``1.2.1427_r1``
36 | ``X-OUYA-VersionCode``
37 | ``16``
38 | ``X-Token``
39 | ``96bfeaae-212d-447b-b4bf-caa5e86c0502``
40 |
41 | Only sent when logged in.
42 |
43 | Same as ``X-OUYA-AuthToken``.
44 |
45 | FIXME: Why two token headers?
46 |
47 | FIXME: Why ``auth_token`` GET parameter when there are headers?
48 |
49 |
50 | Headers to ignore
51 | =================
52 | ``Cookie``
53 | ``__cfduid=da019d762142461c19f162c0ee443f9c71434577887``
54 |
55 | Comes from the cloudflare error page. Can be ignored.
56 | ``Cookie2``
57 | ``$Version=1``
58 |
59 | ??? FIXME
60 |
61 | Not on the cloudflare error page.
62 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-games-xxx-community_content.post.rst:
--------------------------------------------------------------------------------
1 | ================================================================
2 | ``POST https://devs.ouya.tv/api/v1/games/xxx/community_content``
3 | ================================================================
4 |
5 | Upload community content (e.g. levels) to the server.
6 |
7 |
8 | HTTP request
9 | ============
10 | Protocol
11 | ``https``
12 | Method
13 | ``POST``
14 | Host
15 | ``devs.ouya.tv``
16 | Path
17 | ``/api/v1/games/xxx/community_content``
18 |
19 | ``xxx``
20 | app package name
21 |
22 | Example: ``/api/v1/games/tv.ouya.sample.cc/community_content``
23 | Headers
24 | Standard headers
25 |
26 | ``Content-Type``
27 | ``application/x-www-form-urlencoded``
28 | GET parameters
29 | ``auth_token``
30 | Same as ``X-OUYA-AuthToken``
31 | POST parameters
32 | ``request[uuid]``
33 | Example: ``0f02f93e-8eb7-44a7-a2c9-d86be692ea85``
34 | ``request[signature]``
35 | Example: ``R6Jt1GM3IASameqEdMmlVgw6D/9CinsHQlm2FnRtLlbCy2X68JEjB+uAQSOCjEuXKbOpKzQreK481fEYn1quNQwUDu98rGMRfTPsw8tEvuHvY0CyqRKpCBH6DKmsyNU8RUZ4x+Hz64yVQMcNchK0/gEmFPS8WfLdLJeJtIk19gY=``
36 | ``community_content[title]``
37 | Content title, e.g. level name
38 | ``community_content[category]``
39 | Game-specific category
40 |
41 | Example: ``emblem``
42 | ``community_content[description]``
43 | Level description
44 | ``community_content[content]``
45 | .zip file contents
46 |
47 | File name: ``content.zip``
48 |
49 |
50 | HTTP response
51 | =============
52 |
53 | FIXME
54 |
55 | JSON object with properties:
56 |
57 | ``uuid``
58 | String
59 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-gamers-key.put.rst:
--------------------------------------------------------------------------------
1 | ==============================================
2 | ``PUT https://devs.ouya.tv/api/v1/gamers/key``
3 | ==============================================
4 |
5 | Store the user's public key on the server.
6 |
7 | Receipts/purchases are encryptd by the server with the user's public key,
8 | so that only that user can decrypt it.
9 |
10 |
11 | Usage
12 | =====
13 |
14 | #. Once per bootup just before purchases are checked the first time.
15 | That can be when opening "Play" that contains purchasable games,
16 | or "Discover" showing purchasable games.
17 |
18 |
19 | HTTP request
20 | ============
21 | Protocol
22 | ``https``
23 | Method
24 | ``PUT``
25 | Host
26 | ``devs.ouya.tv``
27 | Path
28 | ``/api/v1/gamers/key``
29 | Headers
30 | Standard headers
31 |
32 | ``Content-Type``
33 | ``application/x-www-form-urlencoded``
34 | GET parameters
35 | ``auth_token``
36 | Same data as in standard header ``X-OUYA-AuthToken``
37 | POST parameters
38 | ``auth_token``
39 | Same data as in standard header ``X-OUYA-AuthToken``
40 | ``gamer[key]``
41 | string
42 |
43 | FIXME encryption key
44 | ``gamer[password]``
45 | string
46 |
47 | User account password
48 | ``gamer[username]``
49 | string
50 |
51 | User account name
52 |
53 | Example key::
54 |
55 | -----BEGIN PUBLIC KEY-----
56 | MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvf3MvvZui5shNGbt2O0zveXrtfHZNivowNKiO
57 | UagJARKCJmjOJVtZ1srCe95Eul/xBDPDEaH8vJetn5Pl99QwhdYL1ps9mUhmocx90LavQsipr2Dw
58 | B7XshwN/EpW0uR/R84a3yXozpk7dgXi4+y//A+XT+MqgxsY6cdSGrBMsCQIDAQAB
59 | -----END PUBLIC KEY-----
60 |
61 |
62 | HTTP response
63 | =============
64 | Status code
65 | ``201 Created``
66 | Content type
67 | ``application/json; charset=utf-8``
68 | Body
69 | ``{}``
70 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-razer-session.rst:
--------------------------------------------------------------------------------
1 | ===============================================
2 | ``POST https://devs.ouya.tv/api/razer/session``
3 | ===============================================
4 |
5 | Login to the Razer Cortex store on the Razer Forge TV.
6 |
7 | Similar to the OUYA login `POST https://devs.ouya.tv/api/v1/sessions`_,
8 | but with e-mail instead of username.
9 |
10 |
11 | HTTP request
12 | ============
13 | Protocol
14 | ``https``
15 | Method
16 | ``POST``
17 | Host
18 | ``devs.ouya.tv``
19 | Path
20 | ``/api/razer/session``
21 | Headers
22 | ``User-Agent``
23 | ``Dalvik/2.1.0 (Linux; U; Android 6.0.1; Forge Build/M-MMB29M-rzs-us-sf-bld2-19HP-08.02.AM)``
24 | ``Accept-Language``
25 | ``de``
26 | ``X-OUYA-Device``
27 | ``pearlyn``
28 | ``X-OUYA-Firmware-Version``:
29 | (empty)
30 | ``X-OUYA-Console-Id``
31 | Build serial number
32 |
33 | ``171256710321511``
34 | ``X-OUYA-Console-Wifi-MAC-Address``
35 | ``C4:8E:8F:82:29:B1``
36 | ``X-OUYA-VersionCode``
37 | ``10202320``
38 | ``Content-Type``
39 | ``application/x-www-form-urlencoded``
40 |
41 | POST parameters
42 | ---------------
43 | ``email``
44 | User e-mail address
45 | ``password``
46 | User password
47 |
48 |
49 | HTTP response
50 | =============
51 | Success
52 | -------
53 | Status code
54 | ``200 OK``
55 | Content-type
56 | ``application/json; charset=utf-8``
57 |
58 | After the initial login, `GET https://devs.ouya.tv/api/v1/gamers/me`_ is fetched.
59 | If its reponse does not contain ``nickname``, the nickname input screen is shown.
60 | The nickname is then stored via `PUT https://devs.ouya.tv/api/razer/gamer`_.
61 |
62 | The CortexFramework code also parses properties
63 | ``razerToken``, ``nickname`` and ``avatar``
64 | but they do not seem to be used.
65 |
66 | .. include:: api-razer-session.response.json
67 | :code:
68 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-sessions.rst:
--------------------------------------------------------------------------------
1 | =============================================
2 | ``POST https://devs.ouya.tv/api/v1/sessions``
3 | =============================================
4 |
5 | Log in and obtain a session token.
6 |
7 | This token is stored in the console and used in the
8 | ``X-OUYA-AuthToken`` and ``X-Token`` headers as well as the
9 | ``auth_token`` GET parameter.
10 |
11 | The Razer Forge TV uses `POST https://devs.ouya.tv/api/razer/session`_ instead.
12 |
13 |
14 | Usage
15 | =====
16 |
17 | #. After logging with an existing account
18 | #. After new user registration
19 | #. When visiting Manage > Accounts
20 |
21 |
22 | HTTP request
23 | ============
24 | Protocol
25 | ``https``
26 | Method
27 | ``POST``
28 | Host
29 | ``devs.ouya.tv``
30 | Path
31 | ``/api/v1/sessions``
32 | Headers
33 | ``Accept-Encoding``
34 | ``User-Agent``
35 | ``X-OUYA-Console-Id``
36 | ``X-OUYA-Device``
37 |
38 | ``Content-Type``
39 | ``application/x-www-form-urlencoded``
40 | POST parameters
41 | ``username``
42 | User name used to log in
43 | ``password``
44 | User password
45 |
46 | HTTP response
47 | =============
48 |
49 | Success
50 | -------
51 | When the user logged in successfully.
52 |
53 | .. note:: If the user is already logged in, the old ``auth_token`` is returned.
54 | No new token is issued in this case.
55 |
56 | Status code
57 | ``200 OK``
58 | Content type
59 | ``application/json; charset=utf-8``
60 |
61 | Response body example:
62 |
63 | .. include:: api-v1-sessions.response-valid.json
64 | :code:
65 |
66 |
67 | Invalid login data
68 | ------------------
69 | When the login data are invalid.
70 |
71 | Also seen when the data were not available yet (e.g. user freshly registered)
72 | but the processes on the server were not finished yet.
73 | The OUYA simply tried the request a second time.
74 |
75 | Status code
76 | ``400 Bad Request``
77 | Content type
78 | ``application/json; charset=utf-8``
79 |
80 | Response body example:
81 |
82 | .. include:: api-v1-sessions.response-invalid.json
83 | :code:
84 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-gamers.rst:
--------------------------------------------------------------------------------
1 | ===========================================
2 | ``POST https://devs.ouya.tv/api/v1/gamers``
3 | ===========================================
4 |
5 | Register a new user and/or verify new user registration data.
6 |
7 | This method is both used as verification during input, as well as the
8 | final registration.
9 |
10 | Razer Forge TV uses `POST https://devs.ouya.tv/api/razer/gamer`_ instead.
11 |
12 |
13 | Usage
14 | =====
15 | #. During registration to check if data are valid
16 | #. During registration to finish new user sign up and create the account
17 |
18 |
19 | HTTP request
20 | ============
21 | Protocol
22 | ``https``
23 | Method
24 | ``GET``
25 | Host
26 | ``devs.ouya.tv``
27 | Path
28 | ``/api/v1/gamers``
29 | Headers
30 | Standard headers except token parameters.
31 |
32 | ``Content-Type``
33 | ``application/x-www-form-urlencoded``
34 | POST parameters
35 | ``gamer[username]``
36 | User name used to log in
37 | ``gamer[password]``
38 | User password
39 | ``gamer[password_confirmation]``
40 | User password, a second time
41 | ``gamer[email]``
42 | User e-mail address for marketing e-mails
43 | ``gamer[gender]``
44 | ``unknown`` | ``male`` | ``female``
45 | ``gamer[email_opt_out]``
46 | ``false`` | ``true``
47 |
48 | Opt out from marketing e-mails
49 | ``dryrun``
50 | ``true``
51 |
52 | If set, the user data are not registered - only verified.
53 | The response then tells which fields are deemed invalid.
54 |
55 | Not set when the user clicks "register".
56 |
57 |
58 | HTTP response
59 | =============
60 |
61 | ..note:: Does not support HTTP redirects!
62 |
63 | Success
64 | -------
65 | When everything is ok and the user has been registered
66 | (or the data were valid when ``dryrun`` was set)
67 |
68 | Status code
69 | ``200 OK``
70 | Content type
71 | ``application/json; charset=utf-8``
72 | Response body
73 | ``{}``
74 |
75 | Validation error
76 | ----------------
77 | When some of the data are deemed to be invalid.
78 |
79 | Status code
80 | ``400 Bad Request``
81 | Content type
82 | ``application/json; charset=utf-8``
83 |
84 | Example:
85 |
86 | .. include:: api-v1-gamers.response-invalid.json
87 | :code:
88 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-games-xxx-community_content.rst:
--------------------------------------------------------------------------------
1 | ===============================================================
2 | ``GET https://devs.ouya.tv/api/v1/games/xxx/community_content``
3 | ===============================================================
4 |
5 | Fetch available community content (e.g. levels) for the game.
6 |
7 |
8 | HTTP request
9 | ============
10 | Protocol
11 | ``https``
12 | Method
13 | ``GET``
14 | Host
15 | ``devs.ouya.tv``
16 | Path
17 | ``/api/v1/games/xxx/community_content``
18 |
19 | ``xxx``
20 | app package name
21 |
22 | Example: ``/api/v1/games/tv.ouya.sample.cc/community_content``
23 | Headers
24 | Standard headers
25 | GET parameters
26 | ``auth_token``
27 | Same as ``X-OUYA-AuthToken``
28 | ``sort``
29 | ``created_at``
30 | ``rating``
31 | ``updated_at``
32 |
33 | Sort order
34 | ``limit``
35 | ``10``
36 |
37 | Number of results to return
38 | ``offset``
39 | Page, only set when > 0
40 | ``category``
41 | Category filter
42 |
43 |
44 | HTTP response
45 | ==============
46 |
47 | Struct taken from ``tv.ouya.console.api.content.CCSearchResults``
48 | (``full-ouya-framework.apk``).
49 |
50 | ``communityContentCount``
51 | int. Required.
52 | ``communityContent``
53 | array of objects. Required.
54 |
55 | ``author``
56 | String
57 | ``authorUuid``
58 | String
59 | ``category``
60 | String
61 | ``contentUrl``
62 | String
63 | ``dependencies``
64 | Array of strings
65 | ``description``
66 | String
67 | ``fileSize``
68 | int
69 | ``flagged``
70 | bool
71 | ``gameTitle``
72 | String
73 | ``md5sum``
74 | String
75 | ``metaInfo``
76 | String
77 | ``rating``
78 | Object.
79 |
80 | ``average``
81 | float
82 | ``count``
83 | int
84 | ``user``
85 | Float with F?
86 | ``revision``
87 | int
88 | ``screenshot``
89 | Object
90 |
91 | ``type``
92 | String
93 | ``urls``
94 | Array of objects
95 |
96 | ``full``
97 | String
98 | ``thumbnail``
99 | String
100 | ``tags``
101 | Array of strings
102 | ``title``
103 | String
104 | ``uuid``
105 | String
106 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-games-xxx-purchases.post.rst:
--------------------------------------------------------------------------------
1 | ========================================================
2 | ``POST https://devs.ouya.tv/api/v1/games/xxx/purchases``
3 | ========================================================
4 |
5 | Buy a game.
6 |
7 | After buying the game shows up in
8 | `GET https://devs.ouya.tv/api/v1/premium_purchases`_.
9 |
10 |
11 | Usage
12 | =====
13 | - When the user buys an app/game.
14 |
15 |
16 | HTTP request
17 | ============
18 | Protocol
19 | ``https``
20 | Method
21 | ``POST``
22 | Host
23 | ``devs.ouya.tv``
24 | Path
25 | ``/api/v1/games/xxx/purchases``
26 |
27 | ``xxx``
28 | app package name
29 |
30 | Example: ``/api/v1/games/com.ChrisChung.CatlateralDamage/purchases``
31 | Headers
32 | Standard headers
33 |
34 | ``Content-Type``
35 | ``application/x-www-form-urlencoded``
36 | GET parameters
37 | ``auth_token``
38 | Same as ``X-OUYA-AuthToken``
39 | ``user_agent``
40 | ``launcher`` (at least when bought through the OUYA UI)
41 | POST parameters
42 | ``blob``
43 | Base64-encoded encrypted data
44 | ``iv``
45 | Base64-encoded initialization vector for the cryptographic function
46 | ``key``
47 | Base64-encoded key used to encrypt the ``blob``.
48 | Encrypted with FIXME: gamer key or developer key.
49 | ``auth_token``
50 | Same as ``X-OUYA-AuthToken``
51 |
52 | The decrypted ``blob`` again contains ``blob``, ``key`` and ``iv``.
53 |
54 | The decrypted inner ``blob`` contains a JSON object:
55 |
56 | ``identifier``
57 | Product key
58 | ``testing``
59 | Unknown. Always "true".
60 | ``uuid``
61 | Random number that is used by the game for this purchase request.
62 | Must be returned in the response to this request.
63 |
64 | Raw request (without encryption):
65 |
66 | .. include:: api-v1-games-xxx-purchases.post.request-nocrypt.json
67 | :code:
68 |
69 | Decrypted:
70 |
71 | .. include:: api-v1-games-xxx-purchases.post.request-decrypted.json
72 | :code:
73 |
74 |
75 | HTTP response
76 | =============
77 | Status code
78 | ``200 OK``
79 | Content-type
80 | ``application/json; charset=utf-8``
81 |
82 | Again the base-64 encoded keys: ``iv``, ``key`` and ``blob``.
83 |
84 | ``blob`` is a JSON object that needs to contain the ``uuid`` property.
85 | Most games do not want any other properties.
86 |
87 | "God of Blades" requires:
88 |
89 | - ``identifier``
90 | - ``name``
91 | - ``priceInCents``
92 |
93 | Example
94 | -------
95 |
96 | .. include:: api-v1-games-xxx-purchases.post.response.json
97 | :code:
98 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-apps-xxxuuid-response.json:
--------------------------------------------------------------------------------
1 | {
2 | "app": {
3 | "uuid": "15083557-535d-43a2-9ac3-a1a774f79d97",
4 | "title": "Ascent of Kings",
5 | "supportEmailAddress": "contact@nostatic.org",
6 | "supportPhone": null,
7 | "website": "https:\/\/web.archive.org\/web\/20190528042713\/http:\/\/nostaticsoftware.com\/",
8 | "founder": false,
9 | "versionNumber": "1.5",
10 | "likeCount": 162,
11 | "overview": "Released in July 2013 by Nostatic Software.",
12 | "contentRating": "Everyone",
13 | "publicSize": 0,
14 | "nativeSize": 0,
15 | "ratingAverage": 3.84,
16 | "ratingCount": 88,
17 | "gamerNumbers": [
18 | 1
19 | ],
20 | "developer": "Nostatic Software",
21 | "description": "The death of a King. An epic challenge to choose a new ruler. Will the youngest of four brothers turn out to be the strongest? Will a boy become King? The answer is up to you.\r\n\r\n- Classic adventure-platformer gameplay.\r\n\r\n- Explore and encounter strange creatures - some harmless, some not.\r\n\r\n- Navigate dangerous passages and evade deadly traps.\r\n\r\n- Seek out elemental shrines and receive upgraded abilities.",
22 | "premium": false,
23 | "promotedProduct": {
24 | "identifier": "ascent_full_game",
25 | "name": "Ascent of Kings Full Game Unlock",
26 | "currency": "USD",
27 | "description": "",
28 | "percentOff": 0,
29 | "localPrice": 0.99,
30 | "originalPrice": 0.99
31 | },
32 | "md5sum": null,
33 | "apkFileSize": 14869324,
34 | "filepickerScreenshots": [
35 | "https:\/\/web.archive.org\/web\/20190528042713\/https:\/\/d3e4aumcqn8cw3.cloudfront.net\/api\/file\/wwUdB7OjQEiunENVe3Lg",
36 | "https:\/\/web.archive.org\/web\/20190528042713\/https:\/\/d3e4aumcqn8cw3.cloudfront.net\/api\/file\/yZAvCqOQCa9GOA01iwN2",
37 | "https:\/\/web.archive.org\/web\/20190528042713\/https:\/\/d3e4aumcqn8cw3.cloudfront.net\/api\/file\/vuACRQYOQqq8hyOKVAtN",
38 | "https:\/\/web.archive.org\/web\/20190528042713\/https:\/\/d3e4aumcqn8cw3.cloudfront.net\/api\/file\/eQZ0vztqShyEDfZEsAqG"
39 | ],
40 | "mainImageFullUrl": "https:\/\/web.archive.org\/web\/20190528042713\/https:\/\/d3e4aumcqn8cw3.cloudfront.net\/api\/file\/h6foyzx7T7CLXIfH4QIt",
41 | "genres": [
42 | "Adventure",
43 | "Platformer"
44 | ],
45 | "latestVersion": "15083557-535d-43a2-9ac3-a1a774f79d97",
46 | "firstPublishedAt": "2013-07-18T19:54:19Z",
47 | "publishedAt": "2013-07-18T19:54:19Z",
48 | "videoUrl": null,
49 | "mobileAppIcon": null
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-premium_purchases.response.json:
--------------------------------------------------------------------------------
1 | {
2 | "games": [
3 | {
4 | "gamerNumbers": [
5 | 1,
6 | 2,
7 | 3,
8 | 4
9 | ],
10 | "genres": [
11 | "Fight!",
12 | "Multiplayer",
13 | "Sports"
14 | ],
15 | "url": "ouya://launcher/details?app=net.froemling.bombsquad",
16 | "latestVersion": {
17 | "apk": {
18 | "md5sum": "e1a734acba287777da24fe5eaf8101c0"
19 | },
20 | "versionNumber": "1.4.17",
21 | "uuid": "b1396eb2-6b3f-4ccd-82f8-fadc05094931"
22 | },
23 | "inAppPurchases": true,
24 | "promotedProduct": {
25 | "type": "entitlement",
26 | "developerName": "Eric Froemling",
27 | "identifier": "FullGameBombSquad",
28 | "name": "BombSquad Pro",
29 | "localPrice": 4.99,
30 | "originalPrice": 4.99,
31 | "percentOff": 0,
32 | "currency": "USD",
33 | "description": "Doubles tickets earned in-game, gives a power-ranking bonus, and more.."
34 | },
35 | "premium": false,
36 | "type": "app",
37 | "package": "net.froemling.bombsquad",
38 | "updated_at": 1431712678,
39 | "updatedAt": "2015-05-15T17:57:58Z",
40 | "title": "BombSquad",
41 | "image": "https://www.filepicker.io/api/file/AObi2TITPGH2bKTbSvLt",
42 | "contentRating": "9+",
43 | "rating": {
44 | "count": 3057,
45 | "average": 4.42
46 | }
47 | },
48 | {
49 | "gamerNumbers": [
50 | 1
51 | ],
52 | "genres": [
53 | "Kids List",
54 | "Multiplayer",
55 | "Sports"
56 | ],
57 | "url": "ouya://launcher/details?app=net.mountainsheep.icerage",
58 | "latestVersion": {
59 | "apk": {
60 | "md5sum": null
61 | },
62 | "versionNumber": "1.8",
63 | "uuid": "9ba50e67-1bb7-4ac3-8d01-36fbc8ae2566"
64 | },
65 | "inAppPurchases": true,
66 | "promotedProduct": {
67 | "type": "entitlement",
68 | "developerName": "Mountain Sheep, Inc.",
69 | "identifier": "ICE_RAGE_UNLOCK_FULL_GAME",
70 | "name": "Unlock Full Game",
71 | "localPrice": 2.99,
72 | "originalPrice": 2.99,
73 | "percentOff": 0,
74 | "currency": "USD",
75 | "description": ""
76 | },
77 | "premium": false,
78 | "type": "app",
79 | "package": "net.mountainsheep.icerage",
80 | "updated_at": 1381227272,
81 | "updatedAt": "2013-10-08T10:14:32Z",
82 | "title": "Ice Rage",
83 | "image": "https://www.filepicker.io/api/file/JLXK36xeSLCg1Faqw67Q",
84 | "contentRating": "Everyone",
85 | "rating": {
86 | "count": 1595,
87 | "average": 4.15
88 | }
89 | }
90 | ]
91 | }
92 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-details.response-bundle.json:
--------------------------------------------------------------------------------
1 | {
2 | "bundle": {
3 | "apps": [
4 | {
5 | "gamerNumbers": [
6 | 1
7 | ],
8 | "genres": [
9 | "Adventure",
10 | "Kids List",
11 | "Puzzle/Trivia"
12 | ],
13 | "url": "ouya://launcher/details?app=com.GoldenTricycle.Clark",
14 | "latestVersion": {
15 | "apk": {
16 | "md5sum": "a674b6c205502d9b4a907ade90307ba0"
17 | },
18 | "versionNumber": "1.24",
19 | "uuid": "7230ac05-d24c-4347-a990-7ac283c17063"
20 | },
21 | "inAppPurchases": true,
22 | "promotedProduct": {
23 | "type": "entitlement",
24 | "developerName": "GoldenTricycle / Hahn Film AG",
25 | "identifier": "clark_full_license_test",
26 | "name": "Clarc Full Version",
27 | "localPrice": 3.99,
28 | "originalPrice": 3.99,
29 | "percentOff": 0,
30 | "currency": "USD",
31 | "description": "This item unlocks the full game with 25 levels, more than 100 puzzles and more than 10 hours of gameplay."
32 | },
33 | "premium": false,
34 | "type": "app",
35 | "package": "com.GoldenTricycle.Clark",
36 | "updated_at": 1384854785,
37 | "updatedAt": "2013-11-19T09:53:05Z",
38 | "title": "CLARC",
39 | "image": "https://www.filepicker.io/api/file/VzCsgc3BTx2RiGpTr4Uw",
40 | "contentRating": "Everyone",
41 | "rating": {
42 | "count": 716,
43 | "average": 4.25
44 | }
45 | },
46 | {
47 | "gamerNumbers": [
48 | 1
49 | ],
50 | [...]
51 | }
52 | ],
53 | "currency": "EUR",
54 | "price": 6.99,
55 | "contentRating": "9+",
56 | "purchased": false,
57 | "games": [
58 | "com.GoldenTricycle.Clark",
59 | "com.Tripleslash.MagneticByNature",
60 | "com.Thinice.TwinRobots",
61 | "com.scaryrobot.badbadbots"
62 | ],
63 | "purchaseUrl": "ouya://launcher/purchase?developer=ec1a9ccd-373f-4047-bd07-36466ab7e25d&product=ROBOBUNDLE"
64 | },
65 | "buttons": [],
66 | "apps": [],
67 | "muted": true,
68 | "metaData": [
69 | "Golden Tricycle",
70 | "Team Tripleslash",
71 | "Scary Robot",
72 | "Thinice"
73 | ],
74 | "mediaTiles": [
75 | {
76 | "url": "https://vimeo.com/84689664",
77 | "type": "video"
78 | },
79 | {
80 | "urls": {
81 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150202-3-6hikjv.jpeg",
82 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/oivu9a_RackMultipart20150202-15-1sg3fmt"
83 | },
84 | "type": "image"
85 | }
86 | ],
87 | "description": "CLARC, Magnetic By Nature\r\n\r\nAbout CLARC\r\n",
88 | "title": "ROBO GAME BUNDLE!"
89 | }
90 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-games-xxx-purchases.rst:
--------------------------------------------------------------------------------
1 | =======================================================
2 | ``GET https://devs.ouya.tv/api/v1/games/xxx/purchases``
3 | =======================================================
4 |
5 | Check which features have been bought in an app (if the app has been
6 | bought).
7 |
8 | Each game may have multiple products that can be bought.
9 | One of them may be the "promotedProduct" in the discover section, and
10 | that one can be bought in the discover store / play menu app details.
11 |
12 |
13 | Usage
14 | =====
15 | - When an app/game is featured and shown on the main menu ("home"),
16 | it is checked if the app has already been purchased.
17 | - When opening the game details the "buy" button is shown if the
18 | "promotedProduct" is in the list of purchases
19 | - When a game starts it checks if it has been bought.
20 |
21 |
22 | HTTP request
23 | ============
24 | Protocol
25 | ``https``
26 | Method
27 | ``GET``
28 | Host
29 | ``devs.ouya.tv``
30 | Path
31 | ``/api/v1/games/xxx/purchases``
32 |
33 | ``xxx``
34 | app package name
35 |
36 | Example: ``/api/v1/games/com.ChrisChung.CatlateralDamage/purchases``
37 | Headers
38 | Standard headers
39 | GET parameters
40 | ``auth_token``
41 | Same as ``X-OUYA-AuthToken``
42 | ``app_id``
43 | ``com.ChrisChung.CatlateralDamage``
44 |
45 | Same as the one in the path.
46 | ``user_agent``
47 | ``launcher``
48 |
49 |
50 | HTTP response
51 | =============
52 | Status code
53 | ``200 OK``
54 | Content-type
55 | ``application/json; charset=utf-8``
56 |
57 | The response is a JSON object containing three properties:
58 |
59 | ``iv``
60 | Base 64 encoded initialization vector for encryption
61 | ``key``
62 | Base 64 encoded FIXME. Must be 128/192/256 bits long.
63 | ``blob``
64 | Base64 encoded encrypted data
65 |
66 | The decrypted ``blob`` contains again a JSON object with three properties:
67 |
68 | - ``iv``
69 | - ``key``
70 | - ``blob``
71 |
72 | This blob is again base64-encoded JSON and contains the actual data:
73 | A JSON with a single property "purchases" whose value is
74 | an array of receipts/purchases.
75 |
76 | Each receipt has the following properties:
77 |
78 | ``purchaseDate``
79 | Required. Milliseconds.
80 | ``generateDate``
81 | Optional. Milliseconds.
82 | ``identifier``
83 | Product key. Required. Alternative name: ``sku``.
84 | ``gamer``
85 | User UUID. Required.
86 | ``uuid``
87 | Transaction UUID. Required.
88 | ``priceInCents``
89 | Integer. Required.
90 | ``localPrice``
91 | Float. Optional.
92 | ``currency``
93 | Optional. Default ``USD``.
94 |
95 | Example
96 | -------
97 |
98 | Encrypted response:
99 |
100 | .. include:: api-v1-games-xxx-purchases.response.json
101 | :code:
102 |
103 | Decrypted receipt list:
104 |
105 | .. include:: api-v1-games-xxx-purchases.response-decrypted.json
106 | :code:
107 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-apps-xxx.response-bombsquad.json:
--------------------------------------------------------------------------------
1 | {
2 | "app": {
3 | "videoUrl": "http://vimeo.com/81224217",
4 | "publishedAt": "2015-05-19T19:28:47Z",
5 | "firstPublishedAt": "2013-04-30T21:10:07Z",
6 | "latestVersion": "b1396eb2-6b3f-4ccd-82f8-fadc05094931",
7 | "promotedProduct": {
8 | "originalPrice": 4.49,
9 | "localPrice": 4.49,
10 | "percentOff": 0,
11 | "description": "Doubles tickets earned in-game, gives a power-ranking bonus, and more..",
12 | "currency": "EUR",
13 | "name": "BombSquad Pro",
14 | "identifier": "FullGameBombSquad"
15 | },
16 | "genres": [
17 | "Fight!",
18 | "Multiplayer",
19 | "Sports"
20 | ],
21 | "premium": false,
22 | "description": "8 Player Party Game Madness!\nBlow up your friends in mini-games ranging from capture-the-flag to hockey.\nFeaturing gratuitous explosions, advanced ragdoll face-plant physics, pirates, ninjas, barbarians, insane chefs, and more.\nSupports PS3 controllers, XBox 360 controllers, most USB/Bluetooth gamepads, and even iOS and Android devices as controllers via the free 'BombSquad Remote' app.\nBombs Away!\n\nVersion history:\n1.4.17 - new global player profiles and custom icons\n1.4.16 - added continues and polishing\n1.4.14 - bug fixes\n1.4.11 - New tournament and league functionality\n1.4.9 - Santa and Frosty are back for the holidays! Also a new map and new tournament.\n1.4.8 - added Bernard the Bear and new tournament types\n1.4.7 - added 'easy' mode for campaign, 2 new mini-games, more tournament types, and more trophies\n1.4.6 - Net-play (preview), Replays, Co-op Tournaments, new unlockables, cloud saves, and lots more",
23 | "developer": "Eric Froemling",
24 | "gamerNumbers": [
25 | 1,
26 | 2,
27 | 3,
28 | 4
29 | ],
30 | "ratingCount": 3041,
31 | "ratingAverage": 4.42,
32 | "apkFileSize": 49817654,
33 | "founder": false,
34 | "mainImageFullUrl": "https://devs-ouya-tv-prod.s3.amazonaws.com/apps/6bbb461b-eab7-4d8a-90ba-9c4c2c02d463/net.froemling.bombsquad/b1396eb2-6b3f-4ccd-82f8-fadc05094931/ouya_icon.png",
35 | "website": "http://www.froemling.net/apps/bombsquad",
36 | "supportPhone": null,
37 | "supportEmailAddress": "support@froemling.net",
38 | "title": "BombSquad",
39 | "uuid": "b1396eb2-6b3f-4ccd-82f8-fadc05094931",
40 | "versionNumber": "1.4.17",
41 | "likeCount": 3478,
42 | "overview": "Released in May 2015 by Eric Froemling.",
43 | "filepickerScreenshots": [
44 | "https://www.filepicker.io/api/file/75dSamHkQiuKpg7o3DXF",
45 | "https://www.filepicker.io/api/file/g0sFFV1Tc2gidAYkaQPU",
46 | "https://www.filepicker.io/api/file/zswgv6FOQcqZWt7oyV00",
47 | "https://www.filepicker.io/api/file/51a1JNYKRaeQAAVeNedw",
48 | "https://www.filepicker.io/api/file/0dnBNiw2Sser5X8kpezG"
49 | ],
50 | "contentRating": "9+",
51 | "md5sum": "e1a734acba287777da24fe5eaf8101c0",
52 | "publicSize": 508390,
53 | "nativeSize": 10455000
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-apps-xxx.response.json:
--------------------------------------------------------------------------------
1 | {
2 | "app": {
3 | "videoUrl": null,
4 | "publishedAt": "2014-12-05T20:30:48Z",
5 | "firstPublishedAt": "2014-08-25T03:35:11Z",
6 | "latestVersion": "0fba3bba-83e0-4e3e-9f29-409258429757",
7 | "promotedProduct": {
8 | "originalPrice": 4.49,
9 | "localPrice": 4.49,
10 | "percentOff": 0,
11 | "description": "Play head-to-head against another opponent. If you don't have a second controller connected, you can play against a CPU-controlled opponent.",
12 | "currency": "EUR",
13 | "name": "2P VS Battle Mode",
14 | "identifier": "TBOE_Mode2P_1-50"
15 | },
16 | "genres": [
17 | "Puzzle/Trivia",
18 | "Arcade/Pinball",
19 | "Retro"
20 | ],
21 | "premium": false,
22 | "description": "Tetris® Battle: Fusion is now available on OUYA! Based on Tetris Battle, the hugely popular multiplayer game on Facebook that has been downloaded over 60 million times, Tetris Battle: Fusion introduces an all-new interactive adventure where you can battle your way through a series of challenging opponents and goals to become a Tetris Master! Collect special Amulets that can be used to give you an added boost as you progress your way to victory. Over 50 Amulets are ready to collect, and more will be added periodically. With the help of Amulets, don't change the way you play ... change the way you WIN! The game also features a 1v1 local co-op mode that enables friends in the same room to go head-to-head using previously earned Amulets.\r\n\r\nPLEASE NOTE: This app contains in-app purchasing, which allows you to buy items within the app using actual money.",
23 | "developer": "Tetris Online, Inc.",
24 | "gamerNumbers": [
25 | 1
26 | ],
27 | "ratingCount": 861,
28 | "ratingAverage": 3.73,
29 | "apkFileSize": 41125055,
30 | "founder": false,
31 | "mainImageFullUrl": "https://devs-ouya-tv-prod.s3.amazonaws.com/apps/a137f31c-ad28-47e6-ae43-0a346ebe249a/com.toa.tetrisFusionOuya/0fba3bba-83e0-4e3e-9f29-409258429757/ouya_icon.png",
32 | "website": "www.tetrisonline.com",
33 | "supportPhone": null,
34 | "supportEmailAddress": "support@tetrisonline.com",
35 | "title": "Tetris Battle Fusion",
36 | "uuid": "0fba3bba-83e0-4e3e-9f29-409258429757",
37 | "versionNumber": "2.0.1r",
38 | "likeCount": 0,
39 | "overview": "Released in December 2014 by Tetris Online, Inc..",
40 | "filepickerScreenshots": [
41 | "https://www.filepicker.io/api/file/fio2PmJQQla1fZdVEZxl",
42 | "https://www.filepicker.io/api/file/VESfV97VTSn4uRp5lY9A",
43 | "https://www.filepicker.io/api/file/To75Tn2Tw6J7nvPG4nBk",
44 | "https://www.filepicker.io/api/file/bjzlwTjvQe6HA4awlHTw",
45 | "https://www.filepicker.io/api/file/qcQEibHxT9Wa1PCoMpX2",
46 | "https://www.filepicker.io/api/file/kQKVJ2xyRnCnmysUjZkD",
47 | "https://www.filepicker.io/api/file/8zJEBwIBTmoFNiJyLKoY",
48 | "https://www.filepicker.io/api/file/zTnyJklUSYOlpJ1E04fH"
49 | ],
50 | "contentRating": "Everyone",
51 | "md5sum": "ad1f58f365859e5bc0db8c237b4c4514",
52 | "publicSize": 258150,
53 | "nativeSize": 5607144
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/api/ouya-updates.s3.amazonaws.com/updates-ouya_1_1.html:
--------------------------------------------------------------------------------
1 | GET http://ouya-updates.s3.amazonaws.com/updates-ouya_1_1.json
Information about the latest firmware.
83 | Only used by old firmware versions like 1.0.138 and 1.0.158.
84 | Firmware 1.0.248 and later do not check this URL anymore and
85 | use `GET https://devs.ouya.tv/api/firmware_builds`_ instead.
- Protocol
http
- Method
GET
- Host
ouya-updates.s3.amazonaws.com
- Path
/updates-ouya_1_1.json
- Status code
200 OK
{
86 | "result": [
87 | {
88 | "filename": "OUYA-1.2.1084-r1.zip",
89 | "timestamp": "1400714704",
90 | "md5sum": "ed9f1712988c5ec2033f44fabe8e6297",
91 | "channel": "stable",
92 | "url": "http://devs-ouya-tv-prod.s3.amazonaws.com/ota/RC-OUYA-1.2.1084-r1_ota.zip",
93 | "requiredUpto": "1.2.995",
94 | "changes": "https://devs.ouya.tv/api/changelog/ed9f1712988c5ec2033f44fabe8e6297.txt",
95 | "changesLocalized": {
96 | "en": "<!doctype html>\r\n<html>\r\n <head>\r\n...",
97 | "es": "<!doctype html>\r\n<html>\r\n <head>\r\n...",
98 | "fr": "<!doctype html>\r\n<html>\r\n <head>\r\n...",
99 | "it": "<!doctype html>\r\n<html>\r\n <head>\r\n...",
100 | "de": "<!doctype html>\r\n<html>\r\n <head>\r\n..."
101 | },
102 | "incremental": false
103 | }
104 | ]
105 | }
System Message: ERROR/3
updates-ouya_1_1.rstline 5
backlinkUnknown target name: "get https://devs.ouya.tv/api/firmware_builds".
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-details.rst:
--------------------------------------------------------------------------------
1 | ===========================================
2 | ``GET https://devs.ouya.tv/api/v1/details``
3 | ===========================================
4 |
5 | Detail page for an app bundle.
6 |
7 | Also used as detail page for installed games when opened through
8 | the "Play" section.
9 |
10 | If there are no details available, the error code 2005 needs to be returned.
11 | Otherwise opening the details for an installed but unlisted game will
12 | fail on the OUYA.
13 |
14 |
15 | HTTP request
16 | ============
17 | Protocol
18 | ``https``
19 | Method
20 | ``GET``
21 | Host
22 | ``devs.ouya.tv``
23 | Path
24 | ``/api/v1/details``
25 | Headers
26 | Standard headers
27 | GET parameters
28 | ``auth_token``
29 | Same as ``X-OUYA-AuthToken``
30 | ``page``
31 | UUID of the bundle page to show
32 |
33 | Example: ``be239ca4-10fd-42dd-89cd-1806e80b1362``
34 | ``app``
35 | Package name of an app.
36 |
37 | Example: ``org.blockinger.game``
38 | ``developer``
39 | UUID of the developer
40 |
41 | Example: ``5b015434-8a78-4274-aa5d-0cb2e330e50e``
42 | ``community_content``
43 | UUID of a community content module
44 |
45 | Only one of ``app``, ``developer`` or ``page`` is provided.
46 |
47 |
48 | HTTP response
49 | =============
50 | Status code
51 | ``200 OK``
52 | Content-type
53 | ``application/json; charset=utf-8``
54 |
55 |
56 | Response body definition
57 | ------------------------
58 |
59 | ``ccUrl``
60 | Show community content for this game
61 |
62 | ``developer.url``
63 | Not set for everyone.
64 | If set, a "Developer page" button is shown on the game details screen.
65 |
66 | Example when set: ``ouya://launcher/details?developer=92345f8d-ddbd-43f2-afcf-2628b1234713``
67 |
68 | ``metaData``
69 | Array of strings that determine which data are shown in the top row.
70 |
71 | Allowed values:
72 |
73 | - ``key:rating.average``: Shows the rating stars from ``rating.average``
74 | - ``key:apk.fileSize``: Shows the ``apk.fileSize`` as readable size with unit.
75 | - ``key:twitterHandle``: Shows the ``twitterHandle`` property, automatically prefixes an "@".
76 | - Any string value beginning with "key:" fetches the key path from JSON, e.g. ``developer.name``.
77 | - Any string value that does not begin with ``key:`` is shown as-is.
78 |
79 | ``promotedProduct``
80 | When set, the "Buy" button is shown on the details screen.
81 |
82 |
83 | Example: App
84 | ------------
85 |
86 | .. include:: api-v1-details.response-app.json
87 | :code:
88 |
89 | Example: Bundle
90 | ---------------
91 |
92 | .. include:: api-v1-details.response-bundle.json
93 | :code:
94 |
95 | A full version of that response data is available in git at
96 | ``api/devs.ouya.tv/api-v1-details.response-bundle-full.json``
97 |
98 |
99 | Example: Unlisted game
100 | -----------------------
101 |
102 | .. include:: api-v1-details.response-unlisted.json
103 | :code:
104 |
105 |
106 | Buttons
107 | =======
108 | It is possible to add buttons in each of the detail types.
109 |
110 | There are two types of buttons:
111 |
112 | - Switchable buttons (on/off state)
113 | - URL buttons (``android.intent.action.VIEW``,
114 | e.g. to open URLs or detail pages of other apps)
115 |
116 |
117 | Button for a detail page of an app
118 | ----------------------------------
119 | .. include:: api-v1-details.response-button-appdetails.json
120 | :code:
121 |
122 | Button for a website URL
123 | ------------------------
124 | .. include:: api-v1-details.response-button-url.json
125 | :code:
126 |
127 | Switchable button
128 | -----------------
129 | .. include:: api-v1-details.response-button-switchable.json
130 | :code:
131 |
132 | When the details page is loaded, ``status_url`` is fetched.
133 | It needs to return ``{"status":true}`` or ``{"status":false}``.
134 |
135 | If "true" is returned, ``on_text`` is shown.
136 | Clicking will launch ``off_url``.
137 |
138 | If "false is returned, ``text`` is shown.
139 | Clicking will launch ``url``.
140 |
--------------------------------------------------------------------------------
/README.rst:
--------------------------------------------------------------------------------
1 | ****************************
2 | OUYA store API documentation
3 | ****************************
4 |
5 | This is an attempt to document the API used by OUYA gaming consoles to
6 | speak with ``devs.ouya.tv``.
7 |
8 | .. contents::
9 | :depth: 1
10 |
11 | .. include:: headers.rst
12 | .. include:: api/ott9.wpstn.com/live.rst
13 | .. include:: api/status.ouya.tv/api-v1-status.rst
14 | .. include:: api/devs.ouya.tv/api-firmware_builds.rst
15 | .. include:: api/devs.ouya.tv/api-razer-gamer.post.rst
16 | .. include:: api/devs.ouya.tv/api-razer-gamer.put.rst
17 | .. include:: api/devs.ouya.tv/api-razer-session.rst
18 | .. include:: api/devs.ouya.tv/api-v1-apps-xxx.rst
19 | .. include:: api/devs.ouya.tv/api-v1-apps-xxx-download.rst
20 | .. include:: api/devs.ouya.tv/api-v1-console_configuration.rst
21 | .. include:: api/devs.ouya.tv/api-v1-crash_report.rst
22 | .. include:: api/devs.ouya.tv/api-v1-credit_card.post.rst
23 | .. include:: api/devs.ouya.tv/api-v1-credit_card.put.rst
24 | .. include:: api/devs.ouya.tv/api-v1-details.rst
25 | .. include:: api/devs.ouya.tv/api-v1-developers-xxx-current_gamer.rst
26 | .. include:: api/devs.ouya.tv/api-v1-developers-xxx-products.rst
27 | .. include:: api/devs.ouya.tv/api-v1-discover.rst
28 | .. include:: api/devs.ouya.tv/api-v1-discover-home.rst
29 | .. include:: api/devs.ouya.tv/api-v1-discover-tutorials.rst
30 | .. include:: api/devs.ouya.tv/api-v1-events.rst
31 | .. include:: api/devs.ouya.tv/api-v1-gamers.rst
32 | .. include:: api/devs.ouya.tv/api-v1-gamers-key.put.rst
33 | .. include:: api/devs.ouya.tv/api-v1-gamers-me.rst
34 | .. include:: api/devs.ouya.tv/api-v1-gamers-me-agreements.rst
35 | .. include:: api/devs.ouya.tv/api-v1-gamers-me-agreements.put.rst
36 | .. include:: api/devs.ouya.tv/api-v1-gamers-me-apps-developed.rst
37 | .. include:: api/devs.ouya.tv/api-v1-gamers-me-consoles.rst
38 | .. include:: api/devs.ouya.tv/api-v1-gamers-me-user_messages.rst
39 | .. include:: api/devs.ouya.tv/api-v1-games-xxx-community_content.rst
40 | .. include:: api/devs.ouya.tv/api-v1-games-xxx-community_content.post.rst
41 | .. include:: api/devs.ouya.tv/api-v1-games-xxx-purchases.rst
42 | .. include:: api/devs.ouya.tv/api-v1-games-xxx-purchases.post.rst
43 | .. include:: api/devs.ouya.tv/api-v1-partner_builds.rst
44 | .. include:: api/devs.ouya.tv/api-v1-partner_builds-release_notes.rst
45 | .. include:: api/devs.ouya.tv/api-v1-premium_purchases.rst
46 | .. include:: api/devs.ouya.tv/api-v1-queued_downloads.rst
47 | .. include:: api/devs.ouya.tv/api-v1-queued_downloads-xxx.delete.rst
48 | .. include:: api/devs.ouya.tv/api-v1-ratings.rst
49 | .. include:: api/devs.ouya.tv/api-v1-ratings.post.rst
50 | .. include:: api/devs.ouya.tv/api-v1-recommendations.rst
51 | .. include:: api/devs.ouya.tv/api-v1-search.rst
52 | .. include:: api/devs.ouya.tv/api-v1-sessions.rst
53 | .. include:: api/devs.ouya.tv/api-v1-themes.rst
54 | .. include:: api/devs.ouya.tv/api-v1-wallet.rst
55 | .. include:: api/devs.ouya.tv/agreements-marketplace.html.rst
56 | .. include:: api/devs.ouya.tv/update_strings.txt.rst
57 | .. include:: api/ouya-updates.s3.amazonaws.com/updates-ouya_1_1.rst
58 | .. include:: api/www.ouya.tv/system_message.rst
59 | .. include:: api/configuration.rst
60 |
61 |
62 | =====
63 | About
64 | =====
65 | This documentation has been written by Christian Weiske,
66 | cweiske+ouya@cweiske.de.
67 |
68 | Last update: ##UPDATE##
69 |
70 |
71 | License
72 | =======
73 | It is licensed under the GNU Free Documentation License.
74 |
75 |
76 | Source code
77 | ===========
78 | The documentation sources are available at
79 | http://git.cweiske.de/ouya-store-api.git/
80 | and mirrored at
81 | https://github.com/cweiske/ouya-store-api
82 |
83 |
84 | Home page
85 | =========
86 | A rendered version of this documentation is available at
87 | http://cweiske.de/ouya-store-api-docs.htm
88 |
89 |
90 |
91 | Building
92 | ========
93 | You need to install ``rst2html5`` before::
94 |
95 | $ pip install rst2html5-tools
96 |
97 | Rendering the docs is done via a build script::
98 |
99 | $ ./build.sh
100 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-discover.response.json:
--------------------------------------------------------------------------------
1 | {
2 | "rows": [
3 | {
4 | "showPrice": true,
5 | "ranked": true,
6 | "tiles": [ 0, 1, 2, 3 ],
7 | "title": "TRENDING NOW"
8 | },
9 | {
10 | "showPrice": true,
11 | "ranked": false,
12 | "tiles": [ 94, 95, 96 ],
13 | "title": "NEW RELEASES"
14 | },
15 | {
16 | "showPrice": true,
17 | "ranked": false,
18 | "tiles": [ 94, 62 ],
19 | "title": "OUR FOUNDERS"
20 | }
21 | ],
22 | "tiles": [
23 | {
24 | "gamerNumbers": [
25 | 1
26 | ],
27 | "genres": [
28 | "Fight!",
29 | "Multiplayer",
30 | "Platformer",
31 | "Retro",
32 | "Sports"
33 | ],
34 | "url": "ouya://launcher/details?app=evil.corptron.DuckGame",
35 | "latestVersion": {
36 | "apk": {
37 | "md5sum": "ac4e1ddefe383f8314fe5914edcf8705"
38 | },
39 | "versionNumber": "1.11",
40 | "uuid": "7cbd8b8b-e9df-4c30-9e0f-5a777c5e4eb4"
41 | },
42 | "inAppPurchases": true,
43 | "promotedProduct": {
44 | "type": "entitlement",
45 | "developerName": "Landon Podbielski",
46 | "identifier": "DUCKGAME",
47 | "name": "Duck Game",
48 | "localPrice": 8.99,
49 | "originalPrice": 8.99,
50 | "percentOff": 0,
51 | "currency": "EUR",
52 | "description": "You are buying Duck Game you lucky person. "
53 | },
54 | "premium": false,
55 | "type": "app",
56 | "package": "evil.corptron.DuckGame",
57 | "updated_at": 1417731390,
58 | "updatedAt": "2014-12-04T22:16:30Z",
59 | "title": "DUCK GAME",
60 | "image": "https://www.filepicker.io/api/file/iESEZs3fSUafrXuNpagi",
61 | "contentRating": "Everyone",
62 | "rating": {
63 | "count": 1155,
64 | "average": 4.31
65 | }
66 | },
67 | {
68 | "gamerNumbers": [
69 | 1,
70 | 2
71 | ],
72 | "genres": [
73 | "Adventure",
74 | "Arcade/Pinball",
75 | "Dual Stick",
76 | "FPS/Shooter",
77 | "Fight!",
78 | "Kids List",
79 | "Multiplayer",
80 | "Racing",
81 | "Short on Time?"
82 | ],
83 | "url": "ouya://launcher/details?app=com.media.playcast.OUYA.BAA",
84 | "latestVersion": {
85 | "apk": {
86 | "md5sum": "39931a3179e6c984771f0f1f49b59e87"
87 | },
88 | "versionNumber": "1.6.35707.8",
89 | "uuid": "abe8eeb3-4fd9-45bb-ba6b-50eb9d60478b"
90 | },
91 | "inAppPurchases": true,
92 | "promotedProduct": null,
93 | "premium": false,
94 | "type": "app",
95 | "package": "com.media.playcast.OUYA.BAA",
96 | "updated_at": 1433234808,
97 | "updatedAt": "2015-06-02T08:46:48Z",
98 | "title": "GameFly Packful Of Fun",
99 | "image": "https://www.filepicker.io/api/file/05y2T8cKTY6cUfX7RYFR",
100 | "contentRating": "17+",
101 | "rating": {
102 | "count": 394,
103 | "average": 4.09
104 | }
105 | },
106 | {
107 | "url": "ouya://launcher/details?page=08db29bd-c2f0-41d7-9e5d-d842f1bf34d2",
108 | "image": "https://s3.amazonaws.com/ouya-screenshots/08db29bd-c2f0-41d7-9e5d-d842f1bf34d2/thumbnails/thumbnail20150512-3-1gigg1x.jpeg",
109 | "uuid": "08db29bd-c2f0-41d7-9e5d-d842f1bf34d2",
110 | "title": "OUYA PRESENTS: JOE DANGER",
111 | "type": "details_page"
112 | },
113 | {
114 | "url": "ouya://launcher/details?page=3bdbe05a-201f-40c0-bb58-5aa4d6ea79dc",
115 | "image": "https://s3.amazonaws.com/ouya-screenshots/3bdbe05a-201f-40c0-bb58-5aa4d6ea79dc/thumbnails/thumbnail20150220-3-1p5bhh7.jpeg",
116 | "uuid": "3bdbe05a-201f-40c0-bb58-5aa4d6ea79dc",
117 | "title": "OUYA PRESENTS: THE JACKBOX PARTY PACK",
118 | "type": "details_page"
119 | },
120 | {
121 | "url": "ouya://launcher/discover/Adventure",
122 | "image": "",
123 | "title": "Adventure",
124 | "type": "discover"
125 | },
126 | ],
127 | "title": "DISCOVER"
128 | }
129 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-partner_builds.rst:
--------------------------------------------------------------------------------
1 | ==================================================
2 | ``GET https://devs.ouya.tv/api/v1/partner_builds``
3 | ==================================================
4 |
5 | Fetch commands for the "OUYA Everywhere" installer.
6 |
7 | The OUYA Everywhere installer ``tv.ouya.oe.installer`` fetches this URL
8 | from the server, installs package updates (framework, console UI)
9 | and then starts the actual console UI.
10 |
11 | Used on the Mad Catz Mojo and Razer Forge TV.
12 |
13 |
14 | HTTP request
15 | ============
16 | Protocol
17 | ``https``
18 | Method
19 | ``GET``
20 | Host
21 | ``devs.ouya.tv``
22 | Path
23 | ``/api/v1/partner_builds``
24 | Headers
25 | The Razer Forge TV seems to prefix all custom headers with ``X-OUYA-``
26 | while the Mojo version only uses ``X-``.
27 |
28 | ``User-Agent``
29 | Known values:
30 |
31 | - ``ouya-everywhere-installer (MadCatz/mojo-TS/mojo:4.2.2/JDQ39/MO0205-TS:user/release-keys)``
32 | - ``ouya-everywhere-installer (razer/pearlyn/pearlyn:6.0.1/M-MMB29M-rzs-us-sf-bld2-19HP-08.02.AM/144:user/release-keys)``
33 | ``Accept-Language``
34 | - ``de``
35 | - ``en-US,en``
36 | ``X-InstallerVersionCode``
37 | Razer Forge TV: ``8``
38 | ``X-InstallerVersionName``
39 | Razer Forge TV: ``1.08``
40 | ``X-InstallerPackageName``
41 | ``tv.ouya.oe.installer``
42 | ``X-OUYA-Console-Id``
43 | Build serial number
44 |
45 | Razer Forge TV: ``171256710321511``
46 | ``X-Device``
47 | ??
48 | ``X-OUYA-Device``
49 | Razer Forge TV: ``pearlyn``
50 | ``X-Product``
51 | ??
52 | ``X-OUYA-Product``
53 | Razer Forge TV: ``pearlyn``
54 | ``X-Model``
55 | ??
56 | ``X-OUYA-Model``
57 | Razer Forge TV: ``Forge``
58 | ``X-Brand``
59 | ??
60 | ``X-OUYA-Brand``
61 | Razer Forge TV:``razer``
62 | ``X-Display``
63 | ??
64 | ``X-OUYA-Display``
65 | Razer Forge TV: ``M-MMB29M-rzs-us-sf-bld2-19HP-08.02.AM.144``
66 | ``X-BuildId``
67 | ??
68 | ``X-OUYA-BuildId``
69 | Razer Forge TV: ``M-MMB29M-rzs-us-sf-bld2-19HP-08.02.AM``
70 | ``X-Manufacturer``
71 | ??
72 | ``X-OUYA-Manufacturer``
73 | Razer Forge TV: ``razer``
74 | ``OUYAUsername``
75 | When logged in.
76 | ``X-OUYA-AuthToken``
77 | Only when logged in already
78 |
79 | ``00702342-0000-1111-2222-c3e1500cafe1``
80 |
81 |
82 | HTTP response
83 | =============
84 | Status code
85 | ``200 OK``
86 | Content-type
87 | ``application/json; charset=utf-8``
88 |
89 |
90 | Response body definition
91 | ------------------------
92 | The response is a list of commands that the OUYA Everywhere installer
93 | will execute one after another.
94 |
95 | The top-level object contains a key ``actions``, which is an array of
96 | action objects.
97 | Each action has a ``action`` property that defines its type.
98 |
99 |
100 | exit action
101 | -----------
102 | Just stop the installer.
103 |
104 | No additional properties.
105 |
106 | .. include:: api-v1-partner_builds.exit.json
107 | :code:
108 |
109 |
110 | installFile action
111 | ------------------
112 | Install the given .apk file if it has not yet been installed.
113 |
114 | ``action``
115 | ``installFile``
116 | ``packageName``
117 | Name of package to install. Example: ``de.ouya.cweiske.foo``
118 | ``friendlyName``
119 | Name shown on screen during installation
120 | ``md5``
121 | Example: ``d3b07384d113edec49eaa6238ad5ff00``
122 | ``filesize``
123 | ``12345``
124 | ``downloadUrl``
125 | ``http://example.org/app.apk``
126 | ``versionCode``
127 | Optional property. Example: ``23``.
128 |
129 | Only install when the current version is lower than this number.
130 |
131 |
132 | launch action
133 | -------------
134 | Start the given application
135 |
136 | ``action``
137 | ``launch``
138 | ``packageName``
139 | Application to start. Example: ``de.ouya.cweiske.foo``
140 |
141 |
142 | showDialog action
143 | -----------------
144 | Show a message that the user has to confirm.
145 |
146 | ``action``
147 | ``showDialog``
148 | ``title``
149 | Message dialog title string
150 | ``message``
151 | Actual text
152 | ``verticalMargin``
153 | Optional. Example: ``1.0``
154 |
155 |
156 | uninstallFile action
157 | --------------------
158 | Remove a package
159 |
160 | ``action``
161 | ``uninstallFile``
162 | ``packageName``
163 | Example: ``de.ouya.cweiske.foo``
164 | ``keepData``
165 | Optional boolean. Example: ``false``
166 | ``ifLessThanVersionCode``
167 | Optional integer. Example: ``12``
168 | ``ifGreaterThanVersionCode``
169 | Optional integer. Example: ``42``
170 |
171 |
172 | Example
173 | -------
174 |
175 | .. include:: api-v1-partner_builds.response.json
176 | :code:
177 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-details.response-app.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "Game",
3 | "title": "BombSquad",
4 | "description": "8 Player Party Game Madness!\nBlow up your friends in mini-games ranging from capture-the-flag to hockey.\nFeaturing gratuitous explosions, advanced ragdoll face-plant physics, pirates, ninjas, barbarians, insane chefs, and more.\nSupports PS3 controllers, XBox 360 controllers, most USB/Bluetooth gamepads, and even iOS and Android devices as controllers via the free 'BombSquad Remote' app.\nBombs Away!\n\nVersion history:\n1.4.123 - Account unlinking & bug fixes\n1.4.116 - Bug fixes\n1.4.113 - Bug fixes\n1.4.105 - Shields now lose health over time and spinning too long causes you to pass out\n1.4.99 - Better language support in net-games\n1.4.98 - New netplay features such as kick votes\n1.4.94 - More netplay performance improvements\n1.4.93 - Netplay performance improvements\n1.4.88 - Public internet parties\n1.4.69 - Bug fixes and polishing\n1.4.66 - Easter edition!\n1.4.62 - new characters and bug fixes\n1.4.47 - bug fixes\n1.4.38 - bug fixes\n1.4.32 - more icons, bug fixes, and UI improvements\n1.4.17 - new global player profiles and custom icons\n1.4.16 - added continues and polishing\n1.4.14 - bug fixes\n1.4.11 - New tournament and league functionality\n1.4.9 - Santa and Frosty are back for the holidays! Also a new map and new tournament.\n1.4.8 - added Bernard the Bear and new tournament types",
5 | "mediaTiles": [
6 | {
7 | "type": "video",
8 | "url": "http://vimeo.com/81224217"
9 | },
10 | {
11 | "type": "image",
12 | "urls": {
13 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/3ae8fc67-f7f5-4f97-a48c-8ea2d31460fd/thumbnail20170911-3-4r3lgn.png",
14 | "full": "https://s3.amazonaws.com/ouya-screenshots/3ae8fc67-f7f5-4f97-a48c-8ea2d31460fd/ouya-image20170911-3-1ja1uwj"
15 | },
16 | "fp_url": "https://www.filepicker.io/api/file/75dSamHkQiuKpg7o3DXF"
17 | },
18 | {
19 | "type": "image",
20 | "urls": {
21 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/3ae8fc67-f7f5-4f97-a48c-8ea2d31460fd/thumbnail20170911-3-14kztkg.png",
22 | "full": "https://s3.amazonaws.com/ouya-screenshots/3ae8fc67-f7f5-4f97-a48c-8ea2d31460fd/ouya-image20170911-3-jg5ypv"
23 | },
24 | "fp_url": "https://www.filepicker.io/api/file/g0sFFV1Tc2gidAYkaQPU"
25 | },
26 | {
27 | "type": "image",
28 | "urls": {
29 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/3ae8fc67-f7f5-4f97-a48c-8ea2d31460fd/thumbnail20170911-3-csiwp7.png",
30 | "full": "https://s3.amazonaws.com/ouya-screenshots/3ae8fc67-f7f5-4f97-a48c-8ea2d31460fd/ouya-image20170911-3-s0jlzk"
31 | },
32 | "fp_url": "https://www.filepicker.io/api/file/zswgv6FOQcqZWt7oyV00"
33 | },
34 | {
35 | "type": "image",
36 | "urls": {
37 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/3ae8fc67-f7f5-4f97-a48c-8ea2d31460fd/thumbnail20170911-3-1615w0d.png",
38 | "full": "https://s3.amazonaws.com/ouya-screenshots/3ae8fc67-f7f5-4f97-a48c-8ea2d31460fd/ouya-image20170911-3-jcvr8g"
39 | },
40 | "fp_url": "https://www.filepicker.io/api/file/51a1JNYKRaeQAAVeNedw"
41 | },
42 | {
43 | "type": "image",
44 | "urls": {
45 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/3ae8fc67-f7f5-4f97-a48c-8ea2d31460fd/thumbnail20170911-3-1ryqwq9.png",
46 | "full": "https://s3.amazonaws.com/ouya-screenshots/3ae8fc67-f7f5-4f97-a48c-8ea2d31460fd/ouya-image20170911-3-pom01u"
47 | },
48 | "fp_url": "https://www.filepicker.io/api/file/0dnBNiw2Sser5X8kpezG"
49 | }
50 | ],
51 | "heroImage": {
52 | "url": "https://s3.amazonaws.com/ouya-screenshots/b9fea1c7-c0d9-445f-b424-471c1d9446d8/ouya-image20161126-3-1x3bs88"
53 | },
54 | "mobileAppIcon": "https://s3.amazonaws.com/ouya-screenshots/3ae8fc67-f7f5-4f97-a48c-8ea2d31460fd/ouya-image20170911-3-v6tjz1",
55 | "premium": false,
56 | "promotedProduct": {
57 | "identifier": "FullGameBombSquad",
58 | "name": "BombSquad Pro",
59 | "localPrice": 4.99,
60 | "originalPrice": 4.99,
61 | "percentOff": 0,
62 | "currency": "USD",
63 | "description": "Doubles tickets earned in-game, gives a power-ranking bonus, and more..",
64 | "type": "entitlement"
65 | },
66 | "inAppPurchases": true,
67 | "rating": {
68 | "count": 3706,
69 | "average": 4.36
70 | },
71 | "developer": {
72 | "name": "Eric Froemling",
73 | "founder": false
74 | },
75 | "suggestedAge": "9+",
76 | "apk": {
77 | "fileSize": 58535084,
78 | "nativeSize": 9511196,
79 | "publicSize": 571122,
80 | "md5sum": "54d5d03855add2b824040e39a9380f48",
81 | "filename": "1zbYKRSS1elKIYI9eseH_BombSquad-ouya-release.apk",
82 | "errors": "",
83 | "package": "net.froemling.bombsquad",
84 | "versionCode": 14304,
85 | "state": "complete"
86 | },
87 | "firstPublishedAt": 1367356207,
88 | "version": {
89 | "number": "1.4.123",
90 | "publishedAt": 1506379060,
91 | "uuid": "3ae8fc67-f7f5-4f97-a48c-8ea2d31460fd"
92 | },
93 | "metaData": [
94 | "key:rating.average",
95 | "key:developer.name",
96 | "key:suggestedAge",
97 | "56.12 MiB"
98 | ],
99 | "tileImage": "https://d3e4aumcqn8cw3.cloudfront.net/api/file/0xrPYAcTUCYpjTUPbqSV",
100 | "ccUrl": null,
101 | "gamerNumbers": [
102 | 1,
103 | 2,
104 | 3,
105 | 4
106 | ],
107 | "genres": [
108 | "Fight!",
109 | "Multiplayer",
110 | "Sports"
111 | ]
112 | }
113 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-discover.rst:
--------------------------------------------------------------------------------
1 | ============================================
2 | ``GET https://devs.ouya.tv/api/v1/discover``
3 | ============================================
4 |
5 | Fetch the categories and games in the OUYA store.
6 |
7 |
8 | HTTP request
9 | ============
10 | Protocol
11 | ``https``
12 | Method
13 | ``GET``
14 | Host
15 | ``devs.ouya.tv``
16 | Path
17 | ``/api/v1/discover``
18 | Headers
19 | Standard headers
20 | GET parameters
21 | ``auth_token``
22 | Same as ``X-OUYA-AuthToken``
23 |
24 |
25 | HTTP response
26 | =============
27 | Status code
28 | ``200 OK``
29 | Content-type
30 | ``application/json; charset=utf-8``
31 |
32 | HTTP redirects (e.g. 302) are supported.
33 |
34 | Response body definition
35 | ------------------------
36 | JSON object with two properties: ``rows`` and ``tiles``.
37 | ``rows`` contains the layout of the "discover" store main view, while
38 | ``tiles`` contains the list of games/apps available in the store with
39 | details.
40 |
41 |
42 | ``rows``
43 | --------
44 | Array with objects that have with several properties:
45 |
46 | ``showPrice``
47 | ``true`` or ``false``
48 | ``ranked``
49 | ``true`` or ``false``
50 |
51 | If the games are sorted by the internal ranking factor, or in order
52 | of appearance in ``tiles``.
53 | ``tiles``
54 | array
55 |
56 | List of integer game IDs (``[0, 1, 2]``)
57 | ``title``
58 | string
59 |
60 | Title of the category
61 |
62 |
63 | ``tiles``
64 | ---------
65 | Array of objects that each describe a single application.
66 |
67 | The position in the ``tiles`` array is the ID used by ``rows/tiles``.
68 |
69 | ``bundle``
70 | Only there when it's not a single game but a bundle of games that can be
71 | bought.
72 |
73 | Object with the following properties:
74 |
75 | ``apps``
76 | array
77 |
78 | Array of ``package`` strings
79 | ``currency``
80 | ``EUR``
81 | ``price``
82 | float
83 | ``contentRating``
84 | See ``contentRating`` description below.
85 | ``purchaseUrl``
86 | string
87 |
88 | URL where to initiate buying the bundle
89 |
90 | ``ouya://launcher/purchase?developer=ec1a9ccd-373f-4047-bd07-36466ab7e25d&product=ROBOBUNDLE``
91 | ``contentRating``
92 | For which audiences the game is meant
93 |
94 | Seen values:
95 |
96 | - ``Everyone``
97 | - ``9+``
98 | - ``12+``
99 | - ``17+``
100 | ``gamerNumbers``
101 | array
102 |
103 | List of integers describing how many players can play the game
104 | ``genres``
105 | array
106 |
107 | Array of strings with genre titles.
108 |
109 | ``["Fight!", "Multiplayer", "Platformer"]``
110 |
111 | Known genres:
112 |
113 | - Adventure
114 | - App
115 | - Arcade/Pinball
116 | - Card/Casino
117 | - Dual Stick
118 | - Entertainment
119 | - Fight!
120 | - FPS/Shooter
121 | - Kids List
122 | - Meditative
123 | - Multiplayer
124 | - Music
125 | - Platformer
126 | - Puzzle/Trivia
127 | - Racing
128 | - Retro
129 | - Role-Playing
130 | - Short on Time?
131 | - Sim/Strategy
132 | - Sports
133 | - Utility
134 | - Video
135 | ``image``
136 | URL to an image displayed in store view.
137 |
138 | Size should be 732x412.
139 |
140 | ``.jpg`` and ``.png`` files work.
141 | ``inAppPurchases``
142 | ``true`` or ``false``
143 |
144 | If you can/have to pay within the game
145 | ``latestVersion``
146 | object
147 |
148 | ``apk``
149 | ``md5sum``
150 | MD5 hash of the apk file. Used for verification after download.
151 | ``versionNumber``
152 | string with current version, e.g. ``1.11``
153 | ``uuid``
154 | UUID of the release.
155 | ``package``
156 | string
157 |
158 | java package name prefix, e.g. ``evil.corptron.DuckGame``
159 | ``premium``
160 | ``true`` or ``false``
161 |
162 | When ``true``, the game has no demo version and has to be bought before
163 | it can be downloaded.
164 | ``promotedProduct``
165 | object
166 |
167 | Bundles do not have this property set.
168 |
169 | The "buy" button buys this product.
170 |
171 | ``currency``
172 | string
173 |
174 | ``EUR``
175 | ``description``
176 | string
177 | ``developerName``
178 | string
179 |
180 | Name of the developer or company who made the game
181 | ``identifier``
182 | string
183 |
184 | ???
185 | ``localPrice``
186 | float
187 |
188 | Current price
189 | ``name``
190 | string
191 |
192 | Title of the game
193 | ``originalPrice``
194 | float
195 |
196 | Price it did once cost
197 | ``percentOff``
198 | integer
199 |
200 | Percent difference between ``originalPrice`` and ``localPrice``
201 | ``type``
202 | string
203 |
204 | ``entitlement`` is the only type seen within ``promotedProduct``.
205 | ``rating``
206 | Object with two properties: ``count`` and ``average``.
207 |
208 | ``count``
209 | integer
210 |
211 | Number of votes for this game
212 | ``average``
213 | float
214 |
215 | Average rating (1-5)
216 | ``title``
217 | Name of the app/game
218 | ``type``
219 | ``app`` or ``discover`` or ``details_page``
220 |
221 | Bundles always have ``details_page``.
222 | ``updated_at``
223 | integer
224 |
225 | Unix timestamp of last update date
226 | ``updatedAt``
227 | string
228 |
229 | ISO 8601-date, e.g. ``2014-12-04T22:16:30Z``
230 | ``url``
231 | string
232 |
233 | URL for the game details page
234 |
235 | Game details
236 | ``ouya://launcher/details?app=evil.corptron.DuckGame``
237 | Bundle details
238 | ``ouya://launcher/details?page=be239ca4-10fd-42dd-89cd-1806e80b1362``
239 |
240 | See `GET https://devs.ouya.tv/api/v1/details`_.
241 |
242 | ``title``
243 | ---------
244 | string
245 |
246 | Always ``DISCOVER``.
247 |
248 |
249 | Example
250 | -------
251 |
252 | .. include:: api-v1-discover.response.json
253 | :code:
254 |
255 | The API git repository contains a full copy of the "discover" response
256 | at ``api/devs.ouya.tv/api-v1-discover.response-full.json``.
257 |
258 |
259 | Bundle example
260 | --------------
261 |
262 | .. include:: api-v1-discover.response-bundle.json
263 | :code:
264 |
--------------------------------------------------------------------------------
/api/configuration.rst:
--------------------------------------------------------------------------------
1 | =====================
2 | Configuration options
3 | =====================
4 |
5 | It is possible to modify the behavior of the OUYA console by setting config
6 | options.
7 |
8 | They can be set in two ways:
9 |
10 | 1. In an ini-style file ``ouya_config.properties`` in the root OUYA directory
11 | when attached via USB to a PC (``/sdcard/`` on the OUYA itself).
12 | 2. On the server, via the `GET https://devs.ouya.tv/api/v1/console_configuration`_
13 | JSON file.
14 |
15 |
16 | Available options
17 | =================
18 |
19 | ``ATTRACT_LOOP_FILENAME``
20 | -------------------------
21 | Full path to the not-in-use-autoplay video in kiosk mode.
22 |
23 | Default: ``/sdcard/ouya_attract_loop.mp4``
24 |
25 |
26 | ``CCTEST``
27 | ----------
28 | When set to ``1``, the "Manage" menu shows a "[DEBUG] Test CC signup" entry.
29 |
30 |
31 | ``CRASH_REPORTS``
32 | -----------------
33 | When set to ``1``, the "Manage" menu shows a "[DEBUG] Send crash reports" entry.
34 | It immediately sends stored crash reports to the server.
35 |
36 |
37 | ``DEBUG``
38 | ---------
39 | When set to ``1``, additional output is shown in ``adb logcat``.
40 | You will see the remote server URLs that the OUYA is trying to fetch.
41 |
42 |
43 | ``DELETE_ACCOUNTS``
44 | -------------------
45 | When set to ``1``, the "Manage" menu shows a "[DEBUG] Delete user accounts" entry
46 | that immediately deletes the user account.
47 |
48 |
49 | ``DONT_DELETE_OTA``
50 | -------------------
51 | When an over-the-air update has been downloaded, it gets moved to
52 | ``/cache/update.zip``.
53 | After moving, the original file gets deleted.
54 | This option disabled this deletion.
55 |
56 | Default: ``0``
57 |
58 | (in ``ouya-framework.jar``)
59 |
60 |
61 | ``DUMP_DISCOVER_PAGES``
62 | -----------------------
63 | Store the downloaded API responses for discover category pages on
64 | ``/sdcard/``.
65 |
66 |
67 | ``ENABLE_AGREEMENTS``
68 | ---------------------
69 | When disabled, the regular fetch of ``/api/v1/gamers/me/agreements`` will not happen.
70 |
71 | Also does not show the agreements during user registration in OOBE.
72 |
73 | Default: ``1``
74 |
75 |
76 | ``ENABLE_BUY_NOW``
77 | ------------------
78 | When set to ``1``, the store details view shows a "buy now" button
79 | for games that have the "premium" flag set and a promoted product.
80 |
81 | Default: ``1``
82 |
83 |
84 | ``ENABLE_BUY_NOW_PRICE``
85 | ------------------------
86 | When set to ``1``, the store details view shows the product price on
87 | the "buy now" button (see ``ENABLE_BUY_NOW``).
88 |
89 | Default: ``1``
90 |
91 |
92 | ``ENABLE_BUY_NOW_PRICE_GUIDE``
93 | ------------------------------
94 | When set to ``1``, the guide menu
95 | (that appears when double-clicking the ouya logo button)
96 | shows the price of the promoted product.
97 |
98 |
99 | ``ENABLE_UPLOAD_LOGS``
100 | ----------------------
101 | Automatically update system logs. Needs super user access for uploading.
102 |
103 | Default: ``1``
104 |
105 |
106 | ``FORCE_OTA``
107 | -------------
108 | When set to ``1``: Force the OUYA to install an over-the-air update.
109 |
110 | Default: ``0``
111 |
112 |
113 | ``FORCE_VIDEO_ERROR``
114 | ---------------------
115 | When set to ``1``: Show an error whenever a video shall be played.
116 |
117 | Default: ``0``
118 |
119 |
120 | ``KIOSK_MODE``
121 | --------------
122 | When set to ``1``, the OUYA is set to a read-only mode.
123 |
124 | Only the "play" menu is visible, and it only allows to start games - not even see their
125 | details.
126 |
127 | Upon inactivity after some minutes, a video
128 | ``/storage/sdcard0/ouya_attract_loop.mp4`` is being played.
129 | (See ``ATTRACT_LOOP_FILENAME``)
130 |
131 |
132 | ``LOC_MULTIPLIER``
133 | ------------------
134 | Float value between 1.0 and 3.0
135 |
136 | Increases the string length by the given factor by repeating the letters
137 | in translatable strings.
138 |
139 |
140 | ``LOC_XXX``
141 | -----------
142 | When set to ``1``, all letters in translatable strings are replaced with ``X``.
143 |
144 | Needs a reboot.
145 |
146 |
147 | ``METRIC_APP_DETAILS``
148 | ----------------------
149 | When set to ``1``: Send a tracking notification whenever a details page
150 | in the store is shown, along with the app UUID.
151 |
152 |
153 | ``OE_MAX_DOWNLOADS``
154 | --------------------
155 | Number of maximum downloads in the queue for non-ouya devices.
156 |
157 | Default: ``10``
158 |
159 |
160 | ``OUYA_MAX_DOWNLOADS``
161 | ----------------------
162 | Number of maximum downloads in the queue for original OUYA devices.
163 |
164 | Default: ``5``
165 |
166 |
167 | ``OUYA_SERVER_URL``
168 | -------------------
169 | Base URL of the API server to connect.
170 | By modifying this value, you can switch the OUYA to another server.
171 |
172 | Default: ``https://devs.ouya.tv``
173 |
174 |
175 | ``OUYA_STATUS_SERVER_URL``
176 | --------------------------
177 | Used to check if the OUYA can reach the internet.
178 |
179 | This URL needs to return a "204" HTTP status code.
180 |
181 | Default: ``http://status.ouya.tv/api/v1/status``
182 |
183 |
184 | ``QUERY_GENDER_DOB``
185 | --------------------
186 | Show the gender and birthday input fields during registration in OOBE.
187 |
188 | Default: ``1``
189 |
190 |
191 | ``RATING_PROMPT_DELAY``
192 | -----------------------
193 | Number of game launches until the "rate this game" prompt is shown.
194 |
195 | Default: ``0`` (after the first launch)
196 |
197 |
198 | ``RATING_PROMPT_FREQ``
199 | ----------------------
200 | When rating a game has been skipped, it will be tried again after X launches.
201 |
202 | ``0`` to disable rating popups.
203 |
204 | Default: ``5``
205 |
206 |
207 | ``RATING_PROMPT_MAX``
208 | ---------------------
209 | Maximum number of "Rate this game" popups per game.
210 |
211 | Default: ``0`` (infinite)
212 |
213 |
214 | ``SAFE_ZONE``
215 | -------------
216 | Show a grey border around the OOBE screen.
217 |
218 | Default: ``0``
219 |
220 |
221 | ``UPDATE_TEXT_URL``
222 | -------------------
223 | When installing an update, funny messages are shown.
224 | They are downloaded from this URL.
225 |
226 | Default: ``https://devs.ouya.tv/update_strings.txt``
227 |
228 |
229 | ``USER_MESSAGES``
230 | -----------------
231 | Comma-separated list of URLs to show to the user.
232 | See `GET https://devs.ouya.tv/api/v1/gamers/me/user_messages`_.
233 |
234 | Default: empty
235 |
236 |
237 | ``WIFI_STATUS_DISPLAY``
238 | -----------------------
239 | When set to ``1``:
240 | Shows the current wifi status on the top right of all screens.
241 |
242 | Example:
243 |
244 | Wifi: INTERFACE_DISABLED, Strenght (0-8): 0
245 |
246 |
247 |
248 | Undocumented options
249 | ====================
250 | Only the name of this variables is known::
251 |
252 | BTC_LAUNCHER_PACKAGES
253 | BTC_PARAMS_APP
254 | BTC_PARAMS_LAUNCHER
255 | COMPARE_OTA_SETTINGS
256 | UPDATE_READY_UI_TIMEOUT
257 | UPLOAD_LOGS_SEQ_NUM
258 |
259 |
260 | Unused options
261 | ==============
262 | They are defined in the code, but not used anywhere in ``OUYALauncher.apk``::
263 |
264 | APP_UPDATE_CHECK_INTERVAL
265 | ATTRACT_LOOP_TIMEOUT
266 | COMMUNITY_CONTENT_ENABLED
267 | DEBUG_PICASSO
268 | DISCOVER_HEADER_TEXT
269 | ENABLE_REMOTES
270 | ENABLE_TRACES
271 | INPUT_REMAPPING_JSON_FILE
272 | LOCALE
273 | METRIC_EXIT_GENRE
274 | METRIC_EXIT_STORE
275 | METRICS_SPEW
276 | NUM_RECENT_DOWNLOADS_IN_DISCOVER
277 | OUYA_RENAME_CONTROLLER
278 | SESSION_UPDATE_DELAY_SEC
279 | SHOW_DISCOUNTS
280 | SYSTEM_MESSAGE_URL
281 | THEME_CHECK_INTERVAL
282 | USE_FAKE_VIDEOS
283 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-discover-home.response.json:
--------------------------------------------------------------------------------
1 | {
2 | "rows": [
3 | {
4 | "showPrice": true,
5 | "ranked": false,
6 | "tiles": [
7 | 0,
8 | 1,
9 | 2,
10 | 3,
11 | 4,
12 | 5,
13 | 6,
14 | 7,
15 | 8,
16 | 9
17 | ],
18 | "title": "FEATURED"
19 | }
20 | ],
21 | "tiles": [
22 | {
23 | "bundle": {
24 | "apps": [
25 | "com.GoldenTricycle.Clark",
26 | "com.Tripleslash.MagneticByNature",
27 | "com.Thinice.TwinRobots",
28 | "com.scaryrobot.badbadbots"
29 | ],
30 | "currency": "EUR",
31 | "price": 6.99,
32 | "contentRating": "9+",
33 | "purchaseUrl": "ouya://launcher/purchase?developer=ec1a9ccd-373f-4047-bd07-36466ab7e25d&product=ROBOBUNDLE"
34 | },
35 | "url": "ouya://launcher/details?page=be239ca4-10fd-42dd-89cd-1806e80b1362",
36 | "image": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150202-3-6hikjv.jpeg",
37 | "uuid": "be239ca4-10fd-42dd-89cd-1806e80b1362",
38 | "title": "ROBO GAME BUNDLE!",
39 | "type": "details_page"
40 | },
41 | {
42 | "gamerNumbers": [
43 | 1,
44 | 2
45 | ],
46 | "genres": [
47 | "Adventure",
48 | "Fight!",
49 | "Multiplayer",
50 | "Platformer",
51 | "Retro",
52 | "Role-Playing"
53 | ],
54 | "url": "ouya://launcher/details?app=com.ethanonengine.ouya.magicrampage",
55 | "latestVersion": {
56 | "apk": {
57 | "md5sum": "d49198f7863e86e16289cc57e98d2b51"
58 | },
59 | "versionNumber": "1.8.9",
60 | "uuid": "b7addbde-907a-4ffb-9964-0681f288b16d"
61 | },
62 | "inAppPurchases": false,
63 | "promotedProduct": {
64 | "type": "entitlement",
65 | "developerName": "Asantee Games",
66 | "identifier": "mr_full",
67 | "name": "Magic Rampage Full Upgrade",
68 | "localPrice": 3,
69 | "originalPrice": 5.99,
70 | "percentOff": 50,
71 | "currency": "EUR",
72 | "description": "Grants full access to all Dungeons, Survival scenarios and all features available in the game."
73 | },
74 | "premium": false,
75 | "type": "app",
76 | "package": "com.ethanonengine.ouya.magicrampage",
77 | "updated_at": 1433347308,
78 | "updatedAt": "2015-06-03T16:01:48Z",
79 | "title": "Magic Rampage",
80 | "image": "https://www.filepicker.io/api/file/szh3Jvi4RlCsP5csZCCA",
81 | "contentRating": "9+",
82 | "rating": {
83 | "count": 467,
84 | "average": 4.3
85 | }
86 | },
87 | {
88 | "gamerNumbers": [
89 | 1
90 | ],
91 | "genres": [
92 | "FPS/Shooter",
93 | "Kids List",
94 | "Meditative",
95 | "Sim/Strategy"
96 | ],
97 | "url": "ouya://launcher/details?app=com.ChrisChung.CatlateralDamage",
98 | "latestVersion": {
99 | "apk": {
100 | "md5sum": "a1128ceef7cb758d3f7b5b1b8aba08fd"
101 | },
102 | "versionNumber": "1.0",
103 | "uuid": "ed25db89-3819-42aa-86a6-1995d147f8b0"
104 | },
105 | "inAppPurchases": false,
106 | "promotedProduct": {
107 | "type": "entitlement",
108 | "developerName": "Chris Chung",
109 | "identifier": "CatlateralDamageFull",
110 | "name": "Catlateral Damage",
111 | "localPrice": 8.99,
112 | "originalPrice": 8.99,
113 | "percentOff": 0,
114 | "currency": "EUR",
115 | "description": "See the world through the eyes of a domestic house cat and make a mess!"
116 | },
117 | "premium": true,
118 | "type": "app",
119 | "package": "com.ChrisChung.CatlateralDamage",
120 | "updated_at": 1433878173,
121 | "updatedAt": "2015-06-09T19:29:33Z",
122 | "title": "Catlateral Damage",
123 | "image": "https://www.filepicker.io/api/file/GlAx27RQ8mvDiWzOyYfy",
124 | "contentRating": "Everyone",
125 | "rating": {
126 | "count": 62,
127 | "average": 4.4
128 | }
129 | },
130 | {
131 | "gamerNumbers": [
132 | 1
133 | ],
134 | "genres": [
135 | "Adventure",
136 | "Puzzle/Trivia"
137 | ],
138 | "url": "ouya://launcher/details?app=com.nightlightinteractive.ww",
139 | "latestVersion": {
140 | "apk": {
141 | "md5sum": "fc10c2fdebc0941aebe45ca42d6de125"
142 | },
143 | "versionNumber": "1.21",
144 | "uuid": "7a6f354d-2078-4da5-8f87-31c9afcf6793"
145 | },
146 | "inAppPurchases": true,
147 | "promotedProduct": {
148 | "type": "entitlement",
149 | "developerName": "Night Light Interactive",
150 | "identifier": "0",
151 | "name": "Full Game",
152 | "localPrice": 8.99,
153 | "originalPrice": 8.99,
154 | "percentOff": 0,
155 | "currency": "EUR",
156 | "description": "Full game unlock for Whispering Willows!"
157 | },
158 | "premium": false,
159 | "type": "app",
160 | "package": "com.nightlightinteractive.ww",
161 | "updated_at": 1421708589,
162 | "updatedAt": "2015-01-19T23:03:09Z",
163 | "title": "Whispering Willows",
164 | "image": "https://www.filepicker.io/api/file/J656P6lKRdWUxMno98NJ",
165 | "contentRating": "12+",
166 | "rating": {
167 | "count": 316,
168 | "average": 4.36
169 | }
170 | },
171 | {
172 | "gamerNumbers": [
173 | 1
174 | ],
175 | "genres": [
176 | "Meditative",
177 | "Platformer",
178 | "Puzzle/Trivia"
179 | ],
180 | "url": "ouya://launcher/details?app=com.bedtime.backtobed",
181 | "latestVersion": {
182 | "apk": {
183 | "md5sum": "b11997273b836cac5dc81c667c0214da"
184 | },
185 | "versionNumber": "1.0.3",
186 | "uuid": "e5a6c616-c5ed-413f-9894-7f6675ca7aaf"
187 | },
188 | "inAppPurchases": false,
189 | "promotedProduct": {
190 | "type": "entitlement",
191 | "developerName": "Bedtime Digital Games",
192 | "identifier": "backtobed",
193 | "name": "Back to Bed",
194 | "localPrice": 3.59,
195 | "originalPrice": 3.59,
196 | "percentOff": 0,
197 | "currency": "EUR",
198 | "description": "3D puzzle with a unique and artistic dream world wherein you guide a sleepwalker."
199 | },
200 | "premium": true,
201 | "type": "app",
202 | "package": "com.bedtime.backtobed",
203 | "updated_at": 1410959937,
204 | "updatedAt": "2014-09-17T13:18:57Z",
205 | "title": "Back to Bed",
206 | "image": "https://www.filepicker.io/api/file/s8TYVxSsQNOiJvyGcYIv",
207 | "contentRating": "9+",
208 | "rating": {
209 | "count": 132,
210 | "average": 4.56
211 | }
212 | },
213 | {
214 | "gamerNumbers": [
215 | 1,
216 | 2
217 | ],
218 | "genres": [
219 | "Adventure",
220 | "Arcade/Pinball",
221 | "Dual Stick",
222 | "FPS/Shooter",
223 | "Fight!",
224 | "Kids List",
225 | "Multiplayer",
226 | "Racing",
227 | "Short on Time?"
228 | ],
229 | "url": "ouya://launcher/details?app=com.media.playcast.OUYA.BAA",
230 | "latestVersion": {
231 | "apk": {
232 | "md5sum": "39931a3179e6c984771f0f1f49b59e87"
233 | },
234 | "versionNumber": "1.6.35707.8",
235 | "uuid": "abe8eeb3-4fd9-45bb-ba6b-50eb9d60478b"
236 | },
237 | "inAppPurchases": true,
238 | "promotedProduct": null,
239 | "premium": false,
240 | "type": "app",
241 | "package": "com.media.playcast.OUYA.BAA",
242 | "updated_at": 1433234808,
243 | "updatedAt": "2015-06-02T08:46:48Z",
244 | "title": "GameFly Packful Of Fun",
245 | "image": "https://www.filepicker.io/api/file/05y2T8cKTY6cUfX7RYFR",
246 | "contentRating": "17+",
247 | "rating": {
248 | "count": 394,
249 | "average": 4.09
250 | }
251 | },
252 | {
253 | "gamerNumbers": [
254 | 1
255 | ],
256 | "genres": [
257 | "Arcade/Pinball",
258 | "Kids List",
259 | "Platformer",
260 | "Racing"
261 | ],
262 | "url": "ouya://launcher/details?app=uk.co.hellogames.jdtouch",
263 | "latestVersion": {
264 | "apk": {
265 | "md5sum": "0b32a6ba390be2cdf72356843bf4a195"
266 | },
267 | "versionNumber": "0.0.31",
268 | "uuid": "28355ffd-8586-41dd-802a-e14837d54717"
269 | },
270 | "inAppPurchases": true,
271 | "promotedProduct": {
272 | "type": "entitlement",
273 | "developerName": "Hello Games Ltd",
274 | "identifier": "jd_touch",
275 | "name": "Joe Danger",
276 | "localPrice": 3.59,
277 | "originalPrice": 3.59,
278 | "percentOff": 0,
279 | "currency": "EUR",
280 | "description": "Wear the cape of the World’s Most Determined Stuntman, and take your trusty motorbike on a wild ride from zero to hero!"
281 | },
282 | "premium": true,
283 | "type": "app",
284 | "package": "uk.co.hellogames.jdtouch",
285 | "updated_at": 1425985136,
286 | "updatedAt": "2015-03-10T10:58:56Z",
287 | "title": "Joe Danger",
288 | "image": "https://www.filepicker.io/api/file/WzgsPzYQFeROlL2HuNeg",
289 | "contentRating": "Everyone",
290 | "rating": {
291 | "count": 76,
292 | "average": 4.38
293 | }
294 | },
295 | {
296 | "gamerNumbers": [
297 | 1
298 | ],
299 | "genres": [
300 | "Adventure",
301 | "Puzzle/Trivia"
302 | ],
303 | "url": "ouya://launcher/details?app=com.AmanitaDesign.Machinarium.OUYA",
304 | "latestVersion": {
305 | "apk": {
306 | "md5sum": "d6efc43c841636440ca9de2ab537c96e"
307 | },
308 | "versionNumber": "2.6",
309 | "uuid": "cf2f8034-4511-4f50-8528-3ff60b711048"
310 | },
311 | "inAppPurchases": false,
312 | "promotedProduct": {
313 | "type": "entitlement",
314 | "developerName": "Amanita Design s.r.o.",
315 | "identifier": "Machinarium_Unlock",
316 | "name": "Machinarium_Unlock",
317 | "localPrice": 4.49,
318 | "originalPrice": 4.49,
319 | "percentOff": 0,
320 | "currency": "EUR",
321 | "description": "test"
322 | },
323 | "premium": true,
324 | "type": "app",
325 | "package": "com.AmanitaDesign.Machinarium.OUYA",
326 | "updated_at": 1432571539,
327 | "updatedAt": "2015-05-25T16:32:19Z",
328 | "title": "Machinarium",
329 | "image": "https://www.filepicker.io/api/file/tdHkw3pYT0axhP6JkHrK",
330 | "contentRating": "Everyone",
331 | "rating": {
332 | "count": 38,
333 | "average": 4.87
334 | }
335 | },
336 | {
337 | "gamerNumbers": [
338 | 1
339 | ],
340 | "genres": [
341 | "Arcade/Pinball",
342 | "Puzzle/Trivia",
343 | "Retro"
344 | ],
345 | "url": "ouya://launcher/details?app=com.toa.tetrisFusionOuya",
346 | "latestVersion": {
347 | "apk": {
348 | "md5sum": "ad1f58f365859e5bc0db8c237b4c4514"
349 | },
350 | "versionNumber": "2.0.1r",
351 | "uuid": "0fba3bba-83e0-4e3e-9f29-409258429757"
352 | },
353 | "inAppPurchases": true,
354 | "promotedProduct": {
355 | "type": "entitlement",
356 | "developerName": "Tetris Online, Inc.",
357 | "identifier": "TBOE_Mode2P_1-50",
358 | "name": "2P VS Battle Mode",
359 | "localPrice": 4.49,
360 | "originalPrice": 4.49,
361 | "percentOff": 0,
362 | "currency": "EUR",
363 | "description": "Play head-to-head against another opponent. If you don't have a second controller connected, you can play against a CPU-controlled opponent."
364 | },
365 | "premium": false,
366 | "type": "app",
367 | "package": "com.toa.tetrisFusionOuya",
368 | "updated_at": 1417574067,
369 | "updatedAt": "2014-12-03T02:34:27Z",
370 | "title": "Tetris Battle Fusion",
371 | "image": "https://www.filepicker.io/api/file/l08xBSjORUKUn7H8jSlp",
372 | "contentRating": "Everyone",
373 | "rating": {
374 | "count": 861,
375 | "average": 3.73
376 | }
377 | },
378 | {
379 | "gamerNumbers": [
380 | 1
381 | ],
382 | "genres": [
383 | "Arcade/Pinball",
384 | "Platformer"
385 | ],
386 | "url": "ouya://launcher/details?app=com.AGameAWeek.SpikeDislike3",
387 | "latestVersion": {
388 | "apk": {
389 | "md5sum": "b966974271e1b2f1f31f44ada0e6f7b4"
390 | },
391 | "versionNumber": "1.0",
392 | "uuid": "f5584c0a-b891-4d8d-925e-eb54f5834319"
393 | },
394 | "inAppPurchases": false,
395 | "promotedProduct": null,
396 | "premium": false,
397 | "type": "app",
398 | "package": "com.AGameAWeek.SpikeDislike3",
399 | "updated_at": 1433161456,
400 | "updatedAt": "2015-06-01T12:24:16Z",
401 | "title": "SpikeDislike3",
402 | "image": "https://www.filepicker.io/api/file/sixoRxauRdGNySvdFQMi",
403 | "contentRating": "Everyone",
404 | "rating": {
405 | "count": 13,
406 | "average": 4.54
407 | }
408 | }
409 | ],
410 | "title": "home"
411 | }
412 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-events.request.urlencoded:
--------------------------------------------------------------------------------
1 | current_time=1434577856574&console_id=015d4b33bc64141b&events=%5B%7B%22data%22%3A%22num_connected_controllers%3D1+controller_names%3D%5C%22OUYA+Game+Controller%5C%22+controller_versions%3D%5C%22104%5C%22%22%2C%22timestamp%22%3A1434577827864%2C%22name%22%3A%22connected_controllers%22%2C%22uuid%22%3A%2247ebb367-ce5f-4249-88f1-312bfac9efa2%22%7D%2C%7B%22data%22%3A%22num_apps_sideloaded%3D0+sideloaded_packages%3Dnone%22%2C%22timestamp%22%3A1434577827849%2C%22name%22%3A%22sideloaded_apps%22%2C%22uuid%22%3A%227ab19279-0308-4a65-93d2-bc83f3bc518b%22%7D%2C%7B%22data%22%3A%22hardware_version%3D0+ouya_version%3D1.2.1427_r1+system_language%3Deng+age_gate%3Dnull+pin_code%3Dfalse+num_apps_ouya%3D0+num_apps_sideloaded%3D0+num_buried_packages%3D0+hd_space_used%3D0+hd_space_free%3D0+mem_free%3D436621312+mem_total%3D1018093568+tv_resolution%3D1920x1080+network_device%3Dethernet+adb_enabled%3Dtrue%22%2C%22timestamp%22%3A1434577827834%2C%22name%22%3A%22console_snapshot%22%2C%22uuid%22%3A%22308b7829-a357-4d0d-a79b-2456c40dc678%22%7D%2C%7B%22data%22%3A%22app_session_uuid%3Da963561b-a6e8-49f5-bcfa-218bc5a1d6c8+app_session_ouya_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+app_session_package%3Dtv.ouya.oobe+app_session_current_activity%3Dtv.ouya.console.launcher.agreements.AgreementsActivity+app_session_start_tick%3D37+app_session_current_tick%3D605+app_session_active_ticks%3D568+app_session_last_analog_tick%3D597+app_session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577800458%2C%22name%22%3A%22app_session_update%22%2C%22uuid%22%3A%22161d3457-4469-42e3-bbc5-4c8e4a45743f%22%7D%2C%7B%22data%22%3A%22app_session_uuid%3Da963561b-a6e8-49f5-bcfa-218bc5a1d6c8+app_session_ouya_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+app_session_package%3Dtv.ouya.oobe+app_session_current_activity%3Dtv.ouya.console.launcher.agreements.AgreementsActivity+app_session_start_tick%3D37+app_session_current_tick%3D605+app_session_active_ticks%3D568+app_session_last_analog_tick%3D597+app_session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577800331%2C%22name%22%3A%22app_session_update%22%2C%22uuid%22%3A%22ce209f8e-c564-4264-afdd-9e139b4d99fd%22%7D%2C%7B%22data%22%3A%22url%3Dhttps%3A%5C%2F%5C%2Fdevs.ouya.tv%5C%2Fagreements%5C%2Fmarketplace.html+loadTime%3D1.826+viewTime%3D4.908%22%2C%22timestamp%22%3A1434577800196%2C%22name%22%3A%22AgreementsDialog%22%2C%22uuid%22%3A%227d6d231e-9d6e-45f1-9c4e-3be7360e4f9a%22%7D%2C%7B%22data%22%3A%22app_session_uuid%3Da963561b-a6e8-49f5-bcfa-218bc5a1d6c8+app_session_ouya_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+app_session_package%3Dtv.ouya.oobe+app_session_current_activity%3Dtv.ouya.console.launcher.agreements.AgreementsActivity+app_session_start_tick%3D37+app_session_current_tick%3D598+app_session_active_ticks%3D561+app_session_last_analog_tick%3D597+app_session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577793490%2C%22name%22%3A%22app_session_update%22%2C%22uuid%22%3A%22c8054c0c-ba8e-4024-afdd-31c123745e5e%22%7D%2C%7B%22data%22%3A%22app_session_uuid%3Da963561b-a6e8-49f5-bcfa-218bc5a1d6c8+app_session_ouya_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+app_session_package%3Dtv.ouya.oobe+app_session_current_activity%3Dtv.ouya.oobe.CreateUserPromptActivity+app_session_start_tick%3D37+app_session_current_tick%3D585+app_session_active_ticks%3D548+app_session_last_analog_tick%3D576+app_session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577781047%2C%22name%22%3A%22app_session_update%22%2C%22uuid%22%3A%220f9bcf75-5cfd-4c30-97f4-a6190f0fb861%22%7D%2C%7B%22data%22%3A%22app_session_uuid%3Da963561b-a6e8-49f5-bcfa-218bc5a1d6c8+app_session_ouya_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+app_session_package%3Dtv.ouya.oobe+app_session_current_activity%3Dtv.ouya.oobe.UpdateActivity+app_session_start_tick%3D37+app_session_current_tick%3D585+app_session_active_ticks%3D548+app_session_last_analog_tick%3D576+app_session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577781039%2C%22name%22%3A%22app_session_update%22%2C%22uuid%22%3A%22a7b4bffd-55a6-4aa8-ad05-c2c36acc046c%22%7D%2C%7B%22data%22%3A%22app_session_uuid%3Da963561b-a6e8-49f5-bcfa-218bc5a1d6c8+app_session_ouya_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+app_session_package%3Dtv.ouya.oobe+app_session_current_activity%3Dtv.ouya.oobe.UpdateActivity+app_session_start_tick%3D37+app_session_current_tick%3D585+app_session_active_ticks%3D548+app_session_last_analog_tick%3D576+app_session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577780686%2C%22name%22%3A%22app_session_update%22%2C%22uuid%22%3A%220ee66da1-fbe4-4b09-a036-429c365be980%22%7D%2C%7B%22data%22%3A%22app_session_uuid%3Da963561b-a6e8-49f5-bcfa-218bc5a1d6c8+app_session_ouya_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+app_session_package%3Dtv.ouya.oobe+app_session_current_activity%3Dtv.ouya.oobe.UpdateActivity+app_session_start_tick%3D37+app_session_current_tick%3D585+app_session_active_ticks%3D548+app_session_last_analog_tick%3D576+app_session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577780608%2C%22name%22%3A%22app_session_update%22%2C%22uuid%22%3A%2218780fea-89d3-4b34-9c60-b03eb2522b3f%22%7D%2C%7B%22data%22%3A%22app_session_uuid%3Da963561b-a6e8-49f5-bcfa-218bc5a1d6c8+app_session_ouya_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+app_session_package%3Dtv.ouya.oobe+app_session_current_activity%3Dtv.ouya.oobe.UpdateActivity+app_session_start_tick%3D37+app_session_current_tick%3D581+app_session_active_ticks%3D544+app_session_last_analog_tick%3D576+app_session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577776955%2C%22name%22%3A%22app_session_update%22%2C%22uuid%22%3A%22fb6b0006-901b-4e78-925d-4d471bfe8d73%22%7D%2C%7B%22data%22%3A%22app_session_uuid%3Da963561b-a6e8-49f5-bcfa-218bc5a1d6c8+app_session_ouya_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+app_session_package%3Dtv.ouya.oobe+app_session_current_activity%3Dtv.ouya.oobe.NetworkSetupActivity+app_session_start_tick%3D37+app_session_current_tick%3D581+app_session_active_ticks%3D544+app_session_last_analog_tick%3D576+app_session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577776942%2C%22name%22%3A%22app_session_update%22%2C%22uuid%22%3A%2282d25266-58bd-492b-b582-31c26b505ac2%22%7D%2C%7B%22data%22%3A%22app_session_uuid%3Da963561b-a6e8-49f5-bcfa-218bc5a1d6c8+app_session_ouya_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+app_session_package%3Dtv.ouya.oobe+app_session_current_activity%3Dtv.ouya.oobe.NetworkSetupActivity+app_session_start_tick%3D37+app_session_current_tick%3D581+app_session_active_ticks%3D544+app_session_last_analog_tick%3D576+app_session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577776609%2C%22name%22%3A%22app_session_update%22%2C%22uuid%22%3A%22ccda1f7d-8c57-4ad1-ab46-7402927c40f7%22%7D%2C%7B%22data%22%3A%22app_session_uuid%3Da963561b-a6e8-49f5-bcfa-218bc5a1d6c8+app_session_ouya_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+app_session_package%3Dtv.ouya.oobe+app_session_current_activity%3Dtv.ouya.oobe.NetworkSetupActivity+app_session_start_tick%3D37+app_session_current_tick%3D581+app_session_active_ticks%3D544+app_session_last_analog_tick%3D576+app_session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577776449%2C%22name%22%3A%22app_session_update%22%2C%22uuid%22%3A%223d984c56-c2a5-4182-9794-185ef968b95d%22%7D%2C%7B%22data%22%3A%22app_session_uuid%3Da963561b-a6e8-49f5-bcfa-218bc5a1d6c8+app_session_ouya_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+app_session_package%3Dtv.ouya.oobe+app_session_current_activity%3Dtv.ouya.oobe.NetworkSetupActivity+app_session_start_tick%3D37+app_session_current_tick%3D577+app_session_active_ticks%3D540+app_session_last_analog_tick%3D576+app_session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577772739%2C%22name%22%3A%22app_session_update%22%2C%22uuid%22%3A%2288e40ac3-dc0d-4a1d-be77-f7855854877c%22%7D%2C%7B%22data%22%3A%22app_session_uuid%3Da963561b-a6e8-49f5-bcfa-218bc5a1d6c8+app_session_ouya_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+app_session_package%3Dtv.ouya.oobe+app_session_current_activity%3Dtv.ouya.oobe.LocaleActivity+app_session_start_tick%3D37+app_session_current_tick%3D577+app_session_active_ticks%3D540+app_session_last_analog_tick%3D576+app_session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577772731%2C%22name%22%3A%22app_session_update%22%2C%22uuid%22%3A%227cb1fea0-5415-444c-ab0f-df36b4d4fa90%22%7D%2C%7B%22data%22%3A%22app_session_uuid%3Da963561b-a6e8-49f5-bcfa-218bc5a1d6c8+app_session_ouya_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+app_session_package%3Dtv.ouya.oobe+app_session_current_activity%3Dtv.ouya.oobe.LocaleActivity+app_session_start_tick%3D37+app_session_current_tick%3D577+app_session_active_ticks%3D540+app_session_last_analog_tick%3D576+app_session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577772221%2C%22name%22%3A%22app_session_update%22%2C%22uuid%22%3A%2238cd9bcd-2277-419f-875c-6d195f148c02%22%7D%2C%7B%22data%22%3A%22app_session_uuid%3Da963561b-a6e8-49f5-bcfa-218bc5a1d6c8+app_session_ouya_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+app_session_package%3Dtv.ouya.oobe+app_session_current_activity%3Dtv.ouya.oobe.LocaleActivity+app_session_start_tick%3D37+app_session_current_tick%3D576+app_session_active_ticks%3D539+app_session_last_analog_tick%3D576+app_session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577772087%2C%22name%22%3A%22app_session_update%22%2C%22uuid%22%3A%224525614b-d158-4678-b559-53cabe75af1e%22%7D%2C%7B%22data%22%3A%22app_session_uuid%3Da963561b-a6e8-49f5-bcfa-218bc5a1d6c8+app_session_ouya_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+app_session_package%3Dtv.ouya.oobe+app_session_current_activity%3Dtv.ouya.oobe.LocaleActivity+app_session_start_tick%3D37+app_session_current_tick%3D77+app_session_active_ticks%3D40+app_session_last_analog_tick%3D71+app_session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577272237%2C%22name%22%3A%22app_session_update%22%2C%22uuid%22%3A%221f1fb7c4-d5fb-4c63-b344-e33afe1a4316%22%7D%2C%7B%22data%22%3A%22app_session_uuid%3Da963561b-a6e8-49f5-bcfa-218bc5a1d6c8+app_session_ouya_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+app_session_package%3Dtv.ouya.oobe+app_session_current_activity%3Dtv.ouya.oobe.PairControllersActivity+app_session_start_tick%3D37+app_session_current_tick%3D77+app_session_active_ticks%3D40+app_session_last_analog_tick%3D71+app_session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577272229%2C%22name%22%3A%22app_session_update%22%2C%22uuid%22%3A%221acaf070-969a-4638-8c3b-6f6203643f2c%22%7D%2C%7B%22data%22%3A%22app_session_uuid%3Da963561b-a6e8-49f5-bcfa-218bc5a1d6c8+app_session_ouya_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+app_session_package%3Dtv.ouya.oobe+app_session_current_activity%3Dtv.ouya.oobe.PairControllersActivity+app_session_start_tick%3D37+app_session_current_tick%3D76+app_session_active_ticks%3D39+app_session_last_analog_tick%3D71+app_session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577271825%2C%22name%22%3A%22app_session_update%22%2C%22uuid%22%3A%221316a488-2bcb-4294-9bac-584ae6bd5a12%22%7D%2C%7B%22data%22%3A%22app_session_uuid%3Da963561b-a6e8-49f5-bcfa-218bc5a1d6c8+app_session_ouya_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+app_session_package%3Dtv.ouya.oobe+app_session_current_activity%3Dtv.ouya.oobe.PairControllersActivity+app_session_start_tick%3D37+app_session_current_tick%3D76+app_session_active_ticks%3D39+app_session_last_analog_tick%3D71+app_session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577271771%2C%22name%22%3A%22app_session_update%22%2C%22uuid%22%3A%22d66cb353-f249-42e2-82ad-e7c275cbebcf%22%7D%2C%7B%22data%22%3A%22app_session_uuid%3Da963561b-a6e8-49f5-bcfa-218bc5a1d6c8+app_session_ouya_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+app_session_package%3Dtv.ouya.oobe+app_session_current_activity%3Dtv.ouya.oobe.PairControllersActivity+app_session_start_tick%3D37+app_session_current_tick%3D47+app_session_active_ticks%3D10+app_session_last_analog_tick%3D32+app_session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577242937%2C%22name%22%3A%22app_session_update%22%2C%22uuid%22%3A%22aa11379d-3345-4616-a902-be160340040c%22%7D%2C%7B%22data%22%3A%22app_session_uuid%3Da0e88f3f-e661-49d5-a59c-8b3c011a81c0+app_session_ouya_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+app_session_package%3Dtv.ouya.console+app_session_current_activity%3Dtv.ouya.console.launcher.startup.PlayVideoActivity+app_session_start_tick%3D32+app_session_current_tick%3D47+app_session_active_ticks%3D6+app_session_last_analog_tick%3D32+app_session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577242929%2C%22name%22%3A%22app_session_update%22%2C%22uuid%22%3A%223170b01a-362c-4311-bf88-b7249b5bf43b%22%7D%2C%7B%22data%22%3A%22app_session_uuid%3Da963561b-a6e8-49f5-bcfa-218bc5a1d6c8+app_session_ouya_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+app_session_package%3Dtv.ouya.oobe+app_session_current_activity%3Dtv.ouya.oobe.PairControllersActivity+app_session_start_tick%3D37+app_session_current_tick%3D47+app_session_active_ticks%3D10+app_session_last_analog_tick%3D32+app_session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577242924%2C%22name%22%3A%22app_session_update%22%2C%22uuid%22%3A%22c88625ea-09ba-435f-8a24-435ed7c2f484%22%7D%2C%7B%22data%22%3A%22app_session_uuid%3Da0e88f3f-e661-49d5-a59c-8b3c011a81c0+app_session_ouya_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+app_session_package%3Dtv.ouya.console+app_session_current_activity%3Dtv.ouya.console.launcher.startup.PlayVideoActivity+app_session_start_tick%3D32+app_session_current_tick%3D38+app_session_active_ticks%3D6+app_session_last_analog_tick%3D32+app_session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577233483%2C%22name%22%3A%22app_session_update%22%2C%22uuid%22%3A%2247f21fae-8ca2-405c-964d-9f747c8ff5d1%22%7D%2C%7B%22data%22%3A%22app_session_uuid%3Da963561b-a6e8-49f5-bcfa-218bc5a1d6c8+app_session_ouya_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+app_session_package%3Dtv.ouya.oobe+app_session_current_activity%3Dtv.ouya.oobe.PairControllersActivity+app_session_start_tick%3D37+app_session_current_tick%3D38+app_session_active_ticks%3D1+app_session_last_analog_tick%3D32+app_session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577233480%2C%22name%22%3A%22app_session_update%22%2C%22uuid%22%3A%22bd519f90-aa42-461c-bf49-69ac6a78bb2b%22%7D%2C%7B%22data%22%3A%22app_session_uuid%3Da0e88f3f-e661-49d5-a59c-8b3c011a81c0+app_session_ouya_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+app_session_package%3Dtv.ouya.console+app_session_current_activity%3Dtv.ouya.console.launcher.startup.PlayVideoActivity+app_session_start_tick%3D32+app_session_current_tick%3D37+app_session_active_ticks%3D5+app_session_last_analog_tick%3D32+app_session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577233029%2C%22name%22%3A%22app_session_update%22%2C%22uuid%22%3A%2247d09f5b-0fd1-46ea-a15c-439196446191%22%7D%2C%7B%22data%22%3A%22app_session_uuid%3Da963561b-a6e8-49f5-bcfa-218bc5a1d6c8+app_session_ouya_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+app_session_package%3Dtv.ouya.oobe+app_session_current_activity%3Dtv.ouya.oobe.OOBEController+app_session_start_tick%3D37+app_session_current_tick%3D37+app_session_active_ticks%3D0+app_session_last_analog_tick%3D32+app_session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577233026%2C%22name%22%3A%22app_session_update%22%2C%22uuid%22%3A%229b09e3f9-1d16-459c-8f1b-8aad8d688e22%22%7D%2C%7B%22data%22%3A%22app_session_uuid%3Da0e88f3f-e661-49d5-a59c-8b3c011a81c0+app_session_ouya_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+app_session_package%3Dtv.ouya.console+app_session_current_activity%3Dtv.ouya.console.launcher.startup.PlayVideoActivity+app_session_start_tick%3D32+app_session_current_tick%3D33+app_session_active_ticks%3D1+app_session_last_analog_tick%3D32+app_session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577228909%2C%22name%22%3A%22app_session_update%22%2C%22uuid%22%3A%22bb2bfb8f-8d9a-4164-a59e-141116a9ddf7%22%7D%2C%7B%22data%22%3A%22app_session_uuid%3Da0e88f3f-e661-49d5-a59c-8b3c011a81c0+app_session_ouya_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+app_session_package%3Dtv.ouya.console+app_session_current_activity%3Dtv.ouya.console.launcher.startup.PlayVideoActivity+app_session_start_tick%3D32+app_session_current_tick%3D32+app_session_active_ticks%3D0+app_session_last_analog_tick%3D32+app_session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577227905%2C%22name%22%3A%22app_session_update%22%2C%22uuid%22%3A%220dd6ac90-7153-4b9d-a7c5-b7aac836b799%22%7D%2C%7B%22data%22%3A%22app_session_uuid%3Da0e88f3f-e661-49d5-a59c-8b3c011a81c0+app_session_ouya_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+app_session_package%3Dtv.ouya.console+app_session_current_activity%3Dtv.ouya.console.launcher.startup.PlayVideoActivity+app_session_start_tick%3D32+app_session_current_tick%3D32+app_session_active_ticks%3D0+app_session_last_analog_tick%3D32+app_session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577227898%2C%22name%22%3A%22app_session_update%22%2C%22uuid%22%3A%22148093b2-7ad0-426f-950f-2d1574c0ebf4%22%7D%2C%7B%22data%22%3A%22app_session_uuid%3D817b5728-efa4-4029-821d-6d6a2962ebf5+app_session_ouya_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+app_session_package%3Dtv.ouya.console+app_session_current_activity%3Dtv.ouya.console.launcher.startup.PlayVideoActivity+app_session_start_tick%3D32+app_session_current_tick%3D32+app_session_active_ticks%3D0+app_session_last_analog_tick%3D32+app_session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577227684%2C%22name%22%3A%22app_session_update%22%2C%22uuid%22%3A%22cab548f8-d2ca-4974-b567-45f1b9ffff73%22%7D%2C%7B%22data%22%3A%22app_session_uuid%3Dc1c59721-7889-4d8a-83f3-a732f1bb3a03+app_session_ouya_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+app_session_package%3Dtv.ouya.console+app_session_current_activity%3Dtv.ouya.console.launcher.guide.GuideActivity+app_session_start_tick%3D32+app_session_current_tick%3D32+app_session_active_ticks%3D0+app_session_last_analog_tick%3D32+app_session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577227684%2C%22name%22%3A%22app_session_update%22%2C%22uuid%22%3A%225d3042bf-90c3-4e4f-a30a-723bc1753d78%22%7D%2C%7B%22data%22%3A%22session_uuid%3De0eef5de-624c-42f8-9b1b-a0968a27eb03+session_start_tick%3D32+session_current_tick%3D32+session_last_analog_tick%3D32+session_last_digital_tick%3D32%22%2C%22timestamp%22%3A1434577227681%2C%22name%22%3A%22ouya_session_update%22%2C%22uuid%22%3A%22ee792b57-8cff-4868-bf01-4417613bc96b%22%7D%5D&auth_token=96bfeaae-212d-447b-b4bf-caa5e86c0502
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-events.request.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "data": "num_connected_controllers=1 controller_names=\"OUYA Game Controller\" controller_versions=\"104\"",
4 | "timestamp": 1434577827864,
5 | "name": "connected_controllers",
6 | "uuid": "47ebb367-ce5f-4249-88f1-312bfac9efa2"
7 | },
8 | {
9 | "data": "num_apps_sideloaded=0 sideloaded_packages=none",
10 | "timestamp": 1434577827849,
11 | "name": "sideloaded_apps",
12 | "uuid": "7ab19279-0308-4a65-93d2-bc83f3bc518b"
13 | },
14 | {
15 | "data": "hardware_version=0 ouya_version=1.2.1427_r1 system_language=eng age_gate=null pin_code=false num_apps_ouya=0 num_apps_sideloaded=0 num_buried_packages=0 hd_space_used=0 hd_space_free=0 mem_free=436621312 mem_total=1018093568 tv_resolution=1920x1080 network_device=ethernet adb_enabled=true",
16 | "timestamp": 1434577827834,
17 | "name": "console_snapshot",
18 | "uuid": "308b7829-a357-4d0d-a79b-2456c40dc678"
19 | },
20 | {
21 | "data": "app_session_uuid=a963561b-a6e8-49f5-bcfa-218bc5a1d6c8 app_session_ouya_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 app_session_package=tv.ouya.oobe app_session_current_activity=tv.ouya.console.launcher.agreements.AgreementsActivity app_session_start_tick=37 app_session_current_tick=605 app_session_active_ticks=568 app_session_last_analog_tick=597 app_session_last_digital_tick=32",
22 | "timestamp": 1434577800458,
23 | "name": "app_session_update",
24 | "uuid": "161d3457-4469-42e3-bbc5-4c8e4a45743f"
25 | },
26 | {
27 | "data": "app_session_uuid=a963561b-a6e8-49f5-bcfa-218bc5a1d6c8 app_session_ouya_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 app_session_package=tv.ouya.oobe app_session_current_activity=tv.ouya.console.launcher.agreements.AgreementsActivity app_session_start_tick=37 app_session_current_tick=605 app_session_active_ticks=568 app_session_last_analog_tick=597 app_session_last_digital_tick=32",
28 | "timestamp": 1434577800331,
29 | "name": "app_session_update",
30 | "uuid": "ce209f8e-c564-4264-afdd-9e139b4d99fd"
31 | },
32 | {
33 | "data": "url=https:\/\/devs.ouya.tv\/agreements\/marketplace.html loadTime=1.826 viewTime=4.908",
34 | "timestamp": 1434577800196,
35 | "name": "AgreementsDialog",
36 | "uuid": "7d6d231e-9d6e-45f1-9c4e-3be7360e4f9a"
37 | },
38 | {
39 | "data": "app_session_uuid=a963561b-a6e8-49f5-bcfa-218bc5a1d6c8 app_session_ouya_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 app_session_package=tv.ouya.oobe app_session_current_activity=tv.ouya.console.launcher.agreements.AgreementsActivity app_session_start_tick=37 app_session_current_tick=598 app_session_active_ticks=561 app_session_last_analog_tick=597 app_session_last_digital_tick=32",
40 | "timestamp": 1434577793490,
41 | "name": "app_session_update",
42 | "uuid": "c8054c0c-ba8e-4024-afdd-31c123745e5e"
43 | },
44 | {
45 | "data": "app_session_uuid=a963561b-a6e8-49f5-bcfa-218bc5a1d6c8 app_session_ouya_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 app_session_package=tv.ouya.oobe app_session_current_activity=tv.ouya.oobe.CreateUserPromptActivity app_session_start_tick=37 app_session_current_tick=585 app_session_active_ticks=548 app_session_last_analog_tick=576 app_session_last_digital_tick=32",
46 | "timestamp": 1434577781047,
47 | "name": "app_session_update",
48 | "uuid": "0f9bcf75-5cfd-4c30-97f4-a6190f0fb861"
49 | },
50 | {
51 | "data": "app_session_uuid=a963561b-a6e8-49f5-bcfa-218bc5a1d6c8 app_session_ouya_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 app_session_package=tv.ouya.oobe app_session_current_activity=tv.ouya.oobe.UpdateActivity app_session_start_tick=37 app_session_current_tick=585 app_session_active_ticks=548 app_session_last_analog_tick=576 app_session_last_digital_tick=32",
52 | "timestamp": 1434577781039,
53 | "name": "app_session_update",
54 | "uuid": "a7b4bffd-55a6-4aa8-ad05-c2c36acc046c"
55 | },
56 | {
57 | "data": "app_session_uuid=a963561b-a6e8-49f5-bcfa-218bc5a1d6c8 app_session_ouya_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 app_session_package=tv.ouya.oobe app_session_current_activity=tv.ouya.oobe.UpdateActivity app_session_start_tick=37 app_session_current_tick=585 app_session_active_ticks=548 app_session_last_analog_tick=576 app_session_last_digital_tick=32",
58 | "timestamp": 1434577780686,
59 | "name": "app_session_update",
60 | "uuid": "0ee66da1-fbe4-4b09-a036-429c365be980"
61 | },
62 | {
63 | "data": "app_session_uuid=a963561b-a6e8-49f5-bcfa-218bc5a1d6c8 app_session_ouya_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 app_session_package=tv.ouya.oobe app_session_current_activity=tv.ouya.oobe.UpdateActivity app_session_start_tick=37 app_session_current_tick=585 app_session_active_ticks=548 app_session_last_analog_tick=576 app_session_last_digital_tick=32",
64 | "timestamp": 1434577780608,
65 | "name": "app_session_update",
66 | "uuid": "18780fea-89d3-4b34-9c60-b03eb2522b3f"
67 | },
68 | {
69 | "data": "app_session_uuid=a963561b-a6e8-49f5-bcfa-218bc5a1d6c8 app_session_ouya_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 app_session_package=tv.ouya.oobe app_session_current_activity=tv.ouya.oobe.UpdateActivity app_session_start_tick=37 app_session_current_tick=581 app_session_active_ticks=544 app_session_last_analog_tick=576 app_session_last_digital_tick=32",
70 | "timestamp": 1434577776955,
71 | "name": "app_session_update",
72 | "uuid": "fb6b0006-901b-4e78-925d-4d471bfe8d73"
73 | },
74 | {
75 | "data": "app_session_uuid=a963561b-a6e8-49f5-bcfa-218bc5a1d6c8 app_session_ouya_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 app_session_package=tv.ouya.oobe app_session_current_activity=tv.ouya.oobe.NetworkSetupActivity app_session_start_tick=37 app_session_current_tick=581 app_session_active_ticks=544 app_session_last_analog_tick=576 app_session_last_digital_tick=32",
76 | "timestamp": 1434577776942,
77 | "name": "app_session_update",
78 | "uuid": "82d25266-58bd-492b-b582-31c26b505ac2"
79 | },
80 | {
81 | "data": "app_session_uuid=a963561b-a6e8-49f5-bcfa-218bc5a1d6c8 app_session_ouya_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 app_session_package=tv.ouya.oobe app_session_current_activity=tv.ouya.oobe.NetworkSetupActivity app_session_start_tick=37 app_session_current_tick=581 app_session_active_ticks=544 app_session_last_analog_tick=576 app_session_last_digital_tick=32",
82 | "timestamp": 1434577776609,
83 | "name": "app_session_update",
84 | "uuid": "ccda1f7d-8c57-4ad1-ab46-7402927c40f7"
85 | },
86 | {
87 | "data": "app_session_uuid=a963561b-a6e8-49f5-bcfa-218bc5a1d6c8 app_session_ouya_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 app_session_package=tv.ouya.oobe app_session_current_activity=tv.ouya.oobe.NetworkSetupActivity app_session_start_tick=37 app_session_current_tick=581 app_session_active_ticks=544 app_session_last_analog_tick=576 app_session_last_digital_tick=32",
88 | "timestamp": 1434577776449,
89 | "name": "app_session_update",
90 | "uuid": "3d984c56-c2a5-4182-9794-185ef968b95d"
91 | },
92 | {
93 | "data": "app_session_uuid=a963561b-a6e8-49f5-bcfa-218bc5a1d6c8 app_session_ouya_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 app_session_package=tv.ouya.oobe app_session_current_activity=tv.ouya.oobe.NetworkSetupActivity app_session_start_tick=37 app_session_current_tick=577 app_session_active_ticks=540 app_session_last_analog_tick=576 app_session_last_digital_tick=32",
94 | "timestamp": 1434577772739,
95 | "name": "app_session_update",
96 | "uuid": "88e40ac3-dc0d-4a1d-be77-f7855854877c"
97 | },
98 | {
99 | "data": "app_session_uuid=a963561b-a6e8-49f5-bcfa-218bc5a1d6c8 app_session_ouya_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 app_session_package=tv.ouya.oobe app_session_current_activity=tv.ouya.oobe.LocaleActivity app_session_start_tick=37 app_session_current_tick=577 app_session_active_ticks=540 app_session_last_analog_tick=576 app_session_last_digital_tick=32",
100 | "timestamp": 1434577772731,
101 | "name": "app_session_update",
102 | "uuid": "7cb1fea0-5415-444c-ab0f-df36b4d4fa90"
103 | },
104 | {
105 | "data": "app_session_uuid=a963561b-a6e8-49f5-bcfa-218bc5a1d6c8 app_session_ouya_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 app_session_package=tv.ouya.oobe app_session_current_activity=tv.ouya.oobe.LocaleActivity app_session_start_tick=37 app_session_current_tick=577 app_session_active_ticks=540 app_session_last_analog_tick=576 app_session_last_digital_tick=32",
106 | "timestamp": 1434577772221,
107 | "name": "app_session_update",
108 | "uuid": "38cd9bcd-2277-419f-875c-6d195f148c02"
109 | },
110 | {
111 | "data": "app_session_uuid=a963561b-a6e8-49f5-bcfa-218bc5a1d6c8 app_session_ouya_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 app_session_package=tv.ouya.oobe app_session_current_activity=tv.ouya.oobe.LocaleActivity app_session_start_tick=37 app_session_current_tick=576 app_session_active_ticks=539 app_session_last_analog_tick=576 app_session_last_digital_tick=32",
112 | "timestamp": 1434577772087,
113 | "name": "app_session_update",
114 | "uuid": "4525614b-d158-4678-b559-53cabe75af1e"
115 | },
116 | {
117 | "data": "app_session_uuid=a963561b-a6e8-49f5-bcfa-218bc5a1d6c8 app_session_ouya_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 app_session_package=tv.ouya.oobe app_session_current_activity=tv.ouya.oobe.LocaleActivity app_session_start_tick=37 app_session_current_tick=77 app_session_active_ticks=40 app_session_last_analog_tick=71 app_session_last_digital_tick=32",
118 | "timestamp": 1434577272237,
119 | "name": "app_session_update",
120 | "uuid": "1f1fb7c4-d5fb-4c63-b344-e33afe1a4316"
121 | },
122 | {
123 | "data": "app_session_uuid=a963561b-a6e8-49f5-bcfa-218bc5a1d6c8 app_session_ouya_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 app_session_package=tv.ouya.oobe app_session_current_activity=tv.ouya.oobe.PairControllersActivity app_session_start_tick=37 app_session_current_tick=77 app_session_active_ticks=40 app_session_last_analog_tick=71 app_session_last_digital_tick=32",
124 | "timestamp": 1434577272229,
125 | "name": "app_session_update",
126 | "uuid": "1acaf070-969a-4638-8c3b-6f6203643f2c"
127 | },
128 | {
129 | "data": "app_session_uuid=a963561b-a6e8-49f5-bcfa-218bc5a1d6c8 app_session_ouya_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 app_session_package=tv.ouya.oobe app_session_current_activity=tv.ouya.oobe.PairControllersActivity app_session_start_tick=37 app_session_current_tick=76 app_session_active_ticks=39 app_session_last_analog_tick=71 app_session_last_digital_tick=32",
130 | "timestamp": 1434577271825,
131 | "name": "app_session_update",
132 | "uuid": "1316a488-2bcb-4294-9bac-584ae6bd5a12"
133 | },
134 | {
135 | "data": "app_session_uuid=a963561b-a6e8-49f5-bcfa-218bc5a1d6c8 app_session_ouya_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 app_session_package=tv.ouya.oobe app_session_current_activity=tv.ouya.oobe.PairControllersActivity app_session_start_tick=37 app_session_current_tick=76 app_session_active_ticks=39 app_session_last_analog_tick=71 app_session_last_digital_tick=32",
136 | "timestamp": 1434577271771,
137 | "name": "app_session_update",
138 | "uuid": "d66cb353-f249-42e2-82ad-e7c275cbebcf"
139 | },
140 | {
141 | "data": "app_session_uuid=a963561b-a6e8-49f5-bcfa-218bc5a1d6c8 app_session_ouya_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 app_session_package=tv.ouya.oobe app_session_current_activity=tv.ouya.oobe.PairControllersActivity app_session_start_tick=37 app_session_current_tick=47 app_session_active_ticks=10 app_session_last_analog_tick=32 app_session_last_digital_tick=32",
142 | "timestamp": 1434577242937,
143 | "name": "app_session_update",
144 | "uuid": "aa11379d-3345-4616-a902-be160340040c"
145 | },
146 | {
147 | "data": "app_session_uuid=a0e88f3f-e661-49d5-a59c-8b3c011a81c0 app_session_ouya_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 app_session_package=tv.ouya.console app_session_current_activity=tv.ouya.console.launcher.startup.PlayVideoActivity app_session_start_tick=32 app_session_current_tick=47 app_session_active_ticks=6 app_session_last_analog_tick=32 app_session_last_digital_tick=32",
148 | "timestamp": 1434577242929,
149 | "name": "app_session_update",
150 | "uuid": "3170b01a-362c-4311-bf88-b7249b5bf43b"
151 | },
152 | {
153 | "data": "app_session_uuid=a963561b-a6e8-49f5-bcfa-218bc5a1d6c8 app_session_ouya_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 app_session_package=tv.ouya.oobe app_session_current_activity=tv.ouya.oobe.PairControllersActivity app_session_start_tick=37 app_session_current_tick=47 app_session_active_ticks=10 app_session_last_analog_tick=32 app_session_last_digital_tick=32",
154 | "timestamp": 1434577242924,
155 | "name": "app_session_update",
156 | "uuid": "c88625ea-09ba-435f-8a24-435ed7c2f484"
157 | },
158 | {
159 | "data": "app_session_uuid=a0e88f3f-e661-49d5-a59c-8b3c011a81c0 app_session_ouya_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 app_session_package=tv.ouya.console app_session_current_activity=tv.ouya.console.launcher.startup.PlayVideoActivity app_session_start_tick=32 app_session_current_tick=38 app_session_active_ticks=6 app_session_last_analog_tick=32 app_session_last_digital_tick=32",
160 | "timestamp": 1434577233483,
161 | "name": "app_session_update",
162 | "uuid": "47f21fae-8ca2-405c-964d-9f747c8ff5d1"
163 | },
164 | {
165 | "data": "app_session_uuid=a963561b-a6e8-49f5-bcfa-218bc5a1d6c8 app_session_ouya_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 app_session_package=tv.ouya.oobe app_session_current_activity=tv.ouya.oobe.PairControllersActivity app_session_start_tick=37 app_session_current_tick=38 app_session_active_ticks=1 app_session_last_analog_tick=32 app_session_last_digital_tick=32",
166 | "timestamp": 1434577233480,
167 | "name": "app_session_update",
168 | "uuid": "bd519f90-aa42-461c-bf49-69ac6a78bb2b"
169 | },
170 | {
171 | "data": "app_session_uuid=a0e88f3f-e661-49d5-a59c-8b3c011a81c0 app_session_ouya_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 app_session_package=tv.ouya.console app_session_current_activity=tv.ouya.console.launcher.startup.PlayVideoActivity app_session_start_tick=32 app_session_current_tick=37 app_session_active_ticks=5 app_session_last_analog_tick=32 app_session_last_digital_tick=32",
172 | "timestamp": 1434577233029,
173 | "name": "app_session_update",
174 | "uuid": "47d09f5b-0fd1-46ea-a15c-439196446191"
175 | },
176 | {
177 | "data": "app_session_uuid=a963561b-a6e8-49f5-bcfa-218bc5a1d6c8 app_session_ouya_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 app_session_package=tv.ouya.oobe app_session_current_activity=tv.ouya.oobe.OOBEController app_session_start_tick=37 app_session_current_tick=37 app_session_active_ticks=0 app_session_last_analog_tick=32 app_session_last_digital_tick=32",
178 | "timestamp": 1434577233026,
179 | "name": "app_session_update",
180 | "uuid": "9b09e3f9-1d16-459c-8f1b-8aad8d688e22"
181 | },
182 | {
183 | "data": "app_session_uuid=a0e88f3f-e661-49d5-a59c-8b3c011a81c0 app_session_ouya_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 app_session_package=tv.ouya.console app_session_current_activity=tv.ouya.console.launcher.startup.PlayVideoActivity app_session_start_tick=32 app_session_current_tick=33 app_session_active_ticks=1 app_session_last_analog_tick=32 app_session_last_digital_tick=32",
184 | "timestamp": 1434577228909,
185 | "name": "app_session_update",
186 | "uuid": "bb2bfb8f-8d9a-4164-a59e-141116a9ddf7"
187 | },
188 | {
189 | "data": "app_session_uuid=a0e88f3f-e661-49d5-a59c-8b3c011a81c0 app_session_ouya_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 app_session_package=tv.ouya.console app_session_current_activity=tv.ouya.console.launcher.startup.PlayVideoActivity app_session_start_tick=32 app_session_current_tick=32 app_session_active_ticks=0 app_session_last_analog_tick=32 app_session_last_digital_tick=32",
190 | "timestamp": 1434577227905,
191 | "name": "app_session_update",
192 | "uuid": "0dd6ac90-7153-4b9d-a7c5-b7aac836b799"
193 | },
194 | {
195 | "data": "app_session_uuid=a0e88f3f-e661-49d5-a59c-8b3c011a81c0 app_session_ouya_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 app_session_package=tv.ouya.console app_session_current_activity=tv.ouya.console.launcher.startup.PlayVideoActivity app_session_start_tick=32 app_session_current_tick=32 app_session_active_ticks=0 app_session_last_analog_tick=32 app_session_last_digital_tick=32",
196 | "timestamp": 1434577227898,
197 | "name": "app_session_update",
198 | "uuid": "148093b2-7ad0-426f-950f-2d1574c0ebf4"
199 | },
200 | {
201 | "data": "app_session_uuid=817b5728-efa4-4029-821d-6d6a2962ebf5 app_session_ouya_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 app_session_package=tv.ouya.console app_session_current_activity=tv.ouya.console.launcher.startup.PlayVideoActivity app_session_start_tick=32 app_session_current_tick=32 app_session_active_ticks=0 app_session_last_analog_tick=32 app_session_last_digital_tick=32",
202 | "timestamp": 1434577227684,
203 | "name": "app_session_update",
204 | "uuid": "cab548f8-d2ca-4974-b567-45f1b9ffff73"
205 | },
206 | {
207 | "data": "app_session_uuid=c1c59721-7889-4d8a-83f3-a732f1bb3a03 app_session_ouya_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 app_session_package=tv.ouya.console app_session_current_activity=tv.ouya.console.launcher.guide.GuideActivity app_session_start_tick=32 app_session_current_tick=32 app_session_active_ticks=0 app_session_last_analog_tick=32 app_session_last_digital_tick=32",
208 | "timestamp": 1434577227684,
209 | "name": "app_session_update",
210 | "uuid": "5d3042bf-90c3-4e4f-a30a-723bc1753d78"
211 | },
212 | {
213 | "data": "session_uuid=e0eef5de-624c-42f8-9b1b-a0968a27eb03 session_start_tick=32 session_current_tick=32 session_last_analog_tick=32 session_last_digital_tick=32",
214 | "timestamp": 1434577227681,
215 | "name": "ouya_session_update",
216 | "uuid": "ee792b57-8cff-4868-bf01-4417613bc96b"
217 | }
218 | ]
219 |
--------------------------------------------------------------------------------
/api/devs.ouya.tv/api-v1-details.response-bundle-full.json:
--------------------------------------------------------------------------------
1 | {
2 | "bundle": {
3 | "apps": [
4 | {
5 | "gamerNumbers": [
6 | 1
7 | ],
8 | "genres": [
9 | "Adventure",
10 | "Kids List",
11 | "Puzzle/Trivia"
12 | ],
13 | "url": "ouya://launcher/details?app=com.GoldenTricycle.Clark",
14 | "latestVersion": {
15 | "apk": {
16 | "md5sum": "a674b6c205502d9b4a907ade90307ba0"
17 | },
18 | "versionNumber": "1.24",
19 | "uuid": "7230ac05-d24c-4347-a990-7ac283c17063"
20 | },
21 | "inAppPurchases": true,
22 | "promotedProduct": {
23 | "type": "entitlement",
24 | "developerName": "GoldenTricycle / Hahn Film AG",
25 | "identifier": "clark_full_license_test",
26 | "name": "Clarc Full Version",
27 | "localPrice": 3.99,
28 | "originalPrice": 3.99,
29 | "percentOff": 0,
30 | "currency": "USD",
31 | "description": "This item unlocks the full game with 25 levels, more than 100 puzzles and more than 10 hours of gameplay."
32 | },
33 | "premium": false,
34 | "type": "app",
35 | "package": "com.GoldenTricycle.Clark",
36 | "updated_at": 1384854785,
37 | "updatedAt": "2013-11-19T09:53:05Z",
38 | "title": "CLARC",
39 | "image": "https://www.filepicker.io/api/file/VzCsgc3BTx2RiGpTr4Uw",
40 | "contentRating": "Everyone",
41 | "rating": {
42 | "count": 716,
43 | "average": 4.25
44 | }
45 | },
46 | {
47 | "gamerNumbers": [
48 | 1
49 | ],
50 | "genres": [
51 | "Adventure",
52 | "Kids List",
53 | "Platformer",
54 | "Puzzle/Trivia",
55 | "Short on Time?"
56 | ],
57 | "url": "ouya://launcher/details?app=com.Tripleslash.MagneticByNature",
58 | "latestVersion": {
59 | "apk": {
60 | "md5sum": "292ab563a8433605cdf23451f11b08eb"
61 | },
62 | "versionNumber": "1.1",
63 | "uuid": "3cf737cb-8056-4749-be66-e0c6a6fd2d47"
64 | },
65 | "inAppPurchases": true,
66 | "promotedProduct": {
67 | "type": "entitlement",
68 | "developerName": "Team Tripleslash",
69 | "identifier": "MBN",
70 | "name": "Magnetic By Nature",
71 | "localPrice": 9.99,
72 | "originalPrice": 9.99,
73 | "percentOff": 0,
74 | "currency": "USD",
75 | "description": ""
76 | },
77 | "premium": false,
78 | "type": "app",
79 | "package": "com.Tripleslash.MagneticByNature",
80 | "updated_at": 1413442225,
81 | "updatedAt": "2014-10-16T06:50:25Z",
82 | "title": "Magnetic By Nature",
83 | "image": "https://www.filepicker.io/api/file/ZdNdXMJ9SGKWt606otxg",
84 | "contentRating": "9+",
85 | "rating": {
86 | "count": 101,
87 | "average": 4.09
88 | }
89 | },
90 | {
91 | "gamerNumbers": [
92 | 1
93 | ],
94 | "genres": [
95 | "Arcade/Pinball",
96 | "Platformer",
97 | "Puzzle/Trivia"
98 | ],
99 | "url": "ouya://launcher/details?app=com.scaryrobot.badbadbots",
100 | "latestVersion": {
101 | "apk": {
102 | "md5sum": "dfeb384a80a2cb4edb81124549378876"
103 | },
104 | "versionNumber": "1.0.1",
105 | "uuid": "6baabf0d-ab12-45bf-ba84-d939fd449553"
106 | },
107 | "inAppPurchases": true,
108 | "promotedProduct": {
109 | "type": "entitlement",
110 | "developerName": "Scary Robot Productions",
111 | "identifier": "stb_full_game",
112 | "name": "Unlock the Full Game",
113 | "localPrice": 1.99,
114 | "originalPrice": 1.99,
115 | "percentOff": 0,
116 | "currency": "USD",
117 | "description": "Unlock the full game, including 75 new levels."
118 | },
119 | "premium": false,
120 | "type": "app",
121 | "package": "com.scaryrobot.badbadbots",
122 | "updated_at": 1393472817,
123 | "updatedAt": "2014-02-27T03:46:57Z",
124 | "title": "Stop The Bots",
125 | "image": "https://www.filepicker.io/api/file/8oZUmfyQ226UHr3DE5Pw",
126 | "contentRating": "Everyone",
127 | "rating": {
128 | "count": 248,
129 | "average": 3.79
130 | }
131 | },
132 | {
133 | "gamerNumbers": [
134 | 1
135 | ],
136 | "genres": [
137 | "Multiplayer",
138 | "Platformer",
139 | "Short on Time?"
140 | ],
141 | "url": "ouya://launcher/details?app=com.Thinice.TwinRobots",
142 | "latestVersion": {
143 | "apk": {
144 | "md5sum": "8f7b2014d649297df255ef6ddf0380b5"
145 | },
146 | "versionNumber": "1.83",
147 | "uuid": "d6192b56-9ca9-4f06-901c-e6b585b76091"
148 | },
149 | "inAppPurchases": true,
150 | "promotedProduct": {
151 | "type": "entitlement",
152 | "developerName": "Thinice",
153 | "identifier": "TwinRobots_Unlock",
154 | "name": "Twin Robots - Unlock all levels",
155 | "localPrice": 4.99,
156 | "originalPrice": 4.99,
157 | "percentOff": 0,
158 | "currency": "USD",
159 | "description": ""
160 | },
161 | "premium": false,
162 | "type": "app",
163 | "package": "com.Thinice.TwinRobots",
164 | "updated_at": 1410191849,
165 | "updatedAt": "2014-09-08T15:57:29Z",
166 | "title": "Twin Robots",
167 | "image": "https://www.filepicker.io/api/file/yHSrQGsSTSGBodBUnvss",
168 | "contentRating": "9+",
169 | "rating": {
170 | "count": 196,
171 | "average": 3.58
172 | }
173 | }
174 | ],
175 | "currency": "EUR",
176 | "price": 6.99,
177 | "contentRating": "9+",
178 | "purchased": false,
179 | "games": [
180 | "com.GoldenTricycle.Clark",
181 | "com.Tripleslash.MagneticByNature",
182 | "com.Thinice.TwinRobots",
183 | "com.scaryrobot.badbadbots"
184 | ],
185 | "purchaseUrl": "ouya://launcher/purchase?developer=ec1a9ccd-373f-4047-bd07-36466ab7e25d&product=ROBOBUNDLE"
186 | },
187 | "buttons": [],
188 | "apps": [],
189 | "muted": true,
190 | "metaData": [
191 | "Golden Tricycle",
192 | "Team Tripleslash",
193 | "Scary Robot",
194 | "Thinice"
195 | ],
196 | "mediaTiles": [
197 | {
198 | "url": "https://vimeo.com/84689664",
199 | "type": "video"
200 | },
201 | {
202 | "url": "http://vimeo.com/112085754",
203 | "type": "video"
204 | },
205 | {
206 | "url": "https://vimeo.com/87213061",
207 | "type": "video"
208 | },
209 | {
210 | "url": "https://vimeo.com/82265024",
211 | "type": "video"
212 | },
213 | {
214 | "urls": {
215 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150202-3-6hikjv.jpeg",
216 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/oivu9a_RackMultipart20150202-15-1sg3fmt"
217 | },
218 | "type": "image"
219 | },
220 | {
221 | "urls": {
222 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-9dup5r.jpeg",
223 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/it2iwu_RackMultipart20150203-15-1rsk4n7"
224 | },
225 | "type": "image"
226 | },
227 | {
228 | "urls": {
229 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-1lsw4o3.jpeg",
230 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/r2829b_RackMultipart20150203-15-1mz6yga"
231 | },
232 | "type": "image"
233 | },
234 | {
235 | "urls": {
236 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-v8f93p.jpeg",
237 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/4smu51_RackMultipart20150203-15-60bm65"
238 | },
239 | "type": "image"
240 | },
241 | {
242 | "urls": {
243 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-1rrfr00.jpeg",
244 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/xx5n68_RackMultipart20150203-15-8tyd1h"
245 | },
246 | "type": "image"
247 | },
248 | {
249 | "urls": {
250 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-o5quh2.jpeg",
251 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/n2w6zx_RackMultipart20150203-15-khs6c1"
252 | },
253 | "type": "image"
254 | },
255 | {
256 | "urls": {
257 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-gmo8ch.jpeg",
258 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/lzgp7x_RackMultipart20150203-15-qxzbvu"
259 | },
260 | "type": "image"
261 | },
262 | {
263 | "urls": {
264 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-j5xj97.jpeg",
265 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/d1yia6_RackMultipart20150203-15-1ckakhz"
266 | },
267 | "type": "image"
268 | },
269 | {
270 | "urls": {
271 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-1xj6qi6.jpeg",
272 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/2mmztz_RackMultipart20150203-15-12hxjwy"
273 | },
274 | "type": "image"
275 | },
276 | {
277 | "urls": {
278 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-xfmb0v.jpeg",
279 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/ml0cbi_RackMultipart20150203-15-iyo0ya"
280 | },
281 | "type": "image"
282 | },
283 | {
284 | "urls": {
285 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-1jn5r7e.jpeg",
286 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/h9gr8e_RackMultipart20150203-15-1pux7n7"
287 | },
288 | "type": "image"
289 | },
290 | {
291 | "urls": {
292 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-a0ofa.jpeg",
293 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/a7ymrn_RackMultipart20150203-15-1f6hwe7"
294 | },
295 | "type": "image"
296 | },
297 | {
298 | "urls": {
299 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-1tdqlsg.jpeg",
300 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/b7tad7_RackMultipart20150203-15-1suh5wt"
301 | },
302 | "type": "image"
303 | },
304 | {
305 | "urls": {
306 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-1s4ovl8.jpeg",
307 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/s3siag_RackMultipart20150203-15-ozm6k9"
308 | },
309 | "type": "image"
310 | },
311 | {
312 | "urls": {
313 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-ynvowx.jpeg",
314 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/5edm7z_RackMultipart20150203-15-5vh22f"
315 | },
316 | "type": "image"
317 | },
318 | {
319 | "urls": {
320 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-1oeosg8.jpeg",
321 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/teee71_RackMultipart20150203-15-1vls2my"
322 | },
323 | "type": "image"
324 | },
325 | {
326 | "urls": {
327 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-1rp8ioe.jpeg",
328 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/ofp916_RackMultipart20150203-15-1nvqswn"
329 | },
330 | "type": "image"
331 | },
332 | {
333 | "urls": {
334 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-nuuwya.jpeg",
335 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/3w19rt_RackMultipart20150203-15-uko82z"
336 | },
337 | "type": "image"
338 | },
339 | {
340 | "urls": {
341 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-1ffdniz.jpeg",
342 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/ybe0uw_RackMultipart20150203-15-s9qlam"
343 | },
344 | "type": "image"
345 | },
346 | {
347 | "urls": {
348 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-7xljq4.jpeg",
349 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/c7yl4p_RackMultipart20150203-15-mq9mod"
350 | },
351 | "type": "image"
352 | },
353 | {
354 | "urls": {
355 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-6mnqij.jpeg",
356 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/pakgt_RackMultipart20150203-15-6bwsmp"
357 | },
358 | "type": "image"
359 | },
360 | {
361 | "urls": {
362 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-1krrt1f.jpeg",
363 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/tnojnx_RackMultipart20150203-15-17kcxzw"
364 | },
365 | "type": "image"
366 | },
367 | {
368 | "urls": {
369 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-gmqqox.jpeg",
370 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/lweo58_RackMultipart20150203-15-1cwiytp"
371 | },
372 | "type": "image"
373 | },
374 | {
375 | "urls": {
376 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-lvop3m.jpeg",
377 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/1vo70l_RackMultipart20150203-15-v164w7"
378 | },
379 | "type": "image"
380 | },
381 | {
382 | "urls": {
383 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-1l8hwmj.jpeg",
384 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/iyp1um_RackMultipart20150203-15-aq3pvk"
385 | },
386 | "type": "image"
387 | },
388 | {
389 | "urls": {
390 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-1talrh8.jpeg",
391 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/2mg5u_RackMultipart20150203-15-fygoqx"
392 | },
393 | "type": "image"
394 | },
395 | {
396 | "urls": {
397 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-1ki5wfc.jpeg",
398 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/2qos5v_RackMultipart20150203-15-1u70f29"
399 | },
400 | "type": "image"
401 | },
402 | {
403 | "urls": {
404 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-1hm6ppk.jpeg",
405 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/9fe0c1_RackMultipart20150203-15-186dcnu"
406 | },
407 | "type": "image"
408 | },
409 | {
410 | "urls": {
411 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-etc8xe.jpeg",
412 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/tfsn92_RackMultipart20150203-15-112zb8a"
413 | },
414 | "type": "image"
415 | },
416 | {
417 | "urls": {
418 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-c0ygib.jpeg",
419 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/5amjzu_RackMultipart20150203-15-8s2tg2"
420 | },
421 | "type": "image"
422 | },
423 | {
424 | "urls": {
425 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-1ob8z47.jpeg",
426 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/cqadpo_RackMultipart20150203-15-wngkd6"
427 | },
428 | "type": "image"
429 | },
430 | {
431 | "urls": {
432 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-kyy1h2.jpeg",
433 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/td2kt9_RackMultipart20150203-15-1avgqyl"
434 | },
435 | "type": "image"
436 | },
437 | {
438 | "urls": {
439 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-16ybd5l.jpeg",
440 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/eavtya_RackMultipart20150203-15-1kmbygh"
441 | },
442 | "type": "image"
443 | },
444 | {
445 | "urls": {
446 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-df2gxi.jpeg",
447 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/ffitne_RackMultipart20150203-15-3srbzi"
448 | },
449 | "type": "image"
450 | },
451 | {
452 | "urls": {
453 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-1dddd6w.jpeg",
454 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/7eecuz_RackMultipart20150203-15-zwnx6u"
455 | },
456 | "type": "image"
457 | },
458 | {
459 | "urls": {
460 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-10j3uu.jpeg",
461 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/pzyki0_RackMultipart20150203-15-i4pd2l"
462 | },
463 | "type": "image"
464 | },
465 | {
466 | "urls": {
467 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-1kg7cja.jpeg",
468 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/hw312z_RackMultipart20150203-15-1uuf5gp"
469 | },
470 | "type": "image"
471 | },
472 | {
473 | "urls": {
474 | "thumbnail": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/thumbnails/thumbnail20150203-3-33hwsd.jpeg",
475 | "full": "https://s3.amazonaws.com/ouya-screenshots/be239ca4-10fd-42dd-89cd-1806e80b1362/u9ronc_RackMultipart20150203-15-1u4k10p"
476 | },
477 | "type": "image"
478 | }
479 | ],
480 | "description": "CLARC, Magnetic By Nature, Stop The Bots, & Twin Robots all for 60% off the price of purchasing them all separately! This bundle will only be available until February 17th, so act faster than a cyborg on skates!\r\n\r\nAbout CLARC\r\nCLARC is an action-loaded puzzle adventure. It combines complex spatial puzzles with arcade style action elements and an epic storyline. As the story unfolds, the nerdy forklift robot Clarc will encounter partying robots, attractive nuclear missiles, intoxicated supercomputers, save the facility from an intruding spaceship and kill M.O.T.H.E.R. CLARC features 25 levels with 100 puzzles and more than 10 hours of gaming. Our grid-based gameplay and tight controls will give you the retro feel of your first console.\r\n\r\nAdditional language support for German, Spanish, Russian, and French.\r\n\r\n\r\nAbout Magnetic By Nature\r\nMagnetic By Nature is platforming without platforms: a fast-paced, single-player, 2D adventure mixing fluid motion, split-second decision making, machine-age visuals, and a dynamic soundscape. Unique magnet physics propel the player from one challenge to the next. Point One, the last remaining robot, must journey through dangerous caverns and forgotten ruins to reactivate friends damaged in a magnetic cataclysm.\r\n\r\nFeaturing:\r\n• physics-based puzzles action\r\n• cross platform leaderboards\r\n• 120+ levels, including unlockable challenges and hidden bonus rounds!\r\n• 100+ optional collectibles requiring greater skill\r\n• 2 unlockable Speedrun play modes\r\n• 9 types of magnets\r\n• 2 types of magnetic force fields\r\n\r\nAccolades:\r\n• 2014 Indie Mix Featured Game\r\n• Best Developed Game And Audience Choice Award - 2013 Utah Game Wars\r\n• Soundtrack featured in Loudr’s Game Music Bundle #7\r\n• \"Magnetic By Nature delivers an unforgettable experience\" - Hardcore Gamer\r\n\r\n\r\nAbout Stop The Bots\r\nOnly you can stop the robot filled alien ship from attacking Earth by sneaking on board and disabling it from the inside! \"Stop The Bots\" perfectly blends arcade action and logic puzzles over 90 brain bending levels!\r\n\r\n\r\nAbout Twin Robots\r\nRescue your twin and find the way out of each level together!\r\nSwitch control between the two robots at any time, or even better: play with a friend in local multiplayer!\r\nYou'll be running, jumping & solving puzzles together, but beware: Both robots are battery-powered so they consume energy in everything they do. Watch out for their battery levels!\r\n\r\nNew in this update:\r\n- Changed leaderboards to a self-hosted solution.\r\n- Fixed a bug that made the robots fall through the floor when jumping from a moving platform.",
481 | "title": "ROBO GAME BUNDLE!"
482 | }
483 |
--------------------------------------------------------------------------------