| { |
| "$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 |
| } |