158 lines
5.2 KiB
JSON
158 lines
5.2 KiB
JSON
{
|
|
"type": "object",
|
|
"definitions": {
|
|
"cookie": {
|
|
"type": "object",
|
|
"required": ["name", "value"],
|
|
"description": "JSON representation of a cookie to inject.",
|
|
"properties": {
|
|
"name": {
|
|
"title": "Name / Key",
|
|
"type": "string",
|
|
"description": "The name of the cookie."
|
|
},
|
|
"value": {
|
|
"title": "Value",
|
|
"type": "string",
|
|
"description": "The cookie value."
|
|
},
|
|
"host": {
|
|
"title": "Host",
|
|
"type": "string",
|
|
"description": "Host to set cookie for. Defaults to .<domain> if unset."
|
|
},
|
|
"path": {
|
|
"title": "Path",
|
|
"type": "string",
|
|
"description": "The path pertaining to the cookie."
|
|
},
|
|
"expiryRelative": {
|
|
"title": "Relative Expiry Time",
|
|
"type": "number",
|
|
"description": "Expiry time of the cookie in seconds relative to the injection time. Defaults to pref value for cookiebanners.cookieInjector.defaultExpiryRelative."
|
|
},
|
|
"unsetValue": {
|
|
"title": "Unset Value",
|
|
"type": "string",
|
|
"description": "If an existing cookie of the same name sets this value it may be overwritten by this rule."
|
|
},
|
|
"isSecure": {
|
|
"title": "Secure Cookie",
|
|
"type": "boolean",
|
|
"description": "true if the cookie was transmitted over ssl, false otherwise."
|
|
},
|
|
"sameSite": {
|
|
"title": "SameSite",
|
|
"type": "number",
|
|
"enum": [0, 1, 2],
|
|
"description": "The SameSite attribute. See nsICookie.idl."
|
|
},
|
|
"isSession": {
|
|
"title": "Session Cookie",
|
|
"type": "boolean",
|
|
"description": "true if the cookie is a session cookie."
|
|
},
|
|
"schemeMap": {
|
|
"title": "Scheme Map",
|
|
"type": "number",
|
|
"description": "Bitmap of schemes."
|
|
},
|
|
"isHTTPOnly": {
|
|
"title": "HTTP-Only",
|
|
"type": "boolean",
|
|
"description": "true if the cookie is an http only cookie."
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"title": "Cookie Banner Rule",
|
|
"required": ["id", "domains"],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"id": {
|
|
"title": "ID",
|
|
"type": "string",
|
|
"description": "Unique identifier of the rule."
|
|
},
|
|
"domains": {
|
|
"title": "Domains",
|
|
"type": ["array"],
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"uniqueItems": true,
|
|
"description": "List of domains of the sites the rule describes. Leave empty for global rules which should apply to every site."
|
|
},
|
|
"cookies": {
|
|
"title": "Cookies",
|
|
"description": "Cookie banner related cookies to be injected when the side loads.",
|
|
"type": "object",
|
|
"properties": {
|
|
"optIn": {
|
|
"title": "Opt-in cookies",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/cookie"
|
|
},
|
|
"description": "Cookies to be set to signal opt-in state."
|
|
},
|
|
"optOut": {
|
|
"title": "Opt-out cookies",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/cookie"
|
|
},
|
|
"description": "Cookies to be set to signal opt-out state."
|
|
}
|
|
}
|
|
},
|
|
"click": {
|
|
"title": "Click",
|
|
"description": "Rules for detection of the cookie banner and simulated clicks.",
|
|
"type": "object",
|
|
"properties": {
|
|
"presence": {
|
|
"title": "Presence Selector",
|
|
"type": "string",
|
|
"description": "Query selector to detect cookie banner element."
|
|
},
|
|
"skipPresenceVisibilityCheck": {
|
|
"title": "Skip Presence Visibility Check",
|
|
"type": "boolean",
|
|
"description": "Whether to skip checking if the banner is visible before clicking it."
|
|
},
|
|
"runContext": {
|
|
"title": "Run Context",
|
|
"type": "string",
|
|
"enum": ["top", "child", "all"],
|
|
"description": "Where the click rule should be executed. Defaults to only top window. top: Only in the top window; child: Only in child frames; all: Both top window and child frames."
|
|
},
|
|
"hide": {
|
|
"title": "Hide Selector",
|
|
"type": "string",
|
|
"description": "Query selector for element to hide while handling cookie banner. Defaults to 'presence' selector."
|
|
},
|
|
"optOut": {
|
|
"title": "Opt-out Selector",
|
|
"type": "string",
|
|
"description": "Query selector for opt-out / reject all button"
|
|
},
|
|
"optIn": {
|
|
"title": "Opt-in Selector",
|
|
"type": "string",
|
|
"description": "Query selector for opt-in / accept all button"
|
|
}
|
|
},
|
|
"dependencies": {
|
|
"hide": ["presence"],
|
|
"optOut": ["presence"],
|
|
"optIn": ["presence"]
|
|
}
|
|
},
|
|
"filter_expression": {
|
|
"type": "string",
|
|
"description": "This is NOT used by the cookie banner handling feature, but has special functionality in Remote Settings. See https://remote-settings.readthedocs.io/en/latest/target-filters.html#how"
|
|
}
|
|
},
|
|
"description": "Rule containing instructions on how to handle a cookie banner on a specific site."
|
|
}
|