32 lines
No EOL
24 KiB
Text
32 lines
No EOL
24 KiB
Text
{"metadata":{"sort":"-last_modified","schema":{"type":"object","required":["telemetryId","searchPageRegexp","queryParamName","queryParamNames"],"properties":{"isSPA":{"type":"boolean","title":"Is Single Page App","description":"Whether the provider exhibits tendencies of a single page app, namely changes the entire contents of the page without having to reload."},"components":{"type":"array","items":{"type":"object","required":["type"],"properties":{"type":{"type":"string","pattern":"^[a-z](?:_?[a-z])*$","description":"The type of component the anchor or DOM element should belong to."},"default":{"type":"boolean","description":"Whether this component should be the fallback option if a link was included in both ad-related regular expressions as well as regular expressions matching non-ad elements but couldn't be categorized. Defaults to false."},"topDown":{"type":"boolean","description":"Whether the component should be found first by using document.querySelectorAll on the parent selector definition. Defaults to false."},"excluded":{"type":"object","properties":{"parent":{"type":"object","required":["selector"],"properties":{"selector":{"type":"string","description":"The root DOM element that shouldn't be a parent from the context of the anchor being inspected."}}}},"description":"Conditions that should not be included."},"included":{"type":"object","required":["parent"],"properties":{"parent":{"type":"object","title":"Parent","required":["selector"],"properties":{"selector":{"type":"string","description":"If topDown is true for this component, then this will be the value used in querySelectorAll(). Otherwise, it will be the value to in closest() from the context of an anchor."},"skipCount":{"$ref":"#/definitions/skipCount"},"eventListeners":{"$ref":"#/definitions/eventListeners"}},"description":"The DOM element that should only contain elements applicable to a single component type."},"related":{"type":"object","required":["selector"],"properties":{"selector":{"type":"string","description":"The selector to use querySelectorAll from the context of the parent. Any elements specified will have their click events registered and categorized as expanded unless explicitly overwritten in SearchSERPTelemetryChild."}}},"children":{"type":"array","items":{"type":"object","required":["selector"],"properties":{"type":{"type":"string","pattern":"^[a-z](?:_?[a-z])*$","description":"The component type to use if this child is present."},"selector":{"type":"string","description":"The selector to use querySelectorAll from the context of the parent."},"skipCount":{"$ref":"#/definitions/skipCount"},"countChildren":{"type":"boolean","description":"Whether we should count all instances of the child element instead of anchor links found inside of the parent. Defaults to false."},"eventListeners":{"$ref":"#/definitions/eventListeners"}}},"title":"Children","description":"Child DOM elements of the parent. Optional."}},"description":"Conditions that should be fulfilled."},"dependentRequired":{"topDown":["included"]}}},"title":"Components","description":"An array of components that could be on the SERP."},"shoppingTab":{"type":"object","title":"Shopping Tab","required":["selector","regexp"],"properties":{"regexp":{"type":"string","description":"The regular expression to match against a possible shopping tab. Must be provided if using this feature."},"selector":{"type":"string","description":"The elements on the page to inspect for the shopping tab. Should be anchor elements."},"inspectRegexpInSERP":{"type":"boolean","description":"Whether the regexp should be used against hrefs the selector matches against."}}},"taggedCodes":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9-._]*$"},"title":"Partner Codes","description":"An array of partner codes to match against the parameters in the url. Matching these codes will report the SERP as tagged."},"telemetryId":{"type":"string","title":"Telemetry Id","pattern":"^[a-z0-9-._]*$","description":"The telemetry identifier for the provider."},"organicCodes":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9-._]*$"},"title":"Organic Codes","description":"An array of partner codes to match against the parameters in the url. Matching these codes will report the SERP as organic:<partner code>, which means the search was performed organically rather than through a SAP."},"codeParamName":{"type":"string","title":"Partner Code Parameter Name","description":"The name of the query parameter for the partner code."},"accountCookies":{"type":"array","items":{"type":"object","properties":{"host":{"type":"string","description":"The host associated with a given cookie."},"name":{"type":"string","description":"The name associated with a given cookie."}}},"title":"Account Cookies","description":"An array of cookie details that are used to determine whether a client is signed in to a provider's account. NOTE: This property appears only in Firefox 127 but was renamed to `signedInCookies` for Firefox 128 and beyond. Therefore do not use this property. Please use `signedInCookies` instead."},"queryParamName":{"type":"string","title":"Search Query Parameter Name","description":"The name of the query parameter for the user's search string. This is deprecated, in preference to queryParamNames, but still defined for older clients (pre Firefox 121)."},"followOnCookies":{"type":"array","items":{"type":"object","properties":{"host":{"type":"string","pattern":"^[a-z0-9-._]*$","description":"The hostname on which the cookie is stored."},"name":{"type":"string","pattern":"^[a-zA-Z0-9-._]*$","description":"The name of the cookie to check."},"codeParamName":{"type":"string","pattern":"^[a-zA-Z0-9-._]*$","description":"The name of parameter within the cookie."},"extraCodePrefixes":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9-._]*$"},"description":"Possible values for the query parameter in the URL that indicates this might be a follow-on search."},"extraCodeParamName":{"type":"string","pattern":"^[a-z0-9-._]*$","description":"The query parameter name in the URL that indicates this might be a follow-on search."}}},"title":"Follow-on Cookies","description":"An array of cookie details that are used to identify follow-on searches."},"queryParamNames":{"type":"array","items":{"type":"string"},"title":"Search Query Parameter Names","description":"An array of query parameters that may be used for the user's search string."},"signedInCookies":{"type":"array","items":{"type":"object","properties":{"host":{"type":"string","description":"The host associated with a given cookie."},"name":{"type":"string","description":"The name associated with a given cookie."}}},"title":"Signed-in Cookies","description":"An array of cookie details that are used to determine whether a client is signed in to a provider's account."},"domainExtraction":{"type":"object","title":"Domain Extraction","properties":{"ads":{"type":"array","items":{"$ref":"#/definitions/extraction"},"description":"An array of methods for extracting domains from ads."},"nonAds":{"type":"array","items":{"$ref":"#/definitions/extraction"},"description":"An array of methods for extracting domains from non-ads."}},"description":"An array of methods for extracting domains from a SERP result."},"searchPageRegexp":{"type":"string","title":"Search Page Regular Expression","description":"A regular expression which matches the search page of the provider."},"ignoreLinkRegexps":{"type":"array","items":{"type":"string","description":"The matching regular expression."},"title":"Ignore links matching regular expressions","description":"Regular expressions matching links that should be ignored by the network observer."},"nonAdsLinkRegexps":{"type":"array","items":{"type":"string","description":"The matching regular expression."},"title":"Non-ads link matching regular expressions","description":"An array containing known patterns that match non-ad links from a search provider."},"searchPageMatches":{"type":"array","items":{"type":"string"},"title":"Search Page Matches","description":"An array containing match expressions used to match on URLs."},"adServerAttributes":{"type":"array","items":{"type":"string"},"title":"Ad Server Attributes","description":"An array of strings that potentially match data-attribute keys of anchors."},"followOnParamNames":{"type":"array","items":{"type":"string","pattern":"^[a-z0-9-._]*$"},"title":"Follow-on Search Parameter Names","description":"An array of query parameter names that are used when a follow-on search occurs."},"expectedOrganicCodes":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9-._]*$"},"title":"Expected Organic Codes","description":"An array of partner codes to match against the parameters in the url. Matching these codes will report the SERP as organic:none which means the user has done a search through the search engine's website rather than through SAP."},"defaultPageQueryParam":{"type":"object","title":"Default page query parameter","required":["key","value"],"properties":{"key":{"type":"string","description":"The key corresponding to the query parameter that contains what type of search page is being shown."},"value":{"type":"string","description":"The value corresponding to the query parameter that should be matched against."}}},"extraAdServersRegexps":{"type":"array","items":{"type":"string"},"title":"Extra Ad Server Regular Expressions","description":"An array of regular expressions that match URLs of potential ad servers."},"nonAdsLinkQueryParamNames":{"type":"array","items":{"type":"string","string":"The query param name to examine."},"title":"Non-ads link query param names","description":"Query param names present in non-ads link that recover the link that will be redirected to."}},"definitions":{"skipCount":{"type":"boolean","title":"Skip Count","description":"Whether to skip reporting of the count of these elements to ad_impressions. Defaults to false."},"extraction":{"anyOf":[{"type":"object","required":["selectors","method","options"],"properties":{"method":{"enum":["dataAttribute"],"description":"The extraction method used for the query."},"options":{"type":"object","required":["dataAttributeKey"],"properties":{"dataAttributeKey":{"type":"string","description":"The data attribute key that will be looked up in order to retrieve its data attribute value."}}},"selectors":{"type":"string","description":"The query to inspect all elements on the SERP."}}},{"type":"object","required":["selectors","method"],"properties":{"method":{"enum":["href"],"description":"The extraction method to use for the query."},"options":{"type":"object","required":["queryParamKey"],"properties":{"queryParamKey":{"type":"string","description":"The query parameter key to inspect in the href."},"queryParamValueIsHref":{"type":"boolean","description":"Whether the query param value is expected to contain an href."}}},"selectors":{"type":"string","description":"The query to use to inspect all elements on the SERP."}}},{"type":"object","required":["selectors","method"],"properties":{"method":{"enum":["textContent"],"description":"The extraction method to use for the query."},"selectors":{"type":"string","description":"The query to use to inspect all elements on the SERP."}}}]},"eventListener":{"type":"object","title":"Event Listener","required":["eventType"],"properties":{"action":{"type":"string","title":"Action","pattern":"^[a-z](?:_?[a-z])*$","description":"The action to report when the event is triggered. If the event type is 'click', defaults to clicked. Otherwise, this should be provided."},"target":{"type":"string","title":"Target","pattern":"^[a-z](?:_?[a-z])*$","description":"The component type to report when the event is triggered. Uses the child component type (if exists), otherwise uses the parent component type."},"eventType":{"type":"string","title":"Event Type","pattern":"^[a-z][A-Za-z]*$","description":"The type of event to listen for. Custom events, especially those with special logic like keydownEnter, can be used if the Desktop code has been updated."}},"description":"Event listeners attached to a component."},"eventListeners":{"type":"array","items":{"$ref":"#/definitions/eventListener"},"title":"Event Listeners","description":"An array of Event Listeners to apply to elements."}}},"signature":{"ref":"25pam9iu80lkp1m1v124f6nj2f","x5u":"https://content-signature-2.cdn.mozilla.net/chains/remote-settings.content-signature.mozilla.org-2024-12-27-18-19-47.chain","mode":"p384ecdsa","type":"contentsignaturepki","signature":"fxLHi5u4sWktRiUIpJQtwIBQX2taAgkXHWS-f8zIx1YDE7-KP5N3xZxVjRM3Pzu_0cXjs0jcBnDr-uHbdNOiWmyUDLW_mpqeup4px_fWcNfibNzF2aPgD-1gd9AMBrgV","signer_id":"remote-settings","public_key":"MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEb2hwvxwKG5hsSt2YoYKIPUmTqFJopdRqTEVx0NHK7or7Ybxw6AZBFN3AfptD2HSEK1sjk/4r4PdZW2PV4kv6RAwWseoH7K681AMfTWHbB7F9s1bswYhMHi3PhUyRuyZK"},"attachment":{"enabled":false,"required":false},"displayFields":["telemetryId"],"id":"search-telemetry-v2","last_modified":1731429440372,"bucket":"main"},"timestamp":1731429440245,"changes":[{"schema":1730764806877,"components":[{"type":"ad_carousel","included":{"parent":{"selector":".adsMvCarousel"},"related":{"selector":".cr"},"children":[{"selector":".pa_item","countChildren":true}]}},{"type":"ad_link","excluded":{"parent":{"selector":"aside"}},"included":{"parent":{"selector":".sb_adTA"},"children":[{"type":"ad_sitelink","selector":".b_vlist2col"}]}},{"type":"ad_sidebar","included":{"parent":{"selector":"aside"},"children":[{"selector":".pa_item, .sb_adTA","countChildren":true}]}},{"type":"incontent_searchbox","topDown":true,"included":{"parent":{"selector":"form#sb_form"},"related":{"selector":"#sw_as"},"children":[{"selector":"input[name='q']"}]}},{"type":"cookie_banner","topDown":true,"included":{"parent":{"selector":"div#bnp_cookie_banner"},"children":[{"selector":"button#bnp_btn_accept","eventListeners":[{"action":"clicked_accept","eventType":"click"}]},{"selector":"button#bnp_btn_reject","eventListeners":[{"action":"clicked_reject","eventType":"click"}]},{"selector":"a#bnp_btn_preference","eventListeners":[{"action":"clicked_more_options","eventType":"click"}]}]}},{"type":"ad_link","default":true}],"shoppingTab":{"regexp":"^/shop?","selector":"#b-scopeListItem-shop a"},"taggedCodes":["MOZ2","MOZ4","MOZ5","MOZA","MOZB","MOZD","MOZE","MOZI","MOZL","MOZM","MOZO","MOZR","MOZT","MOZW","MOZX","MZSL01","MZSL02","MZSL03"],"telemetryId":"bing","organicCodes":[],"codeParamName":"pc","queryParamName":"q","followOnCookies":[{"host":"www.bing.com","name":"_SS","codeParamName":"PC","extraCodePrefixes":["QBRE"],"extraCodeParamName":"form"},{"host":"www.bing.com","name":"SRCHS","codeParamName":"PC","extraCodePrefixes":["QBRE"],"extraCodeParamName":"form"}],"queryParamNames":["q"],"domainExtraction":{"ads":[{"method":"textContent","selectors":"#b_results .b_ad .b_attribution cite, .adsMvCarousel cite, aside cite"}],"nonAds":[{"method":"textContent","selectors":"#b_results .b_algo .b_attribution cite"}]},"searchPageRegexp":"^https://www\\.bing\\.com/search","nonAdsLinkRegexps":["^https://www.bing.com/ck/a"],"extraAdServersRegexps":["^https://www\\.bing\\.com/acli?c?k"],"id":"e1eec461-f1f3-40de-b94b-3b670b78108c","last_modified":1731429440245}]}<7D><>;+ |