blob: 650d2a862254ba1819fc7ac8e60c4c2849ba216f [file] [edit]
{
"$schema": "http://json-schema.org/draft-07/schema#",
"definitions": {
"browser_type": {
"type": "string",
"enum": ["desktop", "mobile", "xr", "server"]
},
"browser_engine": {
"type": "string",
"enum": [
"Blink",
"EdgeHTML",
"Gecko",
"Presto",
"Trident",
"WebKit",
"V8"
]
},
"browser_name": {
"type": "string",
"description": "Browser ID.",
"enum": [
"bun",
"chrome",
"chrome_android",
"deno",
"edge",
"firefox",
"firefox_android",
"ie",
"nodejs",
"oculus",
"opera",
"opera_android",
"safari",
"safari_ios",
"samsunginternet_android",
"webview_android",
"webview_ios"
]
},
"upstream_browser_name": {
"type": "string",
"description": "Upstream browser ID.",
"enum": ["chrome", "chrome_android", "firefox", "safari", "safari_ios"]
},
"browser_status": {
"type": "string",
"enum": ["retired", "current", "beta", "nightly", "esr", "planned"]
},
"browsers": {
"type": "object",
"propertyNames": {
"$ref": "#/definitions/browser_name"
},
"additionalProperties": {
"$ref": "#/definitions/browser_statement"
},
"minProperties": 1,
"maxProperties": 1,
"errorMessage": {
"minProperties": "A browser must be described within the file.",
"maxProperties": "Each browser JSON file may only describe one browser."
},
"tsType": "Record<BrowserName, BrowserStatement>"
},
"browser_statement": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Browser brand name.",
"examples": ["Firefox", "Firefox Android", "Chrome"]
},
"type": {
"$ref": "#/definitions/browser_type",
"description": "Platform the browser runs on.",
"tsType": "BrowserType"
},
"upstream": {
"type": "string",
"description": "Upstream browser this browser derives from.",
"tsType": "BrowserName"
},
"preview_name": {
"type": "string",
"description": "Name of the browser's preview channel.",
"examples": ["Nightly", "TP"]
},
"pref_url": {
"type": "string",
"description": "URL of the page where feature flags can be changed.",
"examples": ["about:config", "chrome://flags"]
},
"accepts_flags": {
"type": "boolean",
"description": "Whether the browser supports feature flags that enable or disable features."
},
"accepts_webextensions": {
"type": "boolean",
"description": "Whether the browser supports extensions."
},
"releases": {
"type": "object",
"additionalProperties": { "$ref": "#/definitions/release_statement" },
"description": "Releases of this browser.",
"tsType": "{ [version: string]: ReleaseStatement };"
}
},
"required": [
"name",
"type",
"releases",
"accepts_flags",
"accepts_webextensions"
],
"additionalProperties": false
},
"release_statement": {
"type": "object",
"properties": {
"release_date": {
"type": "string",
"format": "date",
"description": "When this version was released or will be released (`YYYY-MM-DD`)."
},
"release_notes": {
"type": "string",
"format": "uri",
"pattern": "^https://",
"description": "Link to the release notes or changelog."
},
"status": {
"$ref": "#/definitions/browser_status",
"description": "Where in the lifetime cycle this release is.",
"tsType": "BrowserStatus"
},
"engine": {
"$ref": "#/definitions/browser_engine",
"description": "Browser engine name.",
"tsType": "BrowserEngine"
},
"engine_version": {
"type": "string",
"description": "Engine version used in this release."
}
},
"required": ["status"],
"dependencies": {
"engine": ["engine_version"]
},
"additionalProperties": false
}
},
"title": "BrowserDataFile",
"type": "object",
"properties": {
"browsers": { "$ref": "#/definitions/browsers" }
},
"additionalProperties": false
}