Add some default values
[ouya-game-data.git] / schema.json
index 41602a014f0094b000a2994d47962c5c939f6088..45cbb769c42696a9d3dee437d53fae6bf0380001 100644 (file)
@@ -1,6 +1,6 @@
 {
     "$schema": "http://json-schema.org/draft-07/schema#",
-    "$id": "http://example.com/ouya-game.schema.json",
+    "$id": "http://cweiske.de/ouya-game.schema.json",
     "title": "OUYA game metadata",
     "description": "Game data importable in OUYA API servers.",
     "type": "object",
     "additionalProperties": false,
     "properties": {
         "packageName": {
-            "description": "Java package name (\"com.vendor.gamename\")",
-            "type": "string"
+            "description": "Java package names",
+            "type": "string",
+            "examples": [
+                "com.vendor.gamename"
+            ]
         },
 
         "title": {
                 "properties": {
 
                     "name": {
-                        "description": "Human readable version number ('1.6')",
-                        "type": "string"
+                        "description": "Human readable version number",
+                        "type": "string",
+                        "examples": [
+                            "1.6"
+                        ]
                     },
 
                     "versionCode": {
                         "description": "APK-internal version code. Run \"aapt dump badging file.apk\", field \"versionCode\"",
-                        "type": "string"
+                        "type": ["string", "null"]
                     },
 
                     "uuid": {
                     "date": {
                         "description": "When the version has been released",
                         "type": "string",
-                        "format": "date"
+                        "format": "date|datetime"
                     },
 
                     "latest": {
 
         "media": {
             "type": "object",
-            "FIXME": ""
+            "required": [
+                "discover",
+                "large"
+            ],
+            "additionalProperties": false,
+            "properties": {
+                "discover": {
+                    "description": "Image for the OUYA discover store. FIXME: Size",
+                    "type": "string",
+                    "format": "url"
+                },
+
+                "large": {
+                    "description": "Large game cover image for the store details page.",
+                    "type": "string",
+                    "format": "url"
+                },
+
+                "video": {
+                    "description": "Video for the store details page. Vimeo and Youtube URLs supported",
+                    "type": "string",
+                    "format": "url"
+                },
+
+                "screenshots": {
+                    "description": "Additional images for the store details page.",
+                    "type": "array",
+                    "items": {
+                        "type": "string",
+                        "format": "url"
+                    }
+                },
+
+                "details": {
+                    "description": "Images and videos for the details page. Can be in any order. If no detail images and videos are given, the large image, video and screenshots are used instead",
+                    "type": "array",
+                    "items": {
+                        "type": "object",
+                        "required": [
+                            "type",
+                            "url"
+                        ],
+                        "additionalProperties": false,
+                        "properties": {
+                            "type": {
+                                "description": "Medium type: image or video",
+                                "type": "string",
+                                "enum": ["image", "video"]
+                            },
+
+                            "url": {
+                                "description": "Image URL or video URL. Vimeo and Youtube URLs supported",
+                                "type": "string",
+                                "format": "url"
+                            },
+
+                            "thumb": {
+                                "description": "Small preview image",
+                                "type": "string",
+                                "format": "url"
+                            }
+                        }
+                    }
+                }
+            }
         },
 
         "developer": {
                 "supportEmail": {
                     "description": "E-Mail address for support questions",
                     "type": "string",
-                    "format": "email"
+                    "format": "email",
+                    "default": null
                 },
 
                 "supportPhone": {
                     "description": "Telephone number",
-                    "type": "string"
+                    "type": "string",
+                    "default": null
                 },
 
                 "founder": {
                     "description": "If the developer was an OUYA founder",
-                    "type": "boolean"
+                    "type": "boolean",
+                    "default": false
                 }
             }
         },
                 },
 
                 "average": {
-                    "description": "Average rating for this game (0-5)",
+                    "description": "Average rating for this game",
                     "type": "number",
-                    "minimum": 0
+                    "minimum": 0,
+                    "maximum": 5
                 },
 
                 "count": {
         },
 
         "products": {
+            "description": "Items that could be bought via the discover store",
             "type": "array",
             "items": {
-                "FIXME": ""
+                "type": "object",
+                "required": [
+                    "identifier",
+                    "name",
+                    "description",
+                    "localPrice",
+                    "originalPrice",
+                    "currency"
+                ],
+                "additionalProperties": false,
+                "properties": {
+
+                    "promoted": {
+                        "description": "If this product is the currently promoted/visible one",
+                        "type": "boolean"
+                    },
+
+                    "identifier": {
+                        "description": "Internal key",
+                        "type": "string",
+                        "examples": [
+                            "full_version"
+                        ]
+                    },
+
+                    "name": {
+                        "description": "Human readable name",
+                        "type": "string",
+                        "examples": [
+                            "Unlock full game"
+                        ]
+                    },
+
+                    "description": {
+                        "description": "Explanation of the features you will buy",
+                        "type": "string"
+                    },
+
+                    "localPrice": {
+                        "description": "Current price (maybe discounted)",
+                        "type": "number"
+                    },
+
+                    "originalPrice": {
+                        "description": "Previous price",
+                        "type": "number"
+                    },
+
+                    "currency": {
+                        "description": "Three-letter currency code, depending on the player that was logged in",
+                        "type": "string",
+                        "enum": ["EUR", "USD"]
+                    }
+                }
             }
         }
     }