blob: cb9a6b395e4d8f201eb86fd8a991f828115eb65d [file] [log] [blame] [edit]
{
"$schema": "http://json-schema.org/schema",
"definitions": {
"browser_type": {
"type": "string",
"enum": ["desktop", "mobile", "xr", "server"]
},
"browser_engine": {
"type": "string",
"enum": [
"Blink",
"EdgeHTML",
"Gecko",
"Presto",
"Trident",
"WebKit",
"V8"
]
},
"browser_status": {
"type": "string",
"enum": [
"retired",
"current",
"exclusive",
"beta",
"nightly",
"esr",
"planned"
]
},
"browsers": {
"type": "object",
"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": "The browser brand name (e.g. Firefox, Firefox Android, Chrome, etc.)."
},
"type": {
"$ref": "#/definitions/browser_type",
"description": "The platform the browser runs on (e.g. desktop, mobile, XR, or server engine).",
"tsType": "BrowserType"
},
"upstream": {
"type": "string",
"description": "The upstream browser this browser derives from (e.g. Firefox Android is derived from Firefox, Edge is derived from Chrome).",
"tsType": "BrowserName"
},
"preview_name": {
"type": "string",
"description": "The name of the browser's preview channel (e.g. 'Nightly' for Firefox or 'TP' for Safari)."
},
"pref_url": {
"type": "string",
"description": "URL of the page where feature flags can be changed (e.g. 'about:config' for Firefox or 'chrome://flags' for Chrome)."
},
"accepts_flags": {
"type": "boolean",
"description": "Whether the browser supports user-toggleable 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": "The known versions 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": "The date on which this version was released, formatted as `YYYY-MM-DD`."
},
"release_notes": {
"type": "string",
"format": "uri",
"pattern": "^https://",
"description": "A link to the release notes or changelog for a given release."
},
"status": {
"$ref": "#/definitions/browser_status",
"description": "A property indicating where in the lifetime cycle this release is in (e.g. current, retired, beta, nightly).",
"tsType": "BrowserStatus"
},
"engine": {
"$ref": "#/definitions/browser_engine",
"description": "Name of the browser's underlying engine.",
"tsType": "BrowserEngine"
},
"engine_version": {
"type": "string",
"description": "Version of the engine corresponding to the browser version."
}
},
"required": ["status"],
"additionalProperties": false
}
},
"title": "BrowserDataFile",
"type": "object",
"properties": {
"browsers": { "$ref": "#/definitions/browsers" }
},
"additionalProperties": false
}