Skip to content

Instantly share code, notes, and snippets.

@JeremiePat
Last active August 12, 2016 13:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JeremiePat/f83f3cb00471c1b90d126fd6989256eb to your computer and use it in GitHub Desktop.
Save JeremiePat/f83f3cb00471c1b90d126fd6989256eb to your computer and use it in GitHub Desktop.
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "https://developer.mozilla.org/browser-compat-data-schema/1.0",
"definitions": {
"featureSetLevel5": {
"type": "object",
"additionalProperties": {
"oneOf": [
{ "$ref": "#/definitions/featureSetLevel4" },
{ "$ref": "#/definitions/featureSetLevel3" },
{ "$ref": "#/definitions/featureSetLevel2" },
{ "$ref": "#/definitions/featureSetLevel1" },
{ "$ref": "#/definitions/featureSet" },
{ "$ref": "#/definitions/feature" }
]
}
},
"featureSetLevel4": {
"type": "object",
"additionalProperties": {
"oneOf": [
{ "$ref": "#/definitions/featureSetLevel3" },
{ "$ref": "#/definitions/featureSetLevel2" },
{ "$ref": "#/definitions/featureSetLevel1" },
{ "$ref": "#/definitions/featureSet" },
{ "$ref": "#/definitions/feature" }
]
}
},
"featureSetLevel3": {
"type": "object",
"additionalProperties": {
"oneOf": [
{ "$ref": "#/definitions/featureSetLevel2" },
{ "$ref": "#/definitions/featureSetLevel1" },
{ "$ref": "#/definitions/featureSet" },
{ "$ref": "#/definitions/feature" }
]
}
},
"featureSetLevel2": {
"type": "object",
"oneOf": [
{ "$ref": "#/definitions/featureSetLevel1" },
{ "$ref": "#/definitions/featureSet" },
{ "$ref": "#/definitions/feature" }
]
},
"featureSetLevel1": {
"type": "object",
"oneOf": [
{ "$ref": "#/definitions/featureSet" },
{ "$ref": "#/definitions/feature" }
]
},
"featureSet": {
"type": "object",
"additionalProperties": { "$ref": "#/definitions/feature" }
},
"feature": {
"type": "object",
"required": [ "platforms", "status" ],
"properties" : {
"name" : { "$ref": "#/definitions/l10nStrings" },
"platforms": { "$ref": "#/definitions/platforms" },
"status" : { "$ref": "#/definitions/status" }
}
},
"platforms": {
"type": "object",
"additionalProperties": false,
"properties": {
"Android" : { "$ref": "#/definitions/browser" },
"Chrome" : { "$ref": "#/definitions/browser" },
"Chrome for Android" : { "$ref": "#/definitions/browser" },
"Edge" : { "$ref": "#/definitions/browser" },
"Edge Mobile" : { "$ref": "#/definitions/browser" },
"Firefox" : { "$ref": "#/definitions/browser" },
"Firefox for Android": { "$ref": "#/definitions/browser" },
"Internet Explorer" : { "$ref": "#/definitions/browser" },
"IE Mobile" : { "$ref": "#/definitions/browser" },
"Node.js" : { "$ref": "#/definitions/browser" },
"Opera" : { "$ref": "#/definitions/browser" },
"Opera Mobile" : { "$ref": "#/definitions/browser" },
"Safari" : { "$ref": "#/definitions/browser" },
"Safari Mobile" : { "$ref": "#/definitions/browser" },
"Servo" : { "$ref": "#/definitions/browser" }
}
},
"browser": {
"type": "object",
"properties": {
"support": {
"oneOf": [
{ "type": "null" },
{ "type": "boolean" },
{ "type": "string", "pattern": "^\\d+(\\.\\d+){0,}$" }
]
},
"notes": { "$ref": "#/definitions/l10nStrings"}
},
"required": ["support"],
"additionalProperties": false
},
"status": {
"type": "object",
"required": [ "experimental", "standardized", "stable", "obsolete" ],
"properties": {
"experimental": { "type": "boolean" },
"standardized": { "type": "boolean" },
"stable" : { "type": "boolean" },
"obsolete" : { "type": "boolean" }
}
},
"l10nStrings": {
"oneOf": [
{
"type" : "array",
"items": { "type": "string" }
}, {
"type": "object",
"patternProperties": {
"^[a-z]{2,3}(-[a-z]{2,3})?$": { "type": "array", "items": { "type": "string" } }
}
}
]
}
},
"type": "object",
"additionalProperties": {
"anyOf": [
{ "$ref": "#/definitions/feature" },
{ "$ref": "#/definitions/featureSet" },
{ "$ref": "#/definitions/featureSetLevel1" },
{ "$ref": "#/definitions/featureSetLevel2" },
{ "$ref": "#/definitions/featureSetLevel3" },
{ "$ref": "#/definitions/featureSetLevel4" },
{ "$ref": "#/definitions/featureSetLevel5" }
]
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment