Source code

Revision control

Copy as Markdown

Other Tools

{
"type": "object",
"required": ["webExtension"],
"properties": {
"default": {
"$ref": "#/definitions/default"
},
"defaultPrivate": {
"$ref": "#/definitions/defaultPrivate"
},
"orderHint": {
"$ref": "#/definitions/orderHint"
},
"appliesTo": {
"type": "array",
"title": "Applies To",
"description": "This section defines the region/locales/application information for where a search engine is available, and any specifics for that region/locale/application. If there are no entries in the list, it is considered to be included everywhere",
"items": {
"$ref": "#/definitions/appliesToSection"
}
},
"telemetryId": {
"type": "string",
"title": "Telemetry Id",
"description": "The telemetry Id as used for search telemetry."
},
"webExtension": {
"$ref": "#/definitions/webExtension"
},
"urls": {
"$ref": "#/definitions/urls"
},
"params": {
"$ref": "#/definitions/params"
},
"extraParams": {
"$ref": "#/definitions/extraParams"
},
"suggestExtraParams": {
"$ref": "#/definitions/extraParams"
}
},
"definitions": {
"application": {
"type": "object",
"title": "Application Details",
"properties": {
"name": {
"type": "array",
"title": "Name",
"description": "The application(s) this applies to (default/not specified is everywhere)",
"items": {
"type": "string",
"pattern": "^[a-z]{0,100}$",
"enum": ["", "firefox"]
},
"uniqueItems": true
},
"channel": {
"type": "array",
"title": "Channel",
"description": "Which channel this belongs to (not set = everywhere). For ESR this is also keyed from the display version.",
"items": {
"type": "string",
"pattern": "^[a-z]{0,100}$",
"enum": ["default", "nightly", "aurora", "beta", "release", "esr"]
},
"uniqueItems": true
},
"distributions": {
"type": "array",
"title": "Distributions",
"description": "Which distributions this applies to.",
"items": {
"type": "string",
"pattern": "^[a-zA-Z0-9.-]{0,100}$"
},
"uniqueItems": true
},
"excludedDistributions": {
"type": "array",
"title": "Excluded Distributions",
"description": "Which distributions this does not apply to.",
"items": {
"type": "string",
"pattern": "^[a-zA-Z0-9.-]{0,100}$"
},
"uniqueItems": true
},
"minVersion": {
"type": "string",
"title": "Minimum Version",
"pattern": "^[0-9a-z.]{0,20}$",
"description": "The minimum version this applies to"
},
"maxVersion": {
"type": "string",
"title": "Maximum Version",
"pattern": "^[0-9a-z.]{0,20}$",
"description": "The maximum version this applies to (less-than comparison)"
}
}
},
"default": {
"type": "string",
"title": "Default Status",
"pattern": "^[a-z-]{0,20}$",
"description": "Whether or not this engine should be default.",
"enum": ["yes", "yes-if-no-other", "no"]
},
"defaultPrivate": {
"type": "string",
"title": "Default Status (PBM)",
"pattern": "^[a-z-]{0,20}$",
"description": "Whether or not this engine should be default in private browsing mode.",
"enum": ["yes", "yes-if-no-other", "no"]
},
"extraParams": {
"type": "array",
"title": "Extra Parameters",
"description": "Extra parameters for the search engine (aka MozParams)",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"title": "Name",
"pattern": "^[a-z]{0,20}$",
"description": "Name of the parameter that will be used in the search query"
},
"condition": {
"type": "string",
"title": "Condition",
"pattern": "^[a-z]{0,10}$",
"description": "The type of parameter (pref or purpose)",
"enum": ["pref", "purpose"]
},
"purpose": {
"type": "string",
"title": "Purpose",
"pattern": "^[a-z{}]{0,100}$",
"description": "The search purpose that triggers this parameter being appended.",
"enum": [
"searchbar",
"keyword",
"contextmenu",
"homepage",
"newtab"
]
},
"value": {
"type": "string",
"title": "Value",
"pattern": "^[a-zA-Z0-9_]{0,100}$",
"description": "If this is a purpose type, the value is used as the value of the parameter in the query"
},
"pref": {
"type": "string",
"title": "Preference name",
"pattern": "^[a-z0-9_]{0,100}$",
"description": "The preference name to get the value from (i.e. browser.search.param.<preference name>)."
}
}
}
},
"orderHint": {
"type": "number",
"title": "Order Hint",
"description": "A hint to the display order (higher is a higher rank)"
},
"searchUrlCodes": {
"type": "array",
"title": "Codes",
"description": "A array of objects - map of parameter name to the parameter value.",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"title": "Name",
"pattern": "^[a-zA-Z0-9.-]{0,100}$",
"description": "Name of the parameter that will be used in the query"
},
"value": {
"type": "string",
"title": "Value",
"pattern": "^[a-zA-Z0-9_{}:/.-]{0,100}$",
"description": "The value of parameter (pref or purpose)"
}
}
}
},
"params": {
"type": "object",
"title": "Parameters",
"description": "Various parameters for the search engines",
"properties": {
"searchUrlGetParams": {
"title": "Search URL GET Parameters",
"description": "Extra parameters for search URLs (e.g. 'pc=foo').",
"$ref": "#/definitions/searchUrlCodes"
},
"suggestUrlGetParams": {
"title": "Suggestion URL GET Parameters",
"description": "Extra parameters for search suggestion URLs (e.g. 'pc=foo').",
"$ref": "#/definitions/searchUrlCodes"
},
"searchUrlPostParams": {
"title": "Search URL POST Parameters",
"description": "Extra parameters for search URLs (e.g. 'pc=foo').",
"$ref": "#/definitions/searchUrlCodes"
},
"suggestUrlPostParams": {
"title": "Suggestion URL POST Parameters",
"description": "Extra parameters for search suggestion URLs (e.g. 'pc=foo').",
"$ref": "#/definitions/searchUrlCodes"
}
}
},
"telemetryId": {
"type": "string",
"title": "Telemetry Id",
"pattern": "^[a-zA-Z0-9-$_]{0,100}$",
"description": "The telemetry Id as used for search telemetry."
},
"webExtension": {
"type": "object",
"title": "WebExtension",
"properties": {
"id": {
"type": "string",
"title": "WebExtension Id",
"description": "The identifier (local part) of the associated WebExtension should be of the format example@search.mozilla.org",
"pattern": "^[a-zA-Z0-9-._]*@search.mozilla.org$"
},
"locales": {
"type": "array",
"title": "WebExtension Locales",
"description": "Overrides the WebExtension locales and specifies to use a particular one. Ideally this should only be used when really necessary, otherwise considered deprecated.",
"items": {
"type": "string",
"pattern": "^[a-zA-Z0-9-$_]{0,100}$"
}
}
}
},
"urls": {
"type": "object",
"description": "Urls pertaining to this engine",
"properties": {
"trending": {
"type": "object",
"description": "Details of the url used to fetch trending suggestions",
"properties": {
"fullPath": {
"type": "string",
"title": "fullPath",
"format": "uri",
"description": "The url used to retrieve trending suggestions"
},
"query": {
"type": "string",
"title": "query",
"description": "The query parameters to send in a trending suggestions request",
"pattern": "^[a-zA-Z0-9.={}&-]{0,100}$"
}
}
}
}
},
"regionDetails": {
"type": "array",
"title": "Regions",
"description": "Two-letter region codes.",
"items": {
"type": "string",
"pattern": "^([a-z][a-z]|default)$",
"minLength": 2,
"maxLength": 7
}
},
"localeDetails": {
"type": "object",
"title": "Locales",
"description": "Locale codes.",
"properties": {
"matches": {
"type": "array",
"title": "Matches exactly the codes",
"items": {
"type": "string",
"pattern": "^([a-z]{2,3}(-[a-zA-Z]{2,})?(-macos)?|default)$",
"minLength": 2
}
},
"startsWith": {
"type": "array",
"title": "Matches any code starting with",
"items": {
"type": "string",
"pattern": "^[a-z]{2,3}$",
"minLength": 2,
"maxLength": 3
}
}
}
},
"included": {
"type": "object",
"title": "Included Locations",
"description": "The locations to which this section applies. Note: Regions and Locales are 'and'ed together.",
"properties": {
"everywhere": {
"type": "boolean",
"title": "Everywhere",
"description": "Set to true to signify that this is included everywhere."
},
"regions": {
"$ref": "#/definitions/regionDetails"
},
"locales": {
"$ref": "#/definitions/localeDetails"
}
}
},
"excluded": {
"type": "object",
"title": "Excluded Locations",
"description": "The locations to which this section applies. Note: Regions and Locales are 'and'ed together.",
"properties": {
"regions": {
"$ref": "#/definitions/regionDetails"
},
"locales": {
"$ref": "#/definitions/localeDetails"
}
}
},
"appliesToSection": {
"type": "object",
"properties": {
"default": {
"$ref": "#/definitions/default"
},
"defaultPrivate": {
"$ref": "#/definitions/defaultPrivate"
},
"orderHint": {
"$ref": "#/definitions/orderHint"
},
"included": {
"$ref": "#/definitions/included"
},
"excluded": {
"$ref": "#/definitions/excluded"
},
"application": {
"$ref": "#/definitions/application"
},
"webExtension": {
"$ref": "#/definitions/webExtension"
},
"urls": {
"$ref": "#/definitions/urls"
},
"telemetryId": {
"$ref": "#/definitions/telemetryId"
},
"params": {
"$ref": "#/definitions/params"
},
"extraParams": {
"$ref": "#/definitions/extraParams"
},
"experiment": {
"type": "string",
"title": "Experiment",
"pattern": "^[a-zA-Z0-9-]{0,100}$",
"description": "The experiment this section is associated with, if blank it is associated with any configuration."
},
"override": {
"type": "boolean",
"title": "Override",
"description": "This section will override previous appliesTo sections, but not add new locations where this engine is deployed to."
},
"suggestExtraParams": {
"$ref": "#/definitions/extraParams"
}
}
}
}
}