{ "$schema": "http://json-schema.org/draft-04/schema#", "$id": "https://raw.githubusercontent.com/dkhamsing/open-source-ios-apps/master/schema.json", "type": "object", "properties": { "title": { "type": "string" }, "description": { "type": "string" }, "header": { "type": "string" }, "footer": { "type": "string" }, "categories": { "type": "array", "uniqueItems": true, "items": { "title": "Category Object", "description": "A category to group project objects under.", "properties": { "title": { "title": "Category Title", "description": "A human-readable identifier for the category.", "type": "string" }, "id": { "title": "Category Identifier", "description": "A short identifier designed for programs. It should only contain lowercase alphanumeric characters and a - (dash) for replacing spaces.", "type": "string", "pattern": "^[^A-Z_ ]+$" }, "description": { "title": "Category Description", "description": "A description of the category meant to be provided to the user.", "type": "string", "default": "" }, "parent": { "title": "Category Parent", "description": "Makes the current category a subcategory of the category with an id that matches this value.", "type": ["string", "null"], "default": null } }, "required": ["title", "id"], "additionalProperties": false } }, "projects": { "type": "array", "uniqueItems": true, "items": { "title": "Project Object", "description": "An object that holds all the information for a specific project.", "properties": { "title": { "title": "Project Title", "description": "The official title of the project.", "type": "string" }, "category": { "title": "Project Category", "description": "The category or list of categories that the project falls under. If it is a list, the categories should be ordered from most to least relevant/applicable to the project.", "type": ["string", "array"], "items": { "type": "string" } }, "description": { "title": "Project Description", "description": "A brief 1 sentence summary of the project.", "type": "string" }, "lang": { "title": "Project Language", "description": "A three-character ISO 639-2 code representing the primary language of the project, or a list of such codes, with the primary language first.", "type": ["string", "array"], "minLength": 3, "maxLength": 3, "minItems": 1, "items": { "type": "string", "minLength": 3, "maxLength": 3 }, "default": "eng" }, "country": { "title": "Project Country", "description": "The country that the project operates out of or the country the project is designed for (if designed for a specific location). Null if country is unclear/unspecified.", "type": ["string", "null"], "minLength": 2, "maxLength": 2, "default": null }, "source": { "title": "Project Source", "description": "A URL where the source code to the project can be found.", "type": "string", "pattern": "^https?:\\/\\/.*?\\..*$" }, "homepage": { "title": "Project Homepage", "description": "The URL for the project's homepage.", "type": ["string", "null"], "pattern": "^https?:\\/\\/.*?\\..*$", "default": null }, "itunes": { "title": "Project iTunes Page", "description": "The URL for iTunes page for the project's app.", "type": ["string", "null"], "pattern": "^https:\\/\\/itunes\\.apple\\.com\\/(in\\/)?app\\/([^\\/]+\\/)?id[0-9]+$", "default": null }, "stars": { "title": "Project Stars", "description": "The number of stars a project has on Github, or null if the project is not a Github project.", "type": ["null", "number"], "multipleOf": 1.0, "minimum": 0, "default": null }, "tags": { "title": "Project Tags", "description": "A place to put any metadata for a project. The items can be any type.", "type": "array", "default": [] } }, "required": ["title", "category", "source"], "additionalProperties": false } } }, "required": ["title", "categories", "projects"], "additionalProperties": false }