open-source-ios-apps/.github/schema.json
2016-08-09 05:50:39 -07:00

168 lines
5.2 KiB
JSON

{
"$schema": "http://json-schema.org/draft-04/schema#",
"$id": "https://raw.githubusercontent.com/dkhamsing/open-source-ios-apps/master/.github/schema.json",
"type": "object",
"properties": {
"title": {
"type": "string"
},
"subtitle": {
"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
},
"license": {
"title": "Project License",
"description": "The license that the project's source is under.",
"type": "string",
"enum": ["mit", "mpl-2.0", "gpl-3.0", "lgpl-3.0", "unlicense", "bsd-2-clause", "isc", "lgpl-2.1", "gpl-2.0", "apache-2.0", "cc0-1.0", "artistic-2.0", "bsd-3-clause", "agpl-3.0", "epl-1.0", "other"],
"default": "other"
},
"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\\/.*?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": []
},
"suggested_by": {
"title": "Suggested By",
"description": "Name of person who suggested project.",
"type": "string"
},
"date_added": {
"title": "Date Added",
"description": "Date when project was added.",
"type": "string"
},
"screenshots": {
"title": "Screenshots",
"description": "Links to screenshot images.",
"type": "array"
}
},
"required": ["title", "category", "source"],
"additionalProperties": false
}
}
},
"required": ["title", "categories", "projects"],
"additionalProperties": false
}