): ORTBImp =
deepSetValue(imp, 'video.ext.context', videoContext);
}
return imp;
-}
+};
-export function createResponse(bid:any, ortbResponse:any): BidResponse {
- let mediaType: MediaType = BANNER;
- if ([INSTREAM, OUTSTREAM].includes(bid.ext.mediaType as string)) mediaType = VIDEO;
- if (bid.ext.mediaType === NATIVE) mediaType = NATIVE;
- const response:any = {
- requestId: bid.impid,
- cpm: bid.price,
- width: bid.w,
- height: bid.h,
- creativeId: bid.crid,
- currency: ortbResponse.cur,
- netRevenue: true,
- ttl: 120,
- mediaType,
- meta: {
- advertiserDomains: bid.adomain,
- demandSource: bid.ext.ssp,
- },
- };
- if (bid.dealid) response.dealid = bid.dealid;
+export function mediaTypeOverride(orig: (bidResponse: any, bid: any, context: any) => void, bidResponse: any, bid: any, context: any): void {
+ if (bidResponse.mediaType || ORTB_MTYPES.hasOwnProperty(bid.mtype)) {
+ orig(bidResponse, bid, context);
+ return;
+ }
+ const prebidType = deepAccess(bid, 'ext.prebid.type');
+ if ([BANNER, VIDEO, NATIVE].includes(prebidType)) {
+ bidResponse.mediaType = prebidType;
+ return;
+ }
+ const legacyType = deepAccess(bid, 'ext.mediaType');
+ if (legacyType === INSTREAM || legacyType === OUTSTREAM) {
+ bidResponse.mediaType = VIDEO;
+ return;
+ }
+ if ([BANNER, NATIVE].includes(legacyType)) {
+ bidResponse.mediaType = legacyType;
+ return;
+ }
+ orig(bidResponse, bid, context);
+}
- if (bid.ext.mediaType === BANNER) response.ad = bid.adm;
- if ([INSTREAM, OUTSTREAM].includes(bid.ext.mediaType as string)) response.vastXml = bid.adm;
- if (bid.ext.mediaType === OUTSTREAM && (bid.ext.adUnitCode)) {
- const renderer = createRenderer({
- requestId: response.requestId,
- vastXml: response.vastXml,
- adUnitCode: bid.ext.adUnitCode,
- width: response.width,
- height: response.height
- });
- if (renderer) {
- response.renderer = renderer;
- response.adUnitCode = bid.ext.adUnitCode;
- } else {
- logInfo('Could not create renderer for outstream bid');
- }
- };
+export function videoResponseOverride(orig: (bidResponse: any, bid: any, context: any) => void, bidResponse: any, bid: any, context: any): void {
+ orig(bidResponse, bid, context);
+ if (bidResponse.mediaType !== VIDEO) return;
+ if (deepAccess(context, 'bidRequest.mediaTypes.video.context') !== OUTSTREAM) return;
- if (bid.ext.mediaType === NATIVE) {
- try {
- response.native = { ortb: JSON.parse(bid.adm) }
- } catch (e) {}
+ const adUnitCode = context.bidRequest.adUnitCode;
+ const renderer = createRenderer({
+ requestId: bidResponse.requestId,
+ vastXml: bidResponse.vastXml,
+ adUnitCode,
+ width: bidResponse.width,
+ height: bidResponse.height,
+ });
+ if (renderer) {
+ bidResponse.renderer = renderer;
+ bidResponse.adUnitCode = adUnitCode;
+ } else {
+ logInfo('Could not create renderer for outstream bid');
}
- return response as BidResponse;
}
-export const interpretResponse = (serverResponse: ServerResponse): AdapterResponse => {
- if (!serverResponse.body) return [];
- const respBody = serverResponse.body as ORTBResponse;
- if (!respBody.seatbid || respBody.seatbid.length === 0) return [];
-
- const responses: BidResponse[] = [];
- for (let i = 0; i < respBody.seatbid.length; i++) {
- const seatbid = respBody.seatbid[i];
- for (let j = 0; j < seatbid.bid.length; j++) {
- const bid = seatbid.bid[j];
- const response:BidResponse = createResponse(bid, respBody);
- responses.push(response);
- }
+export function enrichBidResponse(bidResponse: any, bid: any): BidResponse {
+ if (bid.ext?.ssp) {
+ bidResponse.meta = bidResponse.meta || {};
+ bidResponse.meta.demandSource = bid.ext.ssp;
}
- return responses;
+ addEventTrackers(bidResponse, bid);
+ return bidResponse as BidResponse;
}
diff --git a/libraries/analyticsAdapter/AnalyticsAdapter.ts b/libraries/analyticsAdapter/AnalyticsAdapter.ts
index 0cf77d6ed5c..7b47f9aa332 100644
--- a/libraries/analyticsAdapter/AnalyticsAdapter.ts
+++ b/libraries/analyticsAdapter/AnalyticsAdapter.ts
@@ -1,5 +1,5 @@
import { EVENTS } from '../../src/constants.js';
-import { ajax } from '../../src/ajax.js';
+import { noCredsAjax as ajax } from '../../src/ajax.js';
import { logError, logMessage } from '../../src/utils.js';
import * as events from '../../src/events.js';
import { config } from '../../src/config.js';
@@ -22,7 +22,7 @@ let allLabels = {};
config.getConfig(LABELS_KEY, (cfg) => {
labels.publisher = cfg[LABELS_KEY];
- allLabels = combineLabels(); ;
+ allLabels = combineLabels();
});
export function setLabels(internalLabels) {
@@ -56,7 +56,7 @@ export type DefaultOptions = {
* Defaults to 1
*/
sampling?: number;
-}
+};
export type AnalyticsConfig = (
P extends keyof AnalyticsProviderConfig ? AnalyticsProviderConfig[P] : { [key: string]: unknown }
@@ -77,19 +77,50 @@ export type AnalyticsConfig
= (
* Adapter specific options
*/
options?: P extends keyof AnalyticsProviderConfig ? AnalyticsProviderConfig[P] : Record
- }
+ };
-export default function AnalyticsAdapter({ url, analyticsType, global, handler }: {
+type AnalyticsAdapterOptions = {
analyticsType?: AnalyticsType;
url?: string;
global?: string;
handler?: any;
-}) {
+};
+
+type AnalyticsEvent = {
+ eventType: keyof events.Events;
+ args: events.Events[keyof events.Events][0];
+ labels?: Record;
+ callback?: any;
+};
+
+export type AnalyticsAdapterInstance = {
+ track: (arg: AnalyticsEvent) => void;
+ enqueue: (arg: AnalyticsEvent) => void;
+ enableAnalytics: (config?: AnalyticsConfig) => void;
+ disableAnalytics: () => void;
+ getAdapterType: () => AnalyticsType | undefined;
+ getGlobal: () => string | undefined;
+ getHandler: () => any;
+ getUrl: () => string | undefined;
+ enabled: boolean;
+ _oldEnable?: (config?: AnalyticsConfig) => void;
+};
+
+type AnalyticsAdapterConstructor = new (options: AnalyticsAdapterOptions) => AnalyticsAdapterInstance;
+
+export default function AnalyticsAdapter(options: AnalyticsAdapterOptions): AnalyticsAdapterInstance {
+ if (!new.target) {
+ return new (AnalyticsAdapter as unknown as AnalyticsAdapterConstructor)(options);
+ }
+
+ const { url, analyticsType, global, handler } = options;
+
const queue = [];
let handlers;
let enabled = false;
let sampled = true;
let provider: PROVIDER;
+ let lastTrackedEvent = null;
const emptyQueue = (() => {
let running = false;
@@ -107,10 +138,10 @@ export default function AnalyticsAdapter({ u
if (queue.length >= len) {
notDecreasing++;
} else {
- notDecreasing = 0
+ notDecreasing = 0;
}
if (notDecreasing >= 10) {
- logError('Detected probable infinite loop, discarding events', queue)
+ logError('Detected probable infinite loop, discarding events', queue);
queue.length = 0;
return;
}
@@ -127,7 +158,7 @@ export default function AnalyticsAdapter({ u
timer = null;
}
debounceDelay === 0 ? clearQueue() : timer = setTimeout(clearQueue, debounceDelay);
- }
+ };
})();
return Object.defineProperties({
@@ -143,10 +174,11 @@ export default function AnalyticsAdapter({ u
enabled: {
get: () => enabled
}
- });
+ }) as AnalyticsAdapterInstance;
function _track(arg) {
const { eventType, args } = arg;
+
if (this.getAdapterType() === BUNDLE) {
(window[global] as any)(handler, eventType, args);
}
@@ -160,13 +192,16 @@ export default function AnalyticsAdapter({ u
_internal.ajax(url, callback, JSON.stringify({ eventType, args, labels: allLabels }));
}
- function _enqueue({ eventType, args }) {
+ function _enqueue({ eventType, args, sequence }) {
queue.push(() => {
if (Object.keys(allLabels || []).length > 0) {
args = {
[LABELS_KEY]: allLabels,
...args,
- }
+ };
+ }
+ if (lastTrackedEvent == null || sequence > lastTrackedEvent) {
+ lastTrackedEvent = sequence;
}
this.track({ eventType, labels: allLabels, args });
});
@@ -193,24 +228,25 @@ export default function AnalyticsAdapter({ u
})();
// first send all events fired before enableAnalytics called
- events.getEvents().forEach(event => {
- if (!event || !trackedEvents.has(event.eventType)) {
- return;
- }
-
- const { eventType, args } = event;
- _enqueue.call(this, { eventType, args });
- });
+ events.getEvents()
+ .filter(({ sequence }) => lastTrackedEvent == null || sequence > lastTrackedEvent)
+ .forEach(event => {
+ if (!event || !trackedEvents.has(event.eventType)) {
+ return;
+ }
+ const { eventType, args, sequence } = event;
+ _enqueue.call(this, { eventType, args, sequence });
+ });
// Next register event listeners to send data immediately
handlers = Object.fromEntries(
Array.from(trackedEvents)
.map((ev) => {
- const handler = (args) => this.enqueue({ eventType: ev, args });
- events.on(ev, handler);
+ const handler = ({ eventType, sequence, args }) => this.enqueue({ eventType, args, sequence });
+ events.listen(ev, handler);
return [ev, handler];
})
- )
+ );
} else {
logMessage(`Analytics adapter for "${global}" disabled by sampling`);
}
@@ -226,7 +262,7 @@ export default function AnalyticsAdapter({ u
function _disable() {
Object.entries(handlers || {}).forEach(([event, handler]: any) => {
events.off(event, handler);
- })
+ });
this.enableAnalytics = this._oldEnable ? this._oldEnable : _enable;
enabled = false;
}
diff --git a/libraries/analyticsAdapter/examples/example2.js b/libraries/analyticsAdapter/examples/example2.js
index d95a3f54283..2836699b872 100644
--- a/libraries/analyticsAdapter/examples/example2.js
+++ b/libraries/analyticsAdapter/examples/example2.js
@@ -1,5 +1,5 @@
/* eslint-disable no-console */
-import { ajax } from '../../../src/ajax.js';
+import { noCredsAjax as ajax } from '../../../src/ajax.js';
/**
* example2.js - analytics adapter for Example2 Analytics Endpoint example
diff --git a/libraries/appnexusUtils/anKeywords.js b/libraries/appnexusUtils/anKeywords.js
index 63f7df423f6..9a85b2f4da2 100644
--- a/libraries/appnexusUtils/anKeywords.js
+++ b/libraries/appnexusUtils/anKeywords.js
@@ -55,8 +55,8 @@ export function transformBidderParamKeywords(keywords, paramName = 'keywords') {
return;
} // unsuported types - don't send a key
}
- v = v.filter(kw => kw !== '')
- const entry = { key: k }
+ v = v.filter(kw => kw !== '');
+ const entry = { key: k };
if (v.length > 0) {
entry.value = v;
}
@@ -73,7 +73,7 @@ export function convertKeywordStringToANMap(keyStr) {
// will split based on commas and will eat white space before/after the comma
return convertKeywordsToANMap(keyStr.split(/\s*(?:,)\s*/));
} else {
- return {}
+ return {};
}
}
@@ -101,7 +101,7 @@ function convertKeywordsToANMap(kwarray) {
result[kw] = [];
}
}
- })
+ });
return result;
}
@@ -119,7 +119,7 @@ export function getANKewyordParamFromMaps(...anKeywordMaps) {
Object.entries(kwMap || {})
.map(([k, v]) => [k, (isNumber(v) || isStr(v)) ? [v] : v])
)))
- )
+ );
}
export function getANMapFromOrtbIASKeywords(ortb2) {
@@ -138,7 +138,7 @@ export function getANKeywordParam(ortb2, ...anKeywordsMaps) {
getANMapFromOrtbIASKeywords(ortb2), // <-- include IAS
getANMapFromOrtbSegments(ortb2),
...anKeywordsMaps
- )
+ );
}
export function getANMapFromOrtbSegments(ortb2) {
@@ -154,7 +154,7 @@ export function getANMapFromOrtbSegments(ortb2) {
if (ortbSegData[segtax]) {
ortbSegData[segtax].push(seg.id);
} else {
- ortbSegData[segtax] = [seg.id]
+ ortbSegData[segtax] = [seg.id];
}
});
}
diff --git a/libraries/appnexusUtils/anUtils.js b/libraries/appnexusUtils/anUtils.js
index 191512f2fea..ce0dd3196b3 100644
--- a/libraries/appnexusUtils/anUtils.js
+++ b/libraries/appnexusUtils/anUtils.js
@@ -17,7 +17,6 @@ export const appnexusAliases = [
{ code: 'newdream', gvlid: 32 },
{ code: 'matomy', gvlid: 32 },
{ code: 'featureforward', gvlid: 32 },
- { code: 'oftmedia', gvlid: 32 },
{ code: 'adasta', gvlid: 32 },
{ code: 'beintoo', gvlid: 618 },
{ code: 'projectagora', gvlid: 1032 },
diff --git a/libraries/audUtils/bidderUtils.js b/libraries/audUtils/bidderUtils.js
index 660f871ab8a..849531961e2 100644
--- a/libraries/audUtils/bidderUtils.js
+++ b/libraries/audUtils/bidderUtils.js
@@ -58,16 +58,16 @@ export const getBannerRequest = (bidRequests, bidderRequest, ENDPOINT) => {
contentType: 'application/json',
}
};
-}
+};
// Function to get Response
export const getBannerResponse = (bidResponse, mediaType) => {
return formatResponse(bidResponse, mediaType);
-}
+};
// Function to get NATIVE Response
export const getNativeResponse = (bidResponse, bidRequest, mediaType) => {
const assets = JSON.parse(JSON.parse(bidRequest.data)[0].imp[0].native.request).assets;
return formatResponse(bidResponse, mediaType, assets);
-}
+};
// Function to format response
const formatResponse = (bidResponse, mediaType, assets) => {
const responseArray = [];
@@ -113,7 +113,7 @@ const formatResponse = (bidResponse, mediaType, assets) => {
}
}
return responseArray;
-}
+};
// Function to get imp based on Media Type
const getImpDetails = (bidReq) => {
const imp = {};
@@ -128,7 +128,7 @@ const getImpDetails = (bidReq) => {
}
}
return imp;
-}
+};
// Function to get banner object
const getBannerDetails = (bidReq) => {
const response = {};
@@ -146,12 +146,12 @@ const getBannerDetails = (bidReq) => {
}
}
return response;
-}
+};
// Function to get floor price
const getFloorPrice = (bidReq) => {
const bidfloor = bidReq?.params?.bid_floor ?? 0;
return bidfloor;
-}
+};
// Function to get site object
const getSiteDetails = (bidderRequest) => {
let page = '';
@@ -161,7 +161,7 @@ const getSiteDetails = (bidderRequest) => {
name = bidderRequest.refererInfo.domain;
}
return { page: page, name: name };
-}
+};
// Function to build the user object
const getUserDetails = (bidReq) => {
const user = {};
@@ -179,7 +179,7 @@ const getUserDetails = (bidReq) => {
user.ext = {};
}
return user;
-}
+};
// Function to get asset data for response
const getNativeAssestData = (params, assets) => {
const response = {};
@@ -197,10 +197,10 @@ const getNativeAssestData = (params, assets) => {
url: params.img.url,
height: params.img.h,
width: params.img.w
- }
+ };
}
return response;
-}
+};
// Function to get asset data types based on id
const getAssetData = (paramId, asset) => {
let resp = '';
@@ -217,7 +217,7 @@ const getAssetData = (paramId, asset) => {
}
}
return resp;
-}
+};
// Function to get image type based on the id
const getAssetImageDataType = (paramId, asset) => {
let resp = '';
@@ -232,7 +232,7 @@ const getAssetImageDataType = (paramId, asset) => {
}
}
return resp;
-}
+};
// Function to get Media Type
const getMediaType = (bidReq) => {
if (bidReq.mediaTypes.native) {
@@ -240,4 +240,4 @@ const getMediaType = (bidReq) => {
} else if (bidReq.mediaTypes.banner) {
return 'banner';
}
-}
+};
diff --git a/libraries/autoplayDetection/autoplay.js b/libraries/autoplayDetection/autoplay.js
index 9b719f2e47c..45c2ceb8700 100644
--- a/libraries/autoplayDetection/autoplay.js
+++ b/libraries/autoplayDetection/autoplay.js
@@ -21,10 +21,10 @@ const autoplayVideoUrl =
'data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAAADxtZGF0AAAAMGWIhAAV//73ye/Apuvb3rW/k89I/Cy3PsIqP39atohOSV14BYa1heKCYgALQC5K4QAAAwZtb292AAAAbG12aGQAAAAAAAAAAAAAAAAAAAPoAAAD6AABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACMHRyYWsAAABcdGtoZAAAAAMAAAAAAAAAAAAAAAEAAAAAAAAD6AAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAoAAAAFoAAAAAACRlZHRzAAAAHGVsc3QAAAAAAAAAAQAAA+gAAAAAAAEAAAAAAahtZGlhAAAAIG1kaGQAAAAAAAAAAAAAAAAAAEAAAABAAFXEAAAAAAAtaGRscgAAAAAAAAAAdmlkZQAAAAAAAAAAAAAAAFZpZGVvSGFuZGxlcgAAAAFTbWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAABE3N0YmwAAACvc3RzZAAAAAAAAAABAAAAn2F2YzEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAoABaAEgAAABIAAAAAAAAAAEVTGF2YzYwLjMxLjEwMiBsaWJ4MjY0AAAAAAAAAAAAAAAY//8AAAA1YXZjQwFkAAr/4QAYZ2QACqzZQo35IQAAAwABAAADAAIPEiWWAQAGaOvjyyLA/fj4AAAAABRidHJ0AAAAAAAAAaAAAAGgAAAAGHN0dHMAAAAAAAAAAQAAAAEAAEAAAAAAHHN0c2MAAAAAAAAAAQAAAAEAAAABAAAAAQAAABRzdHN6AAAAAAAAADQAAAABAAAAFHN0Y28AAAAAAAAAAQAAADAAAABidWR0YQAAAFptZXRhAAAAAAAAACFoZGxyAAAAAAAAAABtZGlyYXBwbAAAAAAAAAAAAAAAAC1pbHN0AAAAJal0b28AAAAdZGF0YQAAAAEAAAAATGF2ZjYwLjE2LjEwMA==';
function startDetection() {
- const version = navigator.userAgent.match(/iPhone OS (\d+)_(\d+)/)
+ const version = navigator.userAgent.match(/iPhone OS (\d+)_(\d+)/);
if (version !== null && parseInt(version[1]) < 17 && !navigator.userAgent.includes('Safari')) {
// skip autodetection on iOS 16 WebView
- return
+ return;
}
// we create an HTMLVideoElement muted and not displayed in which we try to play a one frame video
diff --git a/libraries/bidderTimeoutUtils/bidderTimeoutUtils.js b/libraries/bidderTimeoutUtils/bidderTimeoutUtils.js
index 721df815159..2bcddfbbb91 100644
--- a/libraries/bidderTimeoutUtils/bidderTimeoutUtils.js
+++ b/libraries/bidderTimeoutUtils/bidderTimeoutUtils.js
@@ -39,7 +39,7 @@ function checkVideo(adUnits) {
}
function getConnectionSpeed() {
- const connection = window.navigator.connection || window.navigator.mozConnection || window.navigator.webkitConnection || {}
+ const connection = window.navigator.connection || window.navigator.mozConnection || window.navigator.webkitConnection || {};
const connectionType = connection.type || connection.effectiveType;
switch (connectionType) {
@@ -80,7 +80,7 @@ function calculateTimeoutModifier(adUnits, rules) {
if (rules.includesVideo) {
const hasVideo = bidderTimeoutFunctions.checkVideo(adUnits);
toAdd = rules.includesVideo[hasVideo] || 0;
- logInfo(`Adding ${toAdd} to timeout for includesVideo ${hasVideo}`)
+ logInfo(`Adding ${toAdd} to timeout for includesVideo ${hasVideo}`);
timeoutModifier += toAdd;
}
@@ -92,7 +92,7 @@ function calculateTimeoutModifier(adUnits, rules) {
for (const [rangeStr, timeoutVal] of entries(rules.numAdUnits)) {
const [lowerBound, upperBound] = rangeStr.split('-');
if (parseInt(lowerBound) <= numAdUnits && numAdUnits <= parseInt(upperBound)) {
- logInfo(`Adding ${timeoutVal} to timeout for numAdUnits ${numAdUnits}`)
+ logInfo(`Adding ${timeoutVal} to timeout for numAdUnits ${numAdUnits}`);
timeoutModifier += timeoutVal;
break;
}
@@ -103,14 +103,14 @@ function calculateTimeoutModifier(adUnits, rules) {
if (rules.deviceType) {
const deviceType = bidderTimeoutFunctions.getDeviceType();
toAdd = rules.deviceType[deviceType] || 0;
- logInfo(`Adding ${toAdd} to timeout for deviceType ${deviceType}`)
+ logInfo(`Adding ${toAdd} to timeout for deviceType ${deviceType}`);
timeoutModifier += toAdd;
}
if (rules.connectionSpeed) {
const connectionSpeed = bidderTimeoutFunctions.getConnectionSpeed();
toAdd = rules.connectionSpeed[connectionSpeed] || 0;
- logInfo(`Adding ${toAdd} to timeout for connectionSpeed ${connectionSpeed}`)
+ logInfo(`Adding ${toAdd} to timeout for connectionSpeed ${connectionSpeed}`);
timeoutModifier += toAdd;
}
diff --git a/libraries/braveUtils/index.js b/libraries/braveUtils/index.js
index 34742f41ed8..8243372b026 100644
--- a/libraries/braveUtils/index.js
+++ b/libraries/braveUtils/index.js
@@ -57,7 +57,7 @@ export function createBannerRequest(br) {
h,
format,
id: br.transactionId
- }
+ };
}
/**
diff --git a/libraries/browsiUtils/browsiUtils.js b/libraries/browsiUtils/browsiUtils.js
index 9b520ff53a9..33ecedad17c 100644
--- a/libraries/browsiUtils/browsiUtils.js
+++ b/libraries/browsiUtils/browsiUtils.js
@@ -1,5 +1,6 @@
import { isGptPubadsDefined, logError } from '../../src/utils.js';
import { setKeyValue as setGptKeyValue } from '../../libraries/gptUtils/gptUtils.js';
+import { getSlotTargeting } from '../../src/utils/gptTargeting.js';
/** @type {string} */
const VIEWABILITY_KEYNAME = 'browsiViewability';
@@ -57,7 +58,7 @@ export function getTargetingKeys(viewabilityKeyName) {
viewabilityKey: (viewabilityKeyName || VIEWABILITY_KEYNAME).toString(),
scrollKey: SCROLL_KEYNAME,
revenueKey: REVENUE_KEYNAME,
- }
+ };
}
export function getTargetingValues(v) {
@@ -65,7 +66,7 @@ export function getTargetingValues(v) {
viewabilityValue: getTargetingValue(v['viewability']),
scrollValue: getTargetingValue(v['scrollDepth']),
revenueValue: getRevenueTargetingValue(v['revenue'])
- }
+ };
}
export const setKeyValue = (key, random) => setGptKeyValue(key, random.toString());
@@ -128,7 +129,7 @@ export function getHbm(bus, timestamp) {
rahb: rahb?.avg && Number(rahb.avg?.toFixed(3)),
lahb: lahb?.avg && Number(lahb.avg?.toFixed(3)),
lbsa: lahb?.age && Number(lahb?.age?.toFixed(3))
- }
+ };
} catch (e) {
return undefined;
}
@@ -142,7 +143,7 @@ export function getLahb(lahb, timestamp) {
return {
avg: lahb.avg,
age: getDaysDifference(timestamp, lahb.time)
- }
+ };
} catch (e) {
return undefined;
}
@@ -163,7 +164,7 @@ export function getRahb(rahb, timestamp) {
return {
avg: rs.sum / rs.smp
- }
+ };
} catch (e) {
return undefined;
}
@@ -172,7 +173,7 @@ export function getRahb(rahb, timestamp) {
export function getRahbByTs(rahb, timestamp) {
try {
if (!isObjectDefined(rahb)) {
- return undefined
+ return undefined;
};
const weekAgoTimestamp = timestamp - (7 * 24 * 60 * 60 * 1000);
Object.keys(rahb).forEach((ts) => {
@@ -234,7 +235,7 @@ export function getMacroId(macro, slot) {
if (macro) {
try {
const macroResult = evaluate(macro, slot.getSlotElementId(), slot.getAdUnitPath(), (match, p1) => {
- return (p1 && slot.getTargeting(p1).join('_')) || 'NA';
+ return (p1 && getSlotTargeting(slot, p1).join('_')) || 'NA';
});
return macroResult;
} catch (e) {
diff --git a/libraries/cmp/cmpClient.js b/libraries/cmp/cmpClient.js
index 1ad691b824c..b779ab9cd69 100644
--- a/libraries/cmp/cmpClient.js
+++ b/libraries/cmp/cmpClient.js
@@ -110,7 +110,7 @@ export function cmpClient(
function resolveParams(params) {
params = Object.assign({ version: apiVersion }, params);
- return apiArgs.map(arg => [arg, params[arg]])
+ return apiArgs.map(arg => [arg, params[arg]]);
}
function wrapCallback(callback, resolve, reject, preamble) {
@@ -123,7 +123,7 @@ export function cmpClient(
resolver(haveCb ? undefined : result);
}
haveCb && callback.apply(this, arguments);
- }
+ };
}
let client;
@@ -154,7 +154,7 @@ export function cmpClient(
}
};
- cmpCallbacks[callId] = wrapCallback(params?.callback, resolve, reject, (once || params?.callback == null) && (() => { delete cmpCallbacks[callId] }));
+ cmpCallbacks[callId] = wrapCallback(params?.callback, resolve, reject, (once || params?.callback == null) && (() => { delete cmpCallbacks[callId]; }));
cmpFrame.postMessage(msg, '*');
if (mode === MODE_RETURN) resolve();
});
@@ -165,5 +165,35 @@ export function cmpClient(
close() {
!isDirect && win.removeEventListener('message', handleMessage);
}
- })
+ });
+}
+
+export const CMP_POLL_INTERVAL = 100;
+
+/**
+ * Polls for a CMP API at a fixed interval until it is found or the deadline is reached.
+ *
+ * @param {Object} apiConfig - Config passed to cmpClient (apiName, apiVersion, apiArgs, etc.)
+ * @param {number} deadline - Timestamp (ms) after which polling stops and the promise resolves with null.
+ * @returns {Promise} Resolves with the CMP client when found, or null on timeout.
+ */
+export function pollForCmp(apiConfig, deadline) {
+ return new Promise((resolve) => {
+ // Probe immediately so timeouts shorter than CMP_POLL_INTERVAL still get at least one attempt.
+ const immediate = cmpClient(apiConfig);
+ if (immediate) { resolve(immediate); return; }
+
+ const handle = setInterval(() => {
+ if (Date.now() >= deadline) {
+ clearInterval(handle);
+ resolve(null);
+ return;
+ }
+ const cmp = cmpClient(apiConfig);
+ if (cmp) {
+ clearInterval(handle);
+ resolve(cmp);
+ }
+ }, CMP_POLL_INTERVAL);
+ });
}
diff --git a/libraries/consentManagement/cmUtils.ts b/libraries/consentManagement/cmUtils.ts
index 838c8dac69a..43efdd8ed60 100644
--- a/libraries/consentManagement/cmUtils.ts
+++ b/libraries/consentManagement/cmUtils.ts
@@ -157,7 +157,7 @@ export function configParser(
}
function loadConsentData() {
- return cdLoader().then(({ error }) => ({ error, consentData: consentDataHandler.getConsentData() }))
+ return cdLoader().then(({ error }) => ({ error, consentData: consentDataHandler.getConsentData() }));
}
function activate() {
@@ -165,7 +165,7 @@ export function configParser(
requestBidsHook = consentManagementHook(namespace, () => cdLoader());
getHook('requestBids').before(requestBidsHook, 50);
buildActivityParams.before(attachActivityParams);
- logInfo(`${displayName} consentManagement module has been activated...`)
+ logInfo(`${displayName} consentManagement module has been activated...`);
}
}
@@ -225,7 +225,7 @@ export function configParser(
if (isPlainObject(cmConfig.consentData)) {
staticConsentData = cmConfig.consentData;
cmpTimeout = null;
- setupCmp = () => new PbPromise(resolve => resolve(consentDataHandler.setConsentData(parseConsentData(staticConsentData))))
+ setupCmp = () => new PbPromise(resolve => resolve(consentDataHandler.setConsentData(parseConsentData(staticConsentData))));
} else {
logError(msg(`config with cmpApi: 'static' did not specify consentData. No consents will be available to adapters.`));
}
@@ -253,10 +253,10 @@ export function configParser(
cd = lookup().catch(err => {
cd = null;
throw err;
- })
+ });
}
return cd;
- }
+ };
})();
activate();
@@ -267,6 +267,6 @@ export function configParser(
staticConsentData,
loadConsentData,
requestBidsHook
- }
- }
+ };
+ };
}
diff --git a/libraries/currencyUtils/currency.js b/libraries/currencyUtils/currency.js
index c5a23d34e36..d497183c329 100644
--- a/libraries/currencyUtils/currency.js
+++ b/libraries/currencyUtils/currency.js
@@ -23,9 +23,9 @@ export function currencyNormalizer(toCurrency = null, bestEffort = true, convert
return function (amount, currency) {
if (toCurrency == null) toCurrency = currency;
return convert(amount, currency, toCurrency, bestEffort);
- }
+ };
}
export function currencyCompare(get = (obj) => [obj.cpm, obj.currency], normalize = currencyNormalizer()) {
- return keyCompare(obj => normalize.apply(null, get(obj)))
+ return keyCompare(obj => normalize.apply(null, get(obj)));
}
diff --git a/libraries/dealUtils/dealUtils.js b/libraries/dealUtils/dealUtils.js
index 1758367a65e..af3b4afac5a 100644
--- a/libraries/dealUtils/dealUtils.js
+++ b/libraries/dealUtils/dealUtils.js
@@ -8,7 +8,7 @@ export const addDealCustomTargetings = (imp, dctr, logPrefix = "") => {
} else {
logWarn(logPrefix + 'Ignoring param : dctr with value : ' + dctr + ', expects string-value, found empty or non-string value');
}
-}
+};
export const addPMPDeals = (imp, deals, logPrefix = "") => {
if (!isArray(deals)) {
@@ -25,4 +25,4 @@ export const addPMPDeals = (imp, deals, logPrefix = "") => {
logWarn(`${logPrefix}Error: deal-id present in array bid.params.deals should be a string with more than 3 characters length, deal-id ignored: ${deal}`);
}
});
-}
+};
diff --git a/libraries/deepintentUtils/index.js b/libraries/deepintentUtils/index.js
index d3663d2541f..b1981bad6b5 100644
--- a/libraries/deepintentUtils/index.js
+++ b/libraries/deepintentUtils/index.js
@@ -38,5 +38,5 @@ export function formatResponse(bid) {
currency: bid && bid.cur ? bid.cur : 'USD',
ttl: 300,
dealId: bid && bid.dealid ? bid.dealid : undefined
- }
+ };
}
diff --git a/libraries/dfpUtils/dfpUtils.js b/libraries/dfpUtils/dfpUtils.js
index bad6c05b356..92c9441ea74 100644
--- a/libraries/dfpUtils/dfpUtils.js
+++ b/libraries/dfpUtils/dfpUtils.js
@@ -6,13 +6,13 @@ export const DEFAULT_DFP_PARAMS = {
gdfp_req: 1,
output: 'vast',
unviewed_position_start: 1,
-}
+};
export const DFP_ENDPOINT = {
protocol: 'https',
host: 'securepubads.g.doubleclick.net',
pathname: '/gampad/ads'
-}
+};
export function gdprParams() {
const gdprConsent = gdprDataHandler.getConsentData();
diff --git a/libraries/domainOverrideToRootDomain/index.js b/libraries/domainOverrideToRootDomain/index.js
index c8df8f0b339..1a285b73e98 100644
--- a/libraries/domainOverrideToRootDomain/index.js
+++ b/libraries/domainOverrideToRootDomain/index.js
@@ -35,5 +35,5 @@ export function domainOverrideToRootDomain(storage, moduleName) {
return topDomain;
}
}
- }
+ };
}
diff --git a/libraries/dspxUtils/bidderUtils.js b/libraries/dspxUtils/bidderUtils.js
index b238d9dc2eb..acf03b4e3b3 100644
--- a/libraries/dspxUtils/bidderUtils.js
+++ b/libraries/dspxUtils/bidderUtils.js
@@ -154,7 +154,7 @@ export function getBannerSizes(bid) {
* @returns {object} sizeObj
*/
export function parseSize(size) {
- const sizeObj = {}
+ const sizeObj = {};
sizeObj.width = parseInt(size[0], 10);
sizeObj.height = parseInt(size[1], 10);
return sizeObj;
@@ -229,7 +229,7 @@ export function getBidFloor(bid) {
});
return bidFloor?.floor;
} catch (_) {
- return 0
+ return 0;
}
}
diff --git a/libraries/ferioUtils/bidderUtils.ts b/libraries/ferioUtils/bidderUtils.ts
new file mode 100644
index 00000000000..8684351f95a
--- /dev/null
+++ b/libraries/ferioUtils/bidderUtils.ts
@@ -0,0 +1,603 @@
+import { ortbConverter } from "../ortbConverter/converter.js";
+import { pbsExtensions } from "../pbsExtensions/pbsExtensions.js";
+import { BANNER, NATIVE, VIDEO, type MediaType } from "../../src/mediaTypes.js";
+import { BID_RESPONSE } from "../../src/pbjsORTB.js";
+import {
+ CONSENT_GDPR,
+ CONSENT_GPP,
+ CONSENT_USP,
+ type ConsentDataForKey,
+} from "../../src/consentHandler.js";
+import {
+ isPlainObject,
+ logError,
+ logWarn,
+ sizesToSizeTuples,
+} from "../../src/utils.js";
+import type {
+ AdapterRequest,
+ AdapterResponse,
+ BidderSpec,
+ ServerResponse,
+} from "../../src/adapters/bidderFactory.js";
+import type {
+ BidRequest,
+ ClientBidderRequest,
+} from "../../src/adapterManager.js";
+import type { BidResponse } from "../../src/bidfactory.js";
+import type { SyncType } from "../../src/userSync.js";
+import type { BidderCode, Currency, Size } from "../../src/types/common.d.ts";
+import type { ORTBRequest } from "../../src/types/ortb/request.d.ts";
+import type { ORTBBid, ORTBResponse } from "../../src/types/ortb/response.d.ts";
+import type { NativeResponse } from "../../src/types/ortb/native.d.ts";
+
+const DEFAULT_CURRENCY: Currency = "USD";
+const DEFAULT_TTL = 300;
+const DEFAULT_PARAM_BIDDER_CODE = "ferio";
+const ORTB_RESPONSE_MEDIA_TYPES = [1, 2, 4] as const;
+
+const supportedMediaTypes = [BANNER, VIDEO, NATIVE] as const;
+
+type SupportedFerioMediaType = typeof supportedMediaTypes[number];
+type FerioResponseMType = typeof ORTB_RESPONSE_MEDIA_TYPES[number];
+type RequiredParam = string;
+
+type FerioParamsRecord = {
+ publisherId?: unknown;
+ adUnitId?: unknown;
+ [key: string]: unknown;
+};
+
+type FerioAdapterRequest = AdapterRequest & {
+ method: "POST";
+ url: string;
+ data: ORTBRequest;
+ options: {
+ contentType: "text/plain";
+ withCredentials: true;
+ };
+};
+
+export type FerioAliasOptions = {
+ code: BidderCode;
+ endpoint?: string;
+ gvlid?: number;
+ paramBidderCode?: BidderCode;
+ skipPbsAliasing?: boolean;
+};
+
+export type FerioBidderSpecOptions<
+ Code extends BidderCode = typeof DEFAULT_PARAM_BIDDER_CODE
+> = {
+ code?: Code;
+ endpoint: string;
+ paramBidderCode?: BidderCode;
+ requiredParams?: readonly RequiredParam[];
+ aliases?: readonly FerioAliasOptions[];
+};
+
+type GdprConsent = null | undefined | ConsentDataForKey;
+type UspConsent = null | undefined | ConsentDataForKey;
+type GppConsent = null | undefined | ConsentDataForKey;
+
+type ConsentParamValue = string | number;
+type ConsentParam = readonly [string, ConsentParamValue];
+type UserSyncOptions = {
+ iframeEnabled?: boolean;
+ pixelEnabled?: boolean;
+};
+type FerioUserSync = {
+ type: SyncType;
+ url: string;
+};
+
+type NativeAdm = Partial & {
+ assets: NonNullable;
+};
+type NativeAdmWrapper = {
+ native: NativeAdm;
+};
+type BidWithRawAdm = Omit & {
+ adm?: unknown;
+};
+type FerioBidResponseWithAdapterCode = Partial & {
+ adapterCode?: BidderCode;
+ bidderCode?: BidderCode;
+};
+
+function isRecord(value: unknown): value is Record {
+ return isPlainObject(value);
+}
+
+function isNonEmptyString(value: unknown): value is string {
+ return typeof value === "string" && value.trim().length > 0;
+}
+
+function getNonEmptyString(value: unknown, fallback: string): string {
+ return isNonEmptyString(value) ? value.trim() : fallback;
+}
+
+function hasValidSize(sizes: unknown): boolean {
+ return (sizesToSizeTuples(sizes) as Size[]).some((size) =>
+ size.every((value) => Number.isFinite(Number(value)) && Number(value) > 0)
+ );
+}
+
+function getFerioParams(params: unknown): FerioParamsRecord {
+ return isRecord(params) ? params : {};
+}
+
+function isBidRequestValid(
+ bid: BidRequest,
+ requiredParams: readonly RequiredParam[] = []
+): boolean {
+ const params = getFerioParams(bid.params);
+ if (
+ !isNonEmptyString(params.publisherId) ||
+ !isNonEmptyString(params.adUnitId)
+ ) {
+ return false;
+ }
+
+ if (
+ requiredParams.some((paramName) => !isNonEmptyString(params[paramName]))
+ ) {
+ return false;
+ }
+
+ const mediaTypes = bid.mediaTypes || {};
+ const hasBanner = !!mediaTypes[BANNER];
+ const hasVideo = !!mediaTypes[VIDEO];
+ const hasNative = !!mediaTypes[NATIVE];
+
+ if (!hasBanner && !hasVideo && !hasNative) {
+ return false;
+ }
+
+ if (hasBanner && !hasValidSize(mediaTypes[BANNER].sizes)) {
+ return false;
+ }
+
+ if (hasVideo && !hasValidSize(mediaTypes[VIDEO].playerSize)) {
+ return false;
+ }
+
+ if (hasNative && !bid.nativeOrtbRequest) {
+ return false;
+ }
+
+ return true;
+}
+
+function isSupportedMediaType(
+ value: unknown
+): value is SupportedFerioMediaType {
+ return supportedMediaTypes.includes(value as SupportedFerioMediaType);
+}
+
+function isFerioResponseMType(value: unknown): value is FerioResponseMType {
+ return ORTB_RESPONSE_MEDIA_TYPES.includes(value as FerioResponseMType);
+}
+
+function getBidPrebidMediaType(
+ bid: ORTBBid
+): SupportedFerioMediaType | undefined {
+ const prebidExt = bid.ext?.prebid;
+ if (!isRecord(prebidExt)) {
+ return;
+ }
+
+ return isSupportedMediaType(prebidExt.type) ? prebidExt.type : undefined;
+}
+
+function getSingleMediaType(
+ bidRequest: BidRequest
+): SupportedFerioMediaType | undefined {
+ const mediaTypes = supportedMediaTypes.filter(
+ (mediaType) => bidRequest.mediaTypes?.[mediaType]
+ );
+ return mediaTypes.length === 1 ? mediaTypes[0] : undefined;
+}
+
+function hasResponseMediaType(bid: ORTBBid): boolean {
+ return isFerioResponseMType(bid.mtype) || !!getBidPrebidMediaType(bid);
+}
+
+function isNativeResponse(
+ bid: ORTBBid,
+ context: { mediaType?: MediaType }
+): boolean {
+ return (
+ bid.mtype === 4 ||
+ getBidPrebidMediaType(bid) === NATIVE ||
+ context.mediaType === NATIVE
+ );
+}
+
+function parseAdm(adm: unknown): unknown {
+ if (typeof adm !== "string") {
+ return adm;
+ }
+
+ try {
+ return JSON.parse(adm);
+ } catch (e) {
+ return adm;
+ }
+}
+
+function isNativeAdmWrapper(value: unknown): value is NativeAdmWrapper {
+ if (
+ !isRecord(value) ||
+ Array.isArray(value.assets) ||
+ !isRecord(value.native)
+ ) {
+ return false;
+ }
+
+ return Array.isArray(value.native.assets);
+}
+
+function normalizeNativeAdm(
+ bid: ORTBBid,
+ context: { mediaType?: MediaType }
+): ORTBBid {
+ if (!isNativeResponse(bid, context)) {
+ return bid;
+ }
+
+ const adm = parseAdm((bid as BidWithRawAdm).adm);
+ if (isNativeAdmWrapper(adm)) {
+ return { ...bid, adm: JSON.stringify(adm.native) };
+ }
+
+ return bid;
+}
+
+function getAdapterResponseBids(response: AdapterResponse): BidResponse[] {
+ if (isRecord(response) && Array.isArray(response.bids)) {
+ return response.bids as BidResponse[];
+ }
+
+ return [];
+}
+
+function getContextAdapterCode(context: {
+ bidRequest?: unknown;
+ bidderRequest?: unknown;
+}): BidderCode | undefined {
+ if (
+ isRecord(context.bidRequest) &&
+ typeof context.bidRequest.bidder === "string"
+ ) {
+ return context.bidRequest.bidder;
+ }
+
+ const bidderRequest = context.bidderRequest;
+ if (isRecord(bidderRequest) && typeof bidderRequest.bidderCode === "string") {
+ return bidderRequest.bidderCode;
+ }
+}
+
+function createFerioConverter(
+ getParamBidderCode: (
+ bidRequest: BidRequest,
+ context: { bidderRequest?: unknown }
+ ) => BidderCode
+) {
+ return ortbConverter({
+ context: {
+ currency: DEFAULT_CURRENCY,
+ netRevenue: true,
+ ttl: DEFAULT_TTL,
+ },
+ processors: pbsExtensions,
+ imp(buildImp, bidRequest, context) {
+ const paramBidderCode = getParamBidderCode(bidRequest, context);
+ return buildImp(
+ { ...bidRequest, bidder: paramBidderCode } as BidRequest,
+ context
+ );
+ },
+ bidResponse(buildBidResponse, bid, context) {
+ let responseContext = context;
+ if (!hasResponseMediaType(bid)) {
+ const fallbackMediaType = getSingleMediaType(context.bidRequest);
+ if (!fallbackMediaType) {
+ return;
+ }
+ responseContext = { ...context, mediaType: fallbackMediaType };
+ }
+ return buildBidResponse(
+ normalizeNativeAdm(bid, responseContext),
+ responseContext
+ );
+ },
+ overrides: {
+ [BID_RESPONSE]: {
+ bidderCode(orig, bidResponse, bid, context) {
+ orig(bidResponse, bid, context);
+ const adapterCode = getContextAdapterCode(context);
+ if (adapterCode) {
+ const response = bidResponse as FerioBidResponseWithAdapterCode;
+ response.bidderCode = adapterCode;
+ response.adapterCode = adapterCode;
+ }
+ },
+ },
+ },
+ });
+}
+
+function normalizeEndpoint(endpoint?: string): string | undefined {
+ if (!isNonEmptyString(endpoint)) {
+ return;
+ }
+
+ const normalizedEndpoint = endpoint.trim().replace(/\/+$/, "");
+ if (!isHttpsUrl(normalizedEndpoint)) {
+ return;
+ }
+
+ return /\/bid$/.test(normalizedEndpoint)
+ ? normalizedEndpoint
+ : `${normalizedEndpoint}/bid`;
+}
+
+function getEndpointBase(endpoint?: string): string | undefined {
+ return endpoint?.replace(/\/bid$/, "");
+}
+
+function getMappedCodeValue(
+ valuesByCode: Record,
+ bidderCode: BidderCode,
+ fallback: T | undefined
+): T | undefined {
+ return Object.prototype.hasOwnProperty.call(valuesByCode, bidderCode)
+ ? valuesByCode[bidderCode]
+ : fallback;
+}
+
+function appendQueryParams(url: string, params: ConsentParam[]): string {
+ const query = params
+ .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)
+ .join("&");
+ const separator = url.includes("?")
+ ? url.endsWith("?") || url.endsWith("&")
+ ? ""
+ : "&"
+ : "?";
+ return `${url}${separator}${query}`;
+}
+
+function isHttpsUrl(value: unknown): value is string {
+ if (!isNonEmptyString(value)) {
+ return false;
+ }
+
+ const url = value.trim();
+ if (!/^https:\/\//i.test(url)) {
+ return false;
+ }
+
+ try {
+ return new URL(url).protocol === "https:";
+ } catch (e) {
+ return false;
+ }
+}
+
+function getConsentParams(
+ gdprConsent: GdprConsent = null,
+ uspConsent: UspConsent = null,
+ gppConsent: GppConsent = null
+): ConsentParam[] {
+ const gdpr = isRecord(gdprConsent) && gdprConsent.gdprApplies ? 1 : 0;
+ const gdprConsentString =
+ isRecord(gdprConsent) && typeof gdprConsent.consentString === "string"
+ ? gdprConsent.consentString
+ : "";
+
+ const params: ConsentParam[] = [
+ ["us_privacy", typeof uspConsent === "string" ? uspConsent : ""],
+ ["gdpr", gdpr],
+ ["gdpr_consent", gdprConsentString],
+ ];
+
+ if (isRecord(gppConsent)) {
+ if (typeof gppConsent.gppString === "string" && gppConsent.gppString) {
+ params.push(["gpp", gppConsent.gppString]);
+ }
+ if (Array.isArray(gppConsent.applicableSections)) {
+ params.push(["gpp_sid", gppConsent.applicableSections.join(",")]);
+ }
+ }
+
+ return params;
+}
+
+function getUserSyncs(
+ syncBase: string | undefined,
+ syncOptions: UserSyncOptions = {},
+ gdprConsent: GdprConsent = null,
+ uspConsent: UspConsent = null,
+ gppConsent: GppConsent = null
+): FerioUserSync[] {
+ if (!(syncOptions.iframeEnabled || syncOptions.pixelEnabled) || !syncBase) {
+ return [];
+ }
+
+ const consentParams = getConsentParams(gdprConsent, uspConsent, gppConsent);
+ const syncCandidates: FerioUserSync[] = [];
+
+ if (syncOptions.pixelEnabled) {
+ syncCandidates.push({ type: "image", url: `${syncBase}/sync` });
+ }
+ if (syncOptions.iframeEnabled) {
+ syncCandidates.push({
+ type: "iframe",
+ url: `${syncBase}/cli/iframe.html`,
+ });
+ }
+
+ return syncCandidates.reduce((syncs, sync) => {
+ if (isHttpsUrl(sync.url)) {
+ syncs.push({
+ type: sync.type,
+ url: appendQueryParams(sync.url, consentParams),
+ });
+ }
+ return syncs;
+ }, []);
+}
+
+export function createFerioBidderSpec<
+ Code extends BidderCode = typeof DEFAULT_PARAM_BIDDER_CODE
+>(options: FerioBidderSpecOptions): BidderSpec {
+ const code = getNonEmptyString(
+ options.code,
+ DEFAULT_PARAM_BIDDER_CODE
+ ) as Code;
+ const requiredParams = Array.isArray(options.requiredParams)
+ ? options.requiredParams
+ : [];
+ const endpoint = normalizeEndpoint(options.endpoint);
+ const syncBase = getEndpointBase(endpoint);
+ const aliases: FerioAliasOptions[] = [];
+ (options.aliases ?? []).forEach((alias) => {
+ if (!isRecord(alias) || !isNonEmptyString(alias.code)) {
+ return;
+ }
+ if (
+ alias.code === code ||
+ aliases.some((seen) => seen.code === alias.code)
+ ) {
+ logError(
+ `ferioUtils: ignoring alias with duplicate code "${alias.code}"`
+ );
+ return;
+ }
+ aliases.push(alias);
+ });
+ const endpointByCode: Record = {
+ [code]: endpoint,
+ };
+ const syncBaseByCode: Record = {
+ [code]: syncBase,
+ };
+ const paramBidderCodeByCode: Record = {
+ [code]: getNonEmptyString(options.paramBidderCode, code),
+ };
+ aliases.forEach((alias) => {
+ const hasAliasEndpoint = isNonEmptyString(alias.endpoint);
+ const normalizedAliasEndpoint = normalizeEndpoint(alias.endpoint);
+ if (!normalizedAliasEndpoint && hasAliasEndpoint) {
+ logWarn(
+ `ferioUtils: invalid alias endpoint for "${alias.code}", skipping alias requests`
+ );
+ }
+ const aliasEndpoint = hasAliasEndpoint ? normalizedAliasEndpoint : endpoint;
+ endpointByCode[alias.code] = aliasEndpoint;
+ syncBaseByCode[alias.code] = getEndpointBase(aliasEndpoint);
+ paramBidderCodeByCode[alias.code] = getNonEmptyString(
+ alias.paramBidderCode,
+ alias.code
+ );
+ });
+ const specAliases = aliases.map(
+ ({ code: aliasCode, gvlid, skipPbsAliasing }) => ({
+ code: aliasCode,
+ gvlid,
+ skipPbsAliasing,
+ })
+ );
+ const converter = createFerioConverter((bidRequest, context) => {
+ const requestCode = getNonEmptyString(
+ bidRequest.bidder,
+ getContextAdapterCode(context) ?? code
+ );
+ return paramBidderCodeByCode[requestCode] ?? paramBidderCodeByCode[code];
+ });
+
+ return {
+ code,
+ ...(specAliases.length ? { aliases: specAliases } : {}),
+ supportedMediaTypes,
+ isBidRequestValid(bid) {
+ return isBidRequestValid(bid, requiredParams);
+ },
+ buildRequests(
+ validBidRequests: BidRequest[] = [],
+ bidderRequest: ClientBidderRequest = {
+ bids: validBidRequests,
+ } as ClientBidderRequest
+ ): FerioAdapterRequest[] {
+ if (!validBidRequests.length) {
+ return [];
+ }
+ const requestCode = getNonEmptyString(bidderRequest.bidderCode, code);
+ const requestEndpoint = getMappedCodeValue(
+ endpointByCode,
+ requestCode,
+ endpoint
+ );
+ if (!requestEndpoint) {
+ logError("ferioUtils: missing endpoint option");
+ return [];
+ }
+
+ return [
+ {
+ method: "POST",
+ url: requestEndpoint,
+ data: converter.toORTB({
+ bidRequests: validBidRequests,
+ bidderRequest,
+ }),
+ options: {
+ contentType: "text/plain",
+ withCredentials: true,
+ },
+ },
+ ];
+ },
+ interpretResponse(
+ serverResponse: Partial,
+ request: Partial = {}
+ ): BidResponse[] {
+ if (!serverResponse?.body || !request?.data) {
+ return [];
+ }
+
+ try {
+ return getAdapterResponseBids(
+ converter.fromORTB({
+ response: serverResponse.body as ORTBResponse,
+ request: request.data as ORTBRequest,
+ })
+ );
+ } catch (e) {
+ logError("ferioUtils: error while interpreting OpenRTB response", e);
+ return [];
+ }
+ },
+ getUserSyncs(
+ syncOptions,
+ serverResponses,
+ gdprConsent,
+ uspConsent,
+ gppConsent
+ ) {
+ const syncCode = isRecord(this)
+ ? getNonEmptyString(this.code, code)
+ : code;
+ return getUserSyncs(
+ getMappedCodeValue(syncBaseByCode, syncCode, syncBase),
+ syncOptions,
+ gdprConsent,
+ uspConsent,
+ gppConsent
+ );
+ },
+ };
+}
diff --git a/libraries/fpdUtils/pageInfo.js b/libraries/fpdUtils/pageInfo.js
index 3d23f317085..0799244b69b 100644
--- a/libraries/fpdUtils/pageInfo.js
+++ b/libraries/fpdUtils/pageInfo.js
@@ -21,10 +21,10 @@ export function getPageDescription(win = window) {
try {
element = win.top.document.querySelector('meta[name="description"]') ||
- win.top.document.querySelector('meta[property="og:description"]')
+ win.top.document.querySelector('meta[property="og:description"]');
} catch (e) {
element = document.querySelector('meta[name="description"]') ||
- document.querySelector('meta[property="og:description"]')
+ document.querySelector('meta[property="og:description"]');
}
return (element && element.content) || '';
diff --git a/libraries/gptUtils/gptUtils.js b/libraries/gptUtils/gptUtils.js
index b98b890d35a..4ca523ee1fb 100644
--- a/libraries/gptUtils/gptUtils.js
+++ b/libraries/gptUtils/gptUtils.js
@@ -1,5 +1,6 @@
import { CLIENT_SECTIONS } from '../../src/fpd/oneClient.js';
import { deepAccess, isGptPubadsDefined, uniques, isEmpty, isAdUnitCodeMatchingSlot } from '../../src/utils.js';
+import { setPageTargeting } from '../../src/utils/gptTargeting.js';
const slotInfoCache = new Map();
@@ -16,7 +17,7 @@ export function isSlotMatchingAdUnitCode(adUnitCode) {
return (slot) => {
const match = isAdUnitCodeMatchingSlot(slot);
return match(adUnitCode);
- }
+ };
}
/**
@@ -25,9 +26,13 @@ export function isSlotMatchingAdUnitCode(adUnitCode) {
export function setKeyValue(key, value) {
if (!key || typeof key !== 'string') return false;
window.googletag = window.googletag || { cmd: [] };
- window.googletag.cmd = window.googletag.cmd || [];
- window.googletag.cmd.push(() => {
- window.googletag.pubads().setTargeting(key, value);
+ setKeyValueOn(key, value, window.googletag);
+}
+
+export function setKeyValueOn(key, value, gpt = window.googletag) {
+ gpt.cmd = gpt.cmd || [];
+ gpt.cmd.push(() => {
+ setPageTargeting(key, value, gpt);
});
}
@@ -83,7 +88,7 @@ export function getSegments(fpd, sections, segtax) {
.filter(datum => datum.ext?.segtax === segtax)
.flatMap(datum => datum.segment?.map(seg => seg.id))
.filter(ob => ob)
- .filter(uniques)
+ .filter(uniques);
}
/**
@@ -147,5 +152,5 @@ export function subscribeToGamEvent(event, callback) {
* @param {SlotRenderEndedEventCallback} callback
*/
export function subscribeToGamSlotRenderEndedEvent(callback) {
- subscribeToGamEvent('slotRenderEnded', callback)
+ subscribeToGamEvent('slotRenderEnded', callback);
}
diff --git a/libraries/greedy/greedyPromise.js b/libraries/greedy/greedyPromise.js
index 5d7713424db..600b3fda93d 100644
--- a/libraries/greedy/greedyPromise.js
+++ b/libraries/greedy/greedyPromise.js
@@ -22,7 +22,7 @@ export class GreedyPromise {
result.push(type, value);
while (callbacks.length) callbacks.shift()();
}
- }
+ };
});
try {
resolver(resolve, reject);
@@ -49,7 +49,7 @@ export class GreedyPromise {
resolveFn = resolve;
}
resolveFn(value);
- }
+ };
result.length ? continuation() : this.#callbacks.push(continuation);
});
}
@@ -62,7 +62,7 @@ export class GreedyPromise {
let val;
return this.then(
(v) => { val = v; return onFinally(); },
- (e) => { val = this.constructor.reject(e); return onFinally() }
+ (e) => { val = this.constructor.reject(e); return onFinally(); }
).then(() => val);
}
@@ -81,7 +81,7 @@ export class GreedyPromise {
static race(promises) {
return new this((resolve, reject) => {
this.#collect(promises, (success, result) => success ? resolve(result) : reject(result));
- })
+ });
}
static all(promises) {
@@ -94,7 +94,7 @@ export class GreedyPromise {
reject(val);
}
}, () => resolve(res));
- })
+ });
}
static allSettled(promises) {
@@ -102,23 +102,23 @@ export class GreedyPromise {
const res = [];
this.#collect(promises, (success, val, i) => {
res[i] = success ? { status: 'fulfilled', value: val } : { status: 'rejected', reason: val };
- }, () => resolve(res))
- })
+ }, () => resolve(res));
+ });
}
static resolve(value) {
- return new this(resolve => resolve(value))
+ return new this(resolve => resolve(value));
}
static reject(error) {
- return new this((resolve, reject) => reject(error))
+ return new this((resolve, reject) => reject(error));
}
}
export function greedySetTimeout(fn, delayMs = 0) {
if (delayMs > 0) {
- return setTimeout(fn, delayMs)
+ return setTimeout(fn, delayMs);
} else {
- fn()
+ fn();
}
}
diff --git a/libraries/intentIqConstants/intentIqConstants.js b/libraries/intentIqConstants/intentIqConstants.js
index 432ea6ff6a4..ad62733f427 100644
--- a/libraries/intentIqConstants/intentIqConstants.js
+++ b/libraries/intentIqConstants/intentIqConstants.js
@@ -9,7 +9,7 @@ export const BLACK_LIST = "L";
export const CLIENT_HINTS_KEY = "_iiq_ch";
export const EMPTY = "EMPTY";
export const GVLID = "1323";
-export const VERSION = 0.35;
+export const VERSION = 0.36;
export const PREBID = "pbjs";
export const HOURS_24 = 86400000;
export const HOURS_72 = HOURS_24 * 3;
diff --git a/libraries/intentIqUtils/gamPredictionReport.js b/libraries/intentIqUtils/gamPredictionReport.js
index 69a81a8a5e6..bc5bcbac566 100644
--- a/libraries/intentIqUtils/gamPredictionReport.js
+++ b/libraries/intentIqUtils/gamPredictionReport.js
@@ -1,37 +1,20 @@
import { getEvents } from '../../src/events.js';
-import { isPlainObject, logError } from '../../src/utils.js';
+import { logError } from '../../src/utils.js';
+import { getSlotTargetingMap } from '../../src/utils/gptTargeting.js';
export function gamPredictionReport (gamObjectReference, sendData) {
try {
if (!gamObjectReference || !sendData) {
logError('Failed to get gamPredictionReport, required data is missed');
- return
+ return;
}
const getSlotTargeting = (slot) => {
- const kvs = {};
try {
- if (typeof slot.getConfig === 'function') {
- const current = slot.getConfig('targeting');
- const targeting = isPlainObject(current?.targeting)
- ? current.targeting
- : (isPlainObject(current) ? current : {});
- for (const k in targeting) {
- const v = targeting[k];
- if (v == null) continue;
- kvs[k] = Array.isArray(v) ? v : [typeof v === 'string' ? v : String(v)];
- }
- return kvs;
- }
- // Fallback in case an older version of Google Publisher Tag is used.
- if (typeof slot.getTargetingKeys === 'function' && typeof slot.getTargeting === 'function') {
- (slot.getTargetingKeys() || []).forEach((k) => {
- kvs[k] = slot.getTargeting(k);
- });
- }
+ return getSlotTargetingMap(slot);
} catch (e) {
logError('Failed to get slot targeting: ' + e);
+ return {};
}
- return kvs;
};
const extractWinData = (gamEvent) => {
diff --git a/libraries/intentIqUtils/getCmpData.js b/libraries/intentIqUtils/getCmpData.js
index b23f0fbaffe..63a953b77c9 100644
--- a/libraries/intentIqUtils/getCmpData.js
+++ b/libraries/intentIqUtils/getCmpData.js
@@ -1,8 +1,9 @@
-import { allConsent } from '../../src/consentHandler.js';
+import { allConsent } from "../../src/consentHandler.js";
/**
* Retrieves consent data from the Consent Management Platform (CMP).
* @return {Object} An object containing the following fields:
+ * - `gdprApplies` (boolean): Whether GDPR applies.
* - `gdprString` (string): GDPR consent string if available.
* - `uspString` (string): USP consent string if available.
* - `gppString` (string): GPP consent string if available.
@@ -15,5 +16,18 @@ export function getCmpData() {
gdprString: typeof consentData?.gdpr?.consentString === 'string' ? consentData.gdpr.consentString : null,
uspString: typeof consentData?.usp === 'string' ? consentData.usp : null,
gppString: typeof consentData?.gpp?.gppString === 'string' ? consentData.gpp.gppString : null,
+ tcfApiVersion: consentData?.gdpr?.apiVersion
};
}
+
+export function isValidValue(val) {
+ return !!val && val !== 'undefined';
+}
+
+export function areCmpValuesEqual(a, b) {
+ const aValid = isValidValue(a);
+ const bValid = isValidValue(b);
+ if (!aValid && !bValid) return true;
+ if (aValid !== bValid) return false;
+ return a === b;
+}
diff --git a/libraries/intentIqUtils/getSyncKey.js b/libraries/intentIqUtils/getSyncKey.js
index 723a60e0059..a21dd140e4c 100644
--- a/libraries/intentIqUtils/getSyncKey.js
+++ b/libraries/intentIqUtils/getSyncKey.js
@@ -1 +1 @@
-export const SYNC_KEY = (partner) => '_iiq_sync' + '_' + partner
+export const SYNC_KEY = (partner) => '_iiq_sync' + '_' + partner;
diff --git a/libraries/intentIqUtils/storageUtils.js b/libraries/intentIqUtils/storageUtils.js
index a15e09bbac2..dd94ad895de 100644
--- a/libraries/intentIqUtils/storageUtils.js
+++ b/libraries/intentIqUtils/storageUtils.js
@@ -8,6 +8,19 @@ const PCID_EXPIRY = 365;
export const storage = getStorageManager({ moduleType: MODULE_TYPE_UID, moduleName: MODULE_NAME });
+/**
+ * Detects partner-data keys of the form `_iiq_fdata_`.
+ * @param {string} key
+ * @returns {boolean}
+ */
+export function isPartnerDataKey(key) {
+ if (typeof key !== 'string') return false;
+ const parts = key.split('_fdata_');
+ if (parts.length < 2) return false;
+ const partnerId = parts[1];
+ return !!partnerId && !Number.isNaN(Number(partnerId));
+}
+
/**
* Read data from local storage or cookie based on allowed storage types.
* @param {string} key - The key to read data from.
@@ -34,12 +47,30 @@ export function readData(key, allowedStorage) {
* @param {string} key - The key under which the data will be stored.
* @param {string} value - The value to be stored (e.g., IntentIQ ID).
* @param {Array} allowedStorage - An array of allowed storage types: 'html5' for Local Storage and/or 'cookie' for Cookies.
- * @param {Object} firstPartyData - Contains user consent data; if isOptedOut is true, data will not be stored (except for FIRST_PARTY_KEY).
+ * @param {Object} firstPartyData - Contains user consent data; when isOptedOut is true only a stripped subset is persisted to device.
*/
export function storeData(key, value, allowedStorage, firstPartyData) {
try {
- if (firstPartyData?.isOptedOut && key !== FIRST_PARTY_KEY) {
- return;
+ if (firstPartyData?.isOptedOut) {
+ // Limit what reaches device storage when the user is opted out.
+ // - FIRST_PARTY_KEY: drop identifiers (pcid, pcidDate, pid, abTestUuid). Keep gdprString/isOptedOut/sCal etc.
+ // - Partner data (_iiq_fdata_): persist only terminationCause.
+ // - Anything else: do not persist.
+ if (key === FIRST_PARTY_KEY) {
+ const parsed = typeof value === 'string' ? tryParse(value) : (value && typeof value === 'object' ? { ...value } : null);
+ if (parsed) {
+ delete parsed.pcid;
+ delete parsed.pcidDate;
+ delete parsed.pid;
+ delete parsed.abTestUuid;
+ value = JSON.stringify(parsed);
+ }
+ } else if (isPartnerDataKey(key)) {
+ const parsed = typeof value === 'string' ? tryParse(value) : (value && typeof value === 'object' ? value : null);
+ value = JSON.stringify({ terminationCause: parsed ? parsed.terminationCause : undefined });
+ } else {
+ return;
+ }
}
logInfo(MODULE_NAME + ': storing data: key=' + key + ' value=' + value);
if (value) {
diff --git a/libraries/keywords/keywords.js b/libraries/keywords/keywords.js
index 04912a84b5b..bdcfa497707 100644
--- a/libraries/keywords/keywords.js
+++ b/libraries/keywords/keywords.js
@@ -27,5 +27,5 @@ export function getAllOrtbKeywords(ortb2, ...extraCommaSeparatedKeywords) {
return mergeKeywords(
...ORTB_KEYWORDS_PATHS.map(path => deepAccess(ortb2, path)),
...extraCommaSeparatedKeywords
- )
+ );
}
diff --git a/libraries/liveIntentId/externalIdSystem.js b/libraries/liveIntentId/externalIdSystem.js
index e4640f17ecd..6bf99e45904 100644
--- a/libraries/liveIntentId/externalIdSystem.js
+++ b/libraries/liveIntentId/externalIdSystem.js
@@ -1,7 +1,7 @@
import { logError } from '../../src/utils.js';
import { gdprDataHandler, uspDataHandler, gppDataHandler } from '../../src/adapterManager.js';
import { submodule } from '../../src/hook.js';
-import { DEFAULT_AJAX_TIMEOUT, MODULE_NAME, parseRequestedAttributes, composeResult, eids, GVLID, PRIMARY_IDS, makeSourceEventToSend, setUpTreatment } from './shared.js'
+import { DEFAULT_AJAX_TIMEOUT, MODULE_NAME, parseRequestedAttributes, composeResult, eids, GVLID, PRIMARY_IDS, makeSourceEventToSend, setUpTreatment } from './shared.js';
/**
* @typedef {import('../../modules/userId/index.js').Submodule} Submodule
@@ -10,72 +10,72 @@ import { DEFAULT_AJAX_TIMEOUT, MODULE_NAME, parseRequestedAttributes, composeRes
*/
// Reference to the client for the liQHub.
-let cachedClientRef
+let cachedClientRef;
/**
* This function is used in tests.
*/
export function resetSubmodule() {
- cachedClientRef = undefined
+ cachedClientRef = undefined;
}
-window.liQHub = window.liQHub ?? []
+window.liQHub = window.liQHub ?? [];
function initializeClient(configParams) {
// Only initialize once.
- if (cachedClientRef != null) return cachedClientRef
+ if (cachedClientRef != null) return cachedClientRef;
- const clientRef = {}
+ const clientRef = {};
- const clientDetails = { name: 'prebid', version: '$prebid.version$' }
+ const clientDetails = { name: 'prebid', version: '$prebid.version$' };
const collectConfig = configParams.liCollectConfig ?? {};
- let integration
+ let integration;
if (collectConfig.appId != null) {
- integration = { type: 'application', appId: collectConfig.appId, publisherId: configParams.publisherId }
+ integration = { type: 'application', appId: collectConfig.appId, publisherId: configParams.publisherId };
} else if (configParams.distributorId != null && configParams.publisherId == null) {
- integration = { type: 'distributor', distributorId: configParams.distributorId }
+ integration = { type: 'distributor', distributorId: configParams.distributorId };
} else {
- integration = { type: 'custom', publisherId: configParams.publisherId, distributorId: configParams.distributorId }
+ integration = { type: 'custom', publisherId: configParams.publisherId, distributorId: configParams.distributorId };
}
const partnerCookies = new Set(configParams.identifiersToResolve ?? []);
- const collectSettings = { timeout: collectConfig.ajaxTimeout ?? DEFAULT_AJAX_TIMEOUT }
+ const collectSettings = { timeout: collectConfig.ajaxTimeout ?? DEFAULT_AJAX_TIMEOUT };
- let identityPartner
+ let identityPartner;
if (collectConfig.appId == null && configParams.distributorId != null) {
- identityPartner = configParams.distributorId
+ identityPartner = configParams.distributorId;
} else if (configParams.partner != null) {
- identityPartner = configParams.partner
+ identityPartner = configParams.partner;
} else {
- identityPartner = 'prebid'
+ identityPartner = 'prebid';
}
const resolveSettings = {
identityPartner,
timeout: configParams.ajaxTimeout ?? DEFAULT_AJAX_TIMEOUT
- }
+ };
function loadConsent() {
- const consent = {}
+ const consent = {};
const usPrivacyString = uspDataHandler.getConsentData();
if (usPrivacyString != null) {
- consent.usPrivacy = { consentString: usPrivacyString }
+ consent.usPrivacy = { consentString: usPrivacyString };
}
- const gdprConsent = gdprDataHandler.getConsentData()
+ const gdprConsent = gdprDataHandler.getConsentData();
if (gdprConsent != null) {
- consent.gdpr = gdprConsent
+ consent.gdpr = gdprConsent;
}
const gppConsent = gppDataHandler.getConsentData();
if (gppConsent != null) {
- consent.gpp = { consentString: gppConsent.gppString, applicableSections: gppConsent.applicableSections }
+ consent.gpp = { consentString: gppConsent.gppString, applicableSections: gppConsent.applicableSections };
}
- return consent
+ return consent;
}
- const consent = loadConsent()
+ const consent = loadConsent();
window.liQHub.push({
type: 'register_client',
@@ -86,15 +86,15 @@ function initializeClient(configParams) {
partnerCookies,
collectSettings,
resolveSettings
- })
+ });
- const sourceEvent = makeSourceEventToSend(configParams)
+ const sourceEvent = makeSourceEventToSend(configParams);
if (sourceEvent != null) {
- window.liQHub.push({ type: 'collect', clientRef, sourceEvent })
+ window.liQHub.push({ type: 'collect', clientRef, sourceEvent });
}
- cachedClientRef = clientRef
- return clientRef
+ cachedClientRef = clientRef;
+ return clientRef;
}
/**
@@ -110,7 +110,7 @@ function resolve(configParams, clientRef, callback) {
callback();
}
- const onSuccess = [{ type: 'callback', callback }]
+ const onSuccess = [{ type: 'callback', callback }];
window.liQHub.push({
type: 'resolve',
@@ -118,7 +118,7 @@ function resolve(configParams, clientRef, callback) {
requestedAttributes: parseRequestedAttributes(configParams.requestedAttributesOverrides),
onFailure,
onSuccess
- })
+ });
}
/** @type {IdProviderSpec} */
@@ -139,9 +139,9 @@ export const liveIntentExternalIdSubmodule = {
setUpTreatment(configParams);
// Ensure client is initialized and we fired at least one collect request.
- initializeClient(configParams)
+ initializeClient(configParams);
- return composeResult(value, configParams)
+ return composeResult(value, configParams);
},
/**
@@ -152,7 +152,7 @@ export const liveIntentExternalIdSubmodule = {
const configParams = config?.params ?? {};
setUpTreatment(configParams);
- const clientRef = initializeClient(configParams)
+ const clientRef = initializeClient(configParams);
return { callback: function(cb) { resolve(configParams, clientRef, cb); } };
},
diff --git a/libraries/liveIntentId/idSystem.js b/libraries/liveIntentId/idSystem.js
index 9c2cf65f4e8..67c1da62d02 100644
--- a/libraries/liveIntentId/idSystem.js
+++ b/libraries/liveIntentId/idSystem.js
@@ -5,13 +5,13 @@
* @requires module:modules/userId
*/
import { triggerPixel, logError } from '../../src/utils.js';
-import { ajaxBuilder } from '../../src/ajax.js';
+import { qualifiedAjaxBuilder } from '../../src/ajax.js';
import { gdprDataHandler, uspDataHandler, gppDataHandler } from '../../src/adapterManager.js';
import { submodule } from '../../src/hook.js';
import { LiveConnect } from 'live-connect-js'; // eslint-disable-line prebid/validate-imports
import { getStorageManager } from '../../src/storageManager.js';
import { MODULE_TYPE_UID } from '../../src/activities/modules.js';
-import { DEFAULT_AJAX_TIMEOUT, MODULE_NAME, composeResult, eids, GVLID, DEFAULT_DELAY, PRIMARY_IDS, parseRequestedAttributes, makeSourceEventToSend, setUpTreatment } from './shared.js'
+import { DEFAULT_AJAX_TIMEOUT, MODULE_NAME, composeResult, eids, GVLID, DEFAULT_DELAY, PRIMARY_IDS, parseRequestedAttributes, makeSourceEventToSend, setUpTreatment } from './shared.js';
/**
* @typedef {import('../../modules/userId/index.js').Submodule} Submodule
@@ -26,7 +26,7 @@ const EVENTS_TOPIC = 'pre_lips';
export const storage = getStorageManager({ moduleType: MODULE_TYPE_UID, moduleName: MODULE_NAME });
const calls = {
ajaxGet: (url, onSuccess, onError, timeout, headers) => {
- ajaxBuilder(timeout)(
+ qualifiedAjaxBuilder(MODULE_TYPE_UID, MODULE_NAME, timeout)(
url,
{
success: onSuccess,
@@ -38,10 +38,10 @@ const calls = {
withCredentials: true,
customHeaders: headers
}
- )
+ );
},
pixelGet: (url, onload) => triggerPixel(url, onload)
-}
+};
let eventFired = false;
let liveConnect = null;
@@ -139,7 +139,7 @@ function initializeLiveConnect(configParams) {
// The third param is the ajax and pixel object, the AJAX and pixel use PBJS.
liveConnect = liveIntentIdSubmodule.getInitializer()(liveConnectConfig, storage, calls);
- const sourceEvent = makeSourceEventToSend(configParams)
+ const sourceEvent = makeSourceEventToSend(configParams);
if (sourceEvent != null) {
liveConnect.push(sourceEvent);
}
@@ -222,8 +222,8 @@ export const liveIntentIdSubmodule = {
logError(`${MODULE_NAME}: ID fetch encountered an error: `, error);
callback();
}
- )
- }
+ );
+ };
return { callback: result };
},
diff --git a/libraries/liveIntentId/shared.js b/libraries/liveIntentId/shared.js
index 56ce8c3c8cb..1e4ffcc9fef 100644
--- a/libraries/liveIntentId/shared.js
+++ b/libraries/liveIntentId/shared.js
@@ -1,7 +1,7 @@
import { UID1_EIDS } from '../uid1Eids/uid1Eids.js';
import { UID2_EIDS } from '../uid2Eids/uid2Eids.js';
import { getRefererInfo } from '../../src/refererDetection.js';
-import { isNumber } from '../../src/utils.js'
+import { isNumber } from '../../src/utils.js';
export const PRIMARY_IDS = ['libp'];
export const GVLID = 148;
@@ -24,27 +24,27 @@ export function parseRequestedAttributes(overrides) {
}
export function makeSourceEventToSend(configParams) {
- const sourceEvent = {}
- let nonEmpty = false
+ const sourceEvent = {};
+ let nonEmpty = false;
if (typeof configParams.emailHash === 'string') {
- nonEmpty = true
- sourceEvent.emailHash = configParams.emailHash
+ nonEmpty = true;
+ sourceEvent.emailHash = configParams.emailHash;
}
if (typeof configParams.ipv4 === 'string') {
- nonEmpty = true
- sourceEvent.ipv4 = configParams.ipv4
+ nonEmpty = true;
+ sourceEvent.ipv4 = configParams.ipv4;
}
if (typeof configParams.ipv6 === 'string') {
- nonEmpty = true
- sourceEvent.ipv6 = configParams.ipv6
+ nonEmpty = true;
+ sourceEvent.ipv6 = configParams.ipv6;
}
if (typeof configParams.userAgent === 'string') {
- nonEmpty = true
- sourceEvent.userAgent = configParams.userAgent
+ nonEmpty = true;
+ sourceEvent.userAgent = configParams.userAgent;
}
if (nonEmpty) {
- return sourceEvent
+ return sourceEvent;
}
}
@@ -64,76 +64,76 @@ function composeIdObject(value) {
const result = {};
// old versions stored lipbid in unifiedId. Ensure that we can still read the data.
- const lipbid = value.nonId || value.unifiedId
- result.lipb = lipbid ? { ...value, lipbid } : value
- delete result.lipb?.unifiedId
+ const lipbid = value.nonId || value.unifiedId;
+ result.lipb = lipbid ? { ...value, lipbid } : value;
+ delete result.lipb?.unifiedId;
// Lift usage of uid2 by exposing uid2 if we were asked to resolve it.
// As adapters are applied in lexicographical order, we will always
// be overwritten by the 'proper' uid2 module if it is present.
if (value.uid2) {
- result.uid2 = { 'id': value.uid2, ext: { provider: LI_PROVIDER_DOMAIN } }
+ result.uid2 = { 'id': value.uid2, ext: { provider: LI_PROVIDER_DOMAIN } };
}
if (value.bidswitch) {
- result.bidswitch = { 'id': value.bidswitch, ext: { provider: LI_PROVIDER_DOMAIN } }
+ result.bidswitch = { 'id': value.bidswitch, ext: { provider: LI_PROVIDER_DOMAIN } };
}
if (value.triplelift) {
- result.triplelift = { 'id': value.triplelift, ext: { provider: LI_PROVIDER_DOMAIN } }
+ result.triplelift = { 'id': value.triplelift, ext: { provider: LI_PROVIDER_DOMAIN } };
}
if (value.zetassp) {
- result.zetassp = { 'id': value.zetassp, ext: { provider: LI_PROVIDER_DOMAIN } }
+ result.zetassp = { 'id': value.zetassp, ext: { provider: LI_PROVIDER_DOMAIN } };
}
if (value.medianet) {
- result.medianet = { 'id': value.medianet, ext: { provider: LI_PROVIDER_DOMAIN } }
+ result.medianet = { 'id': value.medianet, ext: { provider: LI_PROVIDER_DOMAIN } };
}
if (value.magnite) {
- result.magnite = { 'id': value.magnite, ext: { provider: LI_PROVIDER_DOMAIN } }
+ result.magnite = { 'id': value.magnite, ext: { provider: LI_PROVIDER_DOMAIN } };
}
if (value.index) {
- result.index = { 'id': value.index, ext: { provider: LI_PROVIDER_DOMAIN } }
+ result.index = { 'id': value.index, ext: { provider: LI_PROVIDER_DOMAIN } };
}
if (value.openx) {
- result.openx = { 'id': value.openx, ext: { provider: LI_PROVIDER_DOMAIN } }
+ result.openx = { 'id': value.openx, ext: { provider: LI_PROVIDER_DOMAIN } };
}
if (value.pubmatic) {
- result.pubmatic = { 'id': value.pubmatic, ext: { provider: LI_PROVIDER_DOMAIN } }
+ result.pubmatic = { 'id': value.pubmatic, ext: { provider: LI_PROVIDER_DOMAIN } };
}
if (value.sovrn) {
- result.sovrn = { 'id': value.sovrn, ext: { provider: LI_PROVIDER_DOMAIN } }
+ result.sovrn = { 'id': value.sovrn, ext: { provider: LI_PROVIDER_DOMAIN } };
}
if (value.thetradedesk) {
- result.lipb = { ...result.lipb, tdid: value.thetradedesk }
- result.tdid = { 'id': value.thetradedesk, ext: { rtiPartner: 'TDID', provider: getRefererInfo().domain || LI_PROVIDER_DOMAIN } }
- delete result.lipb.thetradedesk
+ result.lipb = { ...result.lipb, tdid: value.thetradedesk };
+ result.tdid = { 'id': value.thetradedesk, ext: { rtiPartner: 'TDID', provider: getRefererInfo().domain || LI_PROVIDER_DOMAIN } };
+ delete result.lipb.thetradedesk;
}
if (value.sharethrough) {
- result.sharethrough = { 'id': value.sharethrough, ext: { provider: LI_PROVIDER_DOMAIN } }
+ result.sharethrough = { 'id': value.sharethrough, ext: { provider: LI_PROVIDER_DOMAIN } };
}
if (value.sonobi) {
- result.sonobi = { 'id': value.sonobi, ext: { provider: LI_PROVIDER_DOMAIN } }
+ result.sonobi = { 'id': value.sonobi, ext: { provider: LI_PROVIDER_DOMAIN } };
}
if (value.vidazoo) {
- result.vidazoo = { 'id': value.vidazoo, ext: { provider: LI_PROVIDER_DOMAIN } }
+ result.vidazoo = { 'id': value.vidazoo, ext: { provider: LI_PROVIDER_DOMAIN } };
}
if (value.nexxen) {
- result.nexxen = { 'id': value.nexxen, ext: { provider: LI_PROVIDER_DOMAIN } }
+ result.nexxen = { 'id': value.nexxen, ext: { provider: LI_PROVIDER_DOMAIN } };
}
- return result
+ return result;
}
export function setUpTreatment(config) {
@@ -330,4 +330,4 @@ export const eids = {
}
}
}
-}
+};
diff --git a/libraries/mediaImpactUtils/index.js b/libraries/mediaImpactUtils/index.js
index c089e696030..b5bb140ef0a 100644
--- a/libraries/mediaImpactUtils/index.js
+++ b/libraries/mediaImpactUtils/index.js
@@ -1,5 +1,5 @@
import { buildUrl } from '../../src/utils.js';
-import { ajax } from '../../src/ajax.js';
+import { noCredsAjax as ajax } from '../../src/ajax.js';
/**
* Builds the bid requests and beacon parameters.
diff --git a/libraries/medianetUtils/constants.js b/libraries/medianetUtils/constants.js
index 36de784fcd3..4106b06161d 100644
--- a/libraries/medianetUtils/constants.js
+++ b/libraries/medianetUtils/constants.js
@@ -63,12 +63,12 @@ export const VIDEO_UUID_PENDING = 9999;
export const VIDEO_CONTEXT = {
INSTREAM: 'instream',
OUTSTREAM: 'outstream'
-}
+};
export const VIDEO_PLACEMENT = {
[VIDEO_CONTEXT.INSTREAM]: 1,
[VIDEO_CONTEXT.OUTSTREAM]: 6
-}
+};
// Log Types
export const LOG_APPR = 'APPR';
diff --git a/libraries/medianetUtils/logger.js b/libraries/medianetUtils/logger.js
index d3dc46419f4..10df86ec5d8 100644
--- a/libraries/medianetUtils/logger.js
+++ b/libraries/medianetUtils/logger.js
@@ -7,7 +7,7 @@ import {
mnetGlobals, POST_ENDPOINT,
PREBID_VERSION
} from './constants.js';
-import { ajax, sendBeacon } from '../../src/ajax.js';
+import { noCredsAjax as ajax, sendBeacon } from '../../src/ajax.js';
import { getRefererInfo } from '../../src/refererDetection.js';
import { getGlobal } from '../../src/prebidGlobal.js';
diff --git a/libraries/metadata/metadata.js b/libraries/metadata/metadata.js
index 59d073de97f..8426f4c01aa 100644
--- a/libraries/metadata/metadata.js
+++ b/libraries/metadata/metadata.js
@@ -15,7 +15,7 @@ export function metadataRepository() {
}
components[component.componentType][component.componentName] = component;
componentsByModule[moduleName].push([component.componentType, component.componentName]);
- })
+ });
}
if (data.disclosures) {
Object.assign(disclosures, data.disclosures);
@@ -35,13 +35,13 @@ export function metadataRepository() {
components
.filter(({ disclosureURL }) => disclosureURL != null)
.map(({ disclosureURL }) => [disclosureURL, repo.getStorageDisclosure(disclosureURL)])
- )
+ );
return {
disclosures,
components
- }
+ };
},
- }
+ };
return repo;
}
diff --git a/libraries/mgidUtils/mgidUtils.js b/libraries/mgidUtils/mgidUtils.js
index bb215970ddf..17e48cef4dd 100644
--- a/libraries/mgidUtils/mgidUtils.js
+++ b/libraries/mgidUtils/mgidUtils.js
@@ -46,9 +46,9 @@ export function getUserSyncs(syncOptions, serverResponses, gdprConsent, uspConse
}
}
if (config.getConfig('coppa')) {
- query.push('coppa=1')
+ query.push('coppa=1');
}
- const q = query.join('&')
+ const q = query.join('&');
if (syncOptions.iframeEnabled) {
syncs.push({
type: 'iframe',
diff --git a/libraries/mspa/activityControls.ts b/libraries/mspa/activityControls.ts
index 06b1a6ee0f2..cac9fb6d7bc 100644
--- a/libraries/mspa/activityControls.ts
+++ b/libraries/mspa/activityControls.ts
@@ -31,7 +31,7 @@ declare module '../../modules/consentManagementGpp' {
const SENSITIVE_DATA_GEO = 7;
function isApplicable(val) {
- return val != null && val !== 0
+ return val != null && val !== 0;
}
export function isBasicConsentDenied(cd) {
@@ -50,7 +50,7 @@ export function isBasicConsentDenied(cd) {
}
export function sensitiveNoticeIs(cd, value) {
- return ['SensitiveDataProcessingOptOutNotice', 'SensitiveDataLimitUseNotice'].some(prop => cd[prop] === value)
+ return ['SensitiveDataProcessingOptOutNotice', 'SensitiveDataLimitUseNotice'].some(prop => cd[prop] === value);
}
export function isConsentDenied(cd) {
@@ -77,7 +77,7 @@ export const isTransmitUfpdConsentDenied = (() => {
// personal communication data, status as victim of crime (version 2), status as transgender/nonbinary (version 2)
const cannotBeInScope = [6, 7, 9, 10, 12, 14, 16].map(el => --el);
// require consent for everything else (except geo, which is treated separately)
- const allExceptGeo = Array.from(Array(16).keys()).filter((el) => el !== SENSITIVE_DATA_GEO)
+ const allExceptGeo = Array.from(Array(16).keys()).filter((el) => el !== SENSITIVE_DATA_GEO);
const mustHaveConsent = allExceptGeo.filter(el => !cannotBeInScope.includes(el));
return Object.fromEntries(
@@ -85,15 +85,15 @@ export const isTransmitUfpdConsentDenied = (() => {
1: 12,
2: 16
}).map(([version, cardinality]) => {
- const isInVersion = (el) => el < cardinality
+ const isInVersion = (el) => el < cardinality;
return [version, {
cannotBeInScope: cannotBeInScope.filter(isInVersion),
allExceptGeo: allExceptGeo.filter(isInVersion),
mustHaveConsent: mustHaveConsent.filter(isInVersion)
- }]
+ }];
})
- )
- })()
+ );
+ })();
return function (cd) {
const { cannotBeInScope, mustHaveConsent, allExceptGeo } = sensitiveFlags[cd.Version];
@@ -105,8 +105,8 @@ export const isTransmitUfpdConsentDenied = (() => {
// user opted out for not-as-sensitive data
mustHaveConsent.some(i => cd.SensitiveDataProcessing[i] === 1) ||
// CMP says it has consent, but did not give notice about it
- (sensitiveNoticeIs(cd, 0) && allExceptGeo.some(i => cd.SensitiveDataProcessing[i] === 2))
- }
+ (sensitiveNoticeIs(cd, 0) && allExceptGeo.some(i => cd.SensitiveDataProcessing[i] === 2));
+ };
})();
export function isTransmitGeoConsentDenied(cd) {
@@ -116,7 +116,7 @@ export function isTransmitGeoConsentDenied(cd) {
// no sensitive data notice was given
sensitiveNoticeIs(cd, 2) ||
// do not trust CMP if it says it has consent for geo but didn't show a sensitive data notice
- (sensitiveNoticeIs(cd, 0) && geoConsent === 2)
+ (sensitiveNoticeIs(cd, 0) && geoConsent === 2);
}
const CONSENT_RULES = {
@@ -136,7 +136,7 @@ export function mspaRule(sids, getConsent, denies, applicableSids = () => gppDat
return { allow: false, reason: 'consent data not available' };
}
if (![1, 2].includes(consent.Version)) {
- return { allow: false, reason: `unsupported consent specification version "${consent.Version}"` }
+ return { allow: false, reason: `unsupported consent specification version "${consent.Version}"` };
}
if (denies(consent)) {
return { allow: false };
@@ -159,7 +159,7 @@ export function getRules(restrictActivities) {
export function setupRules(api, sids, rules = CONSENT_RULES, normalizeConsent = (c) => c, registerRule = registerActivityControl, getConsentData = () => gppDataHandler.getConsentData()) {
const unreg = [];
const ruleName = `MSPA (GPP '${api}' for section${sids.length > 1 ? 's' : ''} ${sids.join(', ')})`;
- logInfo(`Enabling activity controls for ${ruleName}`)
+ logInfo(`Enabling activity controls for ${ruleName}`);
Object.entries(rules).forEach(([activity, denies]) => {
unreg.push(registerRule(activity, ruleName, mspaRule(
sids,
diff --git a/libraries/nexverseUtils/index.js b/libraries/nexverseUtils/index.js
index 45185be647d..270c694c89c 100644
--- a/libraries/nexverseUtils/index.js
+++ b/libraries/nexverseUtils/index.js
@@ -24,7 +24,7 @@ export const NV_ORTB_NATIVE_TYPE_MAPPING = {
'11': 'displayUrl',
'12': 'cta'
}
-}
+};
/**
* Determines the device model (if possible).
@@ -107,21 +107,21 @@ export function parseNativeResponse(adm) {
if (isArray(assets)) {
assets.forEach(asset => {
if (!isEmpty(asset.title) && !isEmpty(asset.title.text)) {
- result.title = asset.title.text
+ result.title = asset.title.text;
} else if (!isEmpty(asset.img)) {
result[NV_ORTB_NATIVE_TYPE_MAPPING.img[asset.img.type]] = {
url: asset.img.url,
height: asset.img.h,
width: asset.img.w
- }
+ };
} else if (!isEmpty(asset.data)) {
- result[NV_ORTB_NATIVE_TYPE_MAPPING.data[asset.data.type]] = asset.data.value
+ result[NV_ORTB_NATIVE_TYPE_MAPPING.data[asset.data.type]] = asset.data.value;
}
});
}
return result;
} catch (e) {
- printLog('error', `Error parsing native response: `, e)
+ printLog('error', `Error parsing native response: `, e);
logError(`${LOG_ERROR_PREFIX} Error parsing native response: `, e);
return {};
}
@@ -178,10 +178,10 @@ export const getUid = (storage) => {
export const getBidFloor = (bid, creative) => {
let floorInfo = isFn(bid.getFloor) ? bid.getFloor({ currency: 'USD', mediaType: creative, size: '*' }) : {};
if (isPlainObject(floorInfo) && !isNaN(floorInfo.floor)) {
- return floorInfo.floor
+ return floorInfo.floor;
}
return (bid.params.bidFloor ? bid.params.bidFloor : 0.0);
-}
+};
/**
* Detects the OS and version from the browser and formats them for ORTB 2.5.
@@ -224,4 +224,4 @@ export const getOsInfo = () => {
}
return { os: "Unknown", osv: undefined };
-}
+};
diff --git a/libraries/nexx360Utils/index.ts b/libraries/nexx360Utils/index.ts
index dcda56e7546..c90d9246bde 100644
--- a/libraries/nexx360Utils/index.ts
+++ b/libraries/nexx360Utils/index.ts
@@ -18,7 +18,7 @@ const getSessionId = ():string => {
const id:string = generateUUID();
sessionId = id;
return id;
-}
+};
let lastPageUrl:string = '';
let requestCounter:number = 0;
@@ -29,7 +29,7 @@ const getRequestCount = ():number => {
}
lastPageUrl = window.location.pathname;
return 0;
-}
+};
export const getLocalStorageFunctionGenerator = <
T extends Record
@@ -102,7 +102,7 @@ export type CreateRenderPayload = {
divId: string,
width: number,
height: number
-}
+};
export const createRenderer = (
{ requestId, vastXml, divId, width, height }: CreateRenderPayload
@@ -135,7 +135,7 @@ export const enrichImp = (imp:ORTBImp, bidRequest:BidRequest): ORTBImp =
deepSetValue(imp, 'video.ext.context', videoContext);
}
return imp;
-}
+};
export const enrichRequest = (
request: ORTBRequest,
@@ -207,7 +207,7 @@ export function createResponse(bid:any, ortbResponse:any): BidResponse {
if (bid.ext.mediaType === NATIVE) {
try {
- response.native = { ortb: JSON.parse(bid.adm) }
+ response.native = { ortb: JSON.parse(bid.adm) };
} catch (e) {}
}
return response as BidResponse;
@@ -228,7 +228,7 @@ export const interpretResponse = (serverResponse: ServerResponse): AdapterRespon
}
}
return responses;
-}
+};
/**
* Get the AMX ID
@@ -244,7 +244,7 @@ export const getAmxId = (
}
const amxId = storage.getDataFromLocalStorage('__amuidpb');
return amxId || null;
-}
+};
export const getGzipSetting = (
bidderCode: string,
diff --git a/libraries/objectGuard/objectGuard.js b/libraries/objectGuard/objectGuard.js
index 4fbd58080f9..09a7f3bbb3a 100644
--- a/libraries/objectGuard/objectGuard.js
+++ b/libraries/objectGuard/objectGuard.js
@@ -71,7 +71,7 @@ export function objectGuard(rules) {
}
return val;
}
- }
+ };
}
return node.redactRule;
}
@@ -80,7 +80,7 @@ export function objectGuard(rules) {
if (node.wpRule == null) {
node.wpRule = node.wpRules.length === 0 ? false : {
check: (applies) => node.wpRules.some(applies),
- }
+ };
}
return node.wpRule;
}
@@ -166,7 +166,7 @@ export function objectGuard(rules) {
if (sub !== obj[k]) {
obj[k] = sub;
}
- })
+ });
return obj;
}
@@ -176,7 +176,7 @@ export function objectGuard(rules) {
const val = Reflect.get(target, prop, receiver);
if (final && val != null && typeof val === 'object') {
// a parent property has write protect rules, keep guarding
- return mkGuard(val, tree, final, applies, cache)
+ return mkGuard(val, tree, final, applies, cache);
} else if (tree.children?.hasOwnProperty(prop)) {
const { children, hasWP } = tree.children[prop];
if (isData(val)) {
@@ -235,7 +235,7 @@ export function objectGuard(rules) {
return function guard(obj, ...args) {
const session = {};
- return mkGuard(obj, root, false, sessionedApplies(session, ...args))
+ return mkGuard(obj, root, false, sessionedApplies(session, ...args));
};
}
@@ -246,5 +246,5 @@ export function objectGuard(rules) {
export function writeProtectRule(ruleDef) {
return Object.assign({
wp: true,
- }, ruleDef)
+ }, ruleDef);
}
diff --git a/libraries/objectGuard/ortbGuard.js b/libraries/objectGuard/ortbGuard.js
index 7587975ac06..2e427afb40e 100644
--- a/libraries/objectGuard/ortbGuard.js
+++ b/libraries/objectGuard/ortbGuard.js
@@ -21,7 +21,7 @@ function ortb2EnrichRules(isAllowed = isActivityAllowed) {
paths: ORTB_UFPD_PATHS,
applies: appliesWhenActivityDenied(ACTIVITY_ENRICH_UFPD, isAllowed)
}
- ].map(writeProtectRule)
+ ].map(writeProtectRule);
}
export function ortb2GuardFactory(isAllowed = isActivityAllowed) {
@@ -45,7 +45,7 @@ export function ortb2FragmentsGuardFactory(guardOrtb2 = ortb2Guard) {
get(target, prop, receiver) {
let bidderData = Reflect.get(target, prop, receiver);
if (bidderData != null) {
- bidderData = guardOrtb2(bidderData, params)
+ bidderData = guardOrtb2(bidderData, params);
}
return bidderData;
},
@@ -60,7 +60,7 @@ export function ortb2FragmentsGuardFactory(guardOrtb2 = ortb2Guard) {
bidderData = guardOrtb2(bidderData, params);
Object.entries(newValue).forEach(([prop, value]) => {
bidderData[prop] = value;
- })
+ });
return true;
}
})
@@ -72,8 +72,8 @@ export function ortb2FragmentsGuardFactory(guardOrtb2 = ortb2Guard) {
// disallow overwriting of the top level `global` / `bidder`
Object.entries(guard).map(([prop, obj]) => [prop, { get: () => obj }])
)
- )
- }
+ );
+ };
}
/**
diff --git a/libraries/ortb2.5Translator/translator.js b/libraries/ortb2.5Translator/translator.js
index f65de19b306..6843faeddb6 100644
--- a/libraries/ortb2.5Translator/translator.js
+++ b/libraries/ortb2.5Translator/translator.js
@@ -18,7 +18,7 @@ export function splitPath(path) {
}
export function addExt(prefix, field) {
- return `${prefix}.ext.${field}`
+ return `${prefix}.ext.${field}`;
}
function removeExt(prefix, field) {
@@ -84,9 +84,9 @@ export function ortb25Translator(deleteFields = true, rules = TO_25_DEFAULT_RULE
} catch (e) {
logError('Error translating request to ORTB 2.5', e);
}
- })
+ });
return ortb2;
- }
+ };
}
/**
diff --git a/libraries/ortbConverter/converter.ts b/libraries/ortbConverter/converter.ts
index ee1f42a3467..9d5ce45a935 100644
--- a/libraries/ortbConverter/converter.ts
+++ b/libraries/ortbConverter/converter.ts
@@ -41,14 +41,14 @@ type Context = {
* the default value to use for `bidResponse.ttl` (if the ORTB response does not provide one in `seatbid[].bid[].exp`).
*/
ttl?: number;
-}
+};
type RequestContext = Context & {
/**
* Map from imp id to the context object used to generate that imp.
*/
impContext: { [impId: string]: Context };
-}
+};
type Params = {
[IMP]: (
@@ -83,29 +83,29 @@ type Params = {
bidRequests: BidRequest[];
}
) => AdapterResponse
-}
+};
type Processors = {
[M in keyof Params]?: {
[name: string]: (...args: [Partial[M]>>, ...Parameters[M]>]) => void;
}
-}
+};
type Customizers = {
[M in keyof Params]?: (buildObject: Params[M], ...args: Parameters[M]>) => ReturnType[M]>;
-}
+};
type Overrides = {
[M in keyof Params]?: {
[name: string]: (orig: NonNullable[M]>[string], ...args: Parameters[M]>[string]>) => void;
}
-}
+};
type ConverterConfig = Customizers & {
context?: Context;
processors?: () => Processors;
overrides?: Overrides;
-}
+};
export function ortbConverter({
context: defaultContext = {},
@@ -133,11 +133,11 @@ export function ortbConverter({
} catch (e) {
errorHandler.call(this, e, ...args);
}
- }
+ };
})();
}
return build.apply(this, args);
- }
+ };
}
const buildImp = builder(IMP, imp,
@@ -196,7 +196,7 @@ export function ortbConverter({
const ctx = {
req: Object.assign({ bidRequests }, defaultContext, context),
imp: {}
- }
+ };
ctx.req.impContext = ctx.imp;
const imps = bidRequests.map(bidRequest => {
const impContext = Object.assign({ bidderRequest, reqContext: ctx.req }, defaultContext, context);
@@ -225,7 +225,7 @@ export function ortbConverter({
}): AdapterResponse {
const ctx = REQ_CTX.get(request);
if (ctx == null) {
- throw new Error('ortbRequest passed to `fromORTB` must be the same object returned by `toORTB`')
+ throw new Error('ortbRequest passed to `fromORTB` must be the same object returned by `toORTB`');
}
function augmentContext(ctx, extraParams = {}) {
return Object.assign(ctx, { ortbRequest: request }, extraParams);
@@ -242,7 +242,7 @@ export function ortbConverter({
).filter(Boolean);
return buildResponse(bidResponses, response, augmentContext(ctx.req));
}
- }
+ };
}
export const defaultProcessors = memoize(() => mergeProcessors(DEFAULT_PROCESSORS, getProcessors(DEFAULT)));
diff --git a/libraries/ortbConverter/lib/composer.js b/libraries/ortbConverter/lib/composer.js
index 477d4e10890..1741abc45e5 100644
--- a/libraries/ortbConverter/lib/composer.js
+++ b/libraries/ortbConverter/lib/composer.js
@@ -25,9 +25,9 @@ export function compose(components, overrides = {}) {
sorted.sort((a, b) => {
a = a[1].priority || 0;
b = b[1].priority || 0;
- return a === b ? 0 : a > b ? -1 : 1
+ return a === b ? 0 : a > b ? -1 : 1;
});
- SORTED.set(components, sorted.map(([name, cmp]) => [name, cmp.fn]))
+ SORTED.set(components, sorted.map(([name, cmp]) => [name, cmp.fn]));
}
const fns = SORTED.get(components)
.filter(([name]) => !overrides.hasOwnProperty(name) || overrides[name])
@@ -38,6 +38,6 @@ export function compose(components, overrides = {}) {
const args = Array.from(arguments);
fns.forEach(fn => {
fn.apply(this, args);
- })
- }
+ });
+ };
}
diff --git a/libraries/ortbConverter/lib/mergeProcessors.js b/libraries/ortbConverter/lib/mergeProcessors.js
index 60892c36897..75dcbec9e89 100644
--- a/libraries/ortbConverter/lib/mergeProcessors.js
+++ b/libraries/ortbConverter/lib/mergeProcessors.js
@@ -5,5 +5,5 @@ export function mergeProcessors(...processors) {
const right = processors.length > 1 ? mergeProcessors(...processors) : processors[0];
return Object.fromEntries(
PROCESSOR_TYPES.map(type => [type, Object.assign({}, left[type], right[type])])
- )
+ );
}
diff --git a/libraries/ortbConverter/processors/default.js b/libraries/ortbConverter/processors/default.js
index 3b6b1156063..f669ddafc7b 100644
--- a/libraries/ortbConverter/processors/default.js
+++ b/libraries/ortbConverter/processors/default.js
@@ -13,7 +13,7 @@ export const DEFAULT_PROCESSORS = {
// sets initial request to bidderRequest.ortb2
priority: 99,
fn(ortbRequest, bidderRequest) {
- mergeDeep(ortbRequest, bidderRequest.ortb2)
+ mergeDeep(ortbRequest, bidderRequest.ortb2);
}
},
onlyOneClient: {
@@ -88,6 +88,7 @@ export const DEFAULT_PROCESSORS = {
burl: bid.burl,
ttl: bid.exp || context.ttl,
netRevenue: context.netRevenue,
+ duration: bid.dur,
}).filter(([k, v]) => typeof v !== 'undefined')
.forEach(([k, v]) => {
bidResponse[k] = v;
@@ -117,37 +118,37 @@ export const DEFAULT_PROCESSORS = {
}
}
}
-}
+};
if (FEATURES.NATIVE) {
DEFAULT_PROCESSORS[IMP].native = {
// populates imp.native
fn: fillNativeImp
- }
+ };
DEFAULT_PROCESSORS[BID_RESPONSE].native = {
// populates bidResponse.native if bidResponse.mediaType === NATIVE
fn: fillNativeResponse
- }
+ };
}
if (FEATURES.VIDEO) {
DEFAULT_PROCESSORS[IMP].video = {
// populates imp.video
fn: fillVideoImp
- }
+ };
DEFAULT_PROCESSORS[BID_RESPONSE].video = {
// sets video response attributes if bidResponse.mediaType === VIDEO
fn: fillVideoResponse
- }
+ };
}
if (FEATURES.AUDIO) {
DEFAULT_PROCESSORS[IMP].audio = {
// populates imp.audio
fn: fillAudioImp
- }
+ };
DEFAULT_PROCESSORS[BID_RESPONSE].audio = {
// sets video response attributes if bidResponse.mediaType === AUDIO
fn: fillAudioResponse
- }
+ };
}
diff --git a/libraries/ortbConverter/processors/mediaType.js b/libraries/ortbConverter/processors/mediaType.js
index 4d1aed6cac9..925c5264bc3 100644
--- a/libraries/ortbConverter/processors/mediaType.js
+++ b/libraries/ortbConverter/processors/mediaType.js
@@ -4,7 +4,7 @@ export const ORTB_MTYPES = {
1: BANNER,
2: VIDEO,
4: NATIVE
-}
+};
/**
* Sets response mediaType, using ORTB 2.6 `seatbid.bid[].mtype`.
@@ -15,7 +15,7 @@ export function setResponseMediaType(bidResponse, bid, context) {
if (bidResponse.mediaType) return;
const mediaType = context.mediaType;
if (!mediaType && !ORTB_MTYPES.hasOwnProperty(bid.mtype)) {
- throw new Error('Cannot determine mediaType for response')
+ throw new Error('Cannot determine mediaType for response');
}
bidResponse.mediaType = mediaType || ORTB_MTYPES[bid.mtype];
}
diff --git a/libraries/ortbConverter/processors/native.js b/libraries/ortbConverter/processors/native.js
index 158bffca5fc..441a4f3358e 100644
--- a/libraries/ortbConverter/processors/native.js
+++ b/libraries/ortbConverter/processors/native.js
@@ -10,9 +10,9 @@ export function fillNativeImp(imp, bidRequest, context) {
imp.native = mergeDeep({}, {
request: JSON.stringify(nativeReq),
ver: nativeReq.ver
- }, imp.native)
+ }, imp.native);
} else {
- logWarn('mediaTypes.native is set, but no assets were specified. Native request skipped.', bidRequest)
+ logWarn('mediaTypes.native is set, but no assets were specified. Native request skipped.', bidRequest);
}
}
}
@@ -29,7 +29,7 @@ export function fillNativeResponse(bidResponse, bid) {
if (isPlainObject(ortb) && Array.isArray(ortb.assets)) {
bidResponse.native = {
ortb,
- }
+ };
} else {
throw new Error('ORTB native response contained no assets');
}
diff --git a/libraries/ortbConverter/processors/video.js b/libraries/ortbConverter/processors/video.js
index dc7566ecb98..4af60cd7613 100644
--- a/libraries/ortbConverter/processors/video.js
+++ b/libraries/ortbConverter/processors/video.js
@@ -16,7 +16,7 @@ export function fillVideoImp(imp, bidRequest, context) {
if (videoParams.playerSize) {
const format = sizesToSizeTuples(videoParams.playerSize).map(sizeTupleToRtbSize);
if (format.length > 1) {
- logWarn('video request specifies more than one playerSize; all but the first will be ignored')
+ logWarn('video request specifies more than one playerSize; all but the first will be ignored');
}
Object.assign(video, format[0]);
}
diff --git a/libraries/pbsExtensions/processors/eventTrackers.js b/libraries/pbsExtensions/processors/eventTrackers.js
index fba38168b7c..127fdcb7999 100644
--- a/libraries/pbsExtensions/processors/eventTrackers.js
+++ b/libraries/pbsExtensions/processors/eventTrackers.js
@@ -13,6 +13,6 @@ export function addEventTrackers(bidResponse, bid) {
method: TRACKER_METHOD_IMG,
event,
url
- })
- })
+ });
+ });
}
diff --git a/libraries/pbsExtensions/processors/mediaType.js b/libraries/pbsExtensions/processors/mediaType.js
index 1045a6ced70..47faa7f30f3 100644
--- a/libraries/pbsExtensions/processors/mediaType.js
+++ b/libraries/pbsExtensions/processors/mediaType.js
@@ -6,7 +6,7 @@ export const SUPPORTED_MEDIA_TYPES = {
[BANNER]: 'banner',
[NATIVE]: 'native',
[VIDEO]: 'video'
-}
+};
/**
* Sets bidResponse.mediaType, using ORTB 2.6 `seatbid.bid[].mtype`, falling back to `ext.prebid.type`, falling back to 'banner'.
@@ -14,7 +14,7 @@ export const SUPPORTED_MEDIA_TYPES = {
export function extPrebidMediaType(bidResponse, bid, context) {
let mediaType = context.mediaType;
if (!mediaType) {
- mediaType = ORTB_MTYPES.hasOwnProperty(bid.mtype) ? ORTB_MTYPES[bid.mtype] : bid.ext?.prebid?.type
+ mediaType = ORTB_MTYPES.hasOwnProperty(bid.mtype) ? ORTB_MTYPES[bid.mtype] : bid.ext?.prebid?.type;
if (!SUPPORTED_MEDIA_TYPES.hasOwnProperty(mediaType)) {
mediaType = BANNER;
}
diff --git a/libraries/pbsExtensions/processors/pbs.js b/libraries/pbsExtensions/processors/pbs.js
index ba5e7481a68..ede0490a431 100644
--- a/libraries/pbsExtensions/processors/pbs.js
+++ b/libraries/pbsExtensions/processors/pbs.js
@@ -115,12 +115,12 @@ export const PBS_PROCESSORS = {
}
},
}
-}
+};
if (FEATURES.VIDEO) {
PBS_PROCESSORS[BID_RESPONSE].videoCache = {
// sets response video attributes; in addition, looks at ext.prebid.cache and .targeting to set video cache key and URL
fn: setBidResponseVideoCache,
priority: -10, // after 'video'
- }
+ };
}
diff --git a/libraries/pbsExtensions/processors/video.js b/libraries/pbsExtensions/processors/video.js
index 235c1ac3947..8ebac735e9b 100644
--- a/libraries/pbsExtensions/processors/video.js
+++ b/libraries/pbsExtensions/processors/video.js
@@ -16,7 +16,7 @@ export function setBidResponseVideoCache(bidResponse, bid) {
Object.assign(bidResponse, {
videoCacheKey,
vastUrl
- })
+ });
}
}
}
diff --git a/libraries/percentInView/percentInView.js b/libraries/percentInView/percentInView.js
index 8bb6e0206da..fc6ed7d27d7 100644
--- a/libraries/percentInView/percentInView.js
+++ b/libraries/percentInView/percentInView.js
@@ -107,7 +107,7 @@ const percentInViewStatic = (element, { w, h } = {}) => {
// No overlap between element and the viewport; therefore, the element
// lies completely out of view
return 0;
-}
+};
export const dep = {
// for stubbing in tests, see test/mocks/percentInView.js
@@ -126,11 +126,11 @@ export function intersections(mkObserver) {
function observerCallback(entries) {
entries.forEach(entry => {
if ((intersections.get(entry.target)?.time ?? -1) < entry.time) {
- intersections.set(entry.target, entry)
+ intersections.set(entry.target, entry);
next.resolve();
next = defer();
}
- })
+ });
}
let obs = null;
@@ -172,7 +172,7 @@ export function intersections(mkObserver) {
return {
observe,
getIntersection,
- }
+ };
}
export const viewportIntersections = intersections((callback) => new IntersectionObserver(callback, {
@@ -192,7 +192,7 @@ export function mkIntersectionHook(intersections = viewportIntersections) {
// just to be sure, cap the amount of time we wait for intersections
delay(20)
]).then(() => next.call(this, request));
- }
+ };
}
startAuction.before(mkIntersectionHook());
diff --git a/libraries/permutiveUtils/index.js b/libraries/permutiveUtils/index.js
index ac410d6d662..cc4d8aeafa1 100644
--- a/libraries/permutiveUtils/index.js
+++ b/libraries/permutiveUtils/index.js
@@ -1,6 +1,6 @@
-import { deepAccess } from '../../src/utils.js'
+import { deepAccess } from '../../src/utils.js';
-export const PERMUTIVE_VENDOR_ID = 361
+export const PERMUTIVE_VENDOR_ID = 361;
/**
* Determine if required GDPR purposes are allowed, optionally requiring vendor consent.
@@ -10,25 +10,25 @@ export const PERMUTIVE_VENDOR_ID = 361
* @returns {boolean}
*/
export function hasPurposeConsent(userConsent, requiredPurposes, enforceVendorConsent) {
- const gdprApplies = deepAccess(userConsent, 'gdpr.gdprApplies')
- if (!gdprApplies) return true
+ const gdprApplies = deepAccess(userConsent, 'gdpr.gdprApplies');
+ if (!gdprApplies) return true;
if (enforceVendorConsent) {
- const vendorConsents = deepAccess(userConsent, 'gdpr.vendorData.vendor.consents') || {}
- const vendorLegitimateInterests = deepAccess(userConsent, 'gdpr.vendorData.vendor.legitimateInterests') || {}
- const purposeConsents = deepAccess(userConsent, 'gdpr.vendorData.purpose.consents') || {}
- const purposeLegitimateInterests = deepAccess(userConsent, 'gdpr.vendorData.purpose.legitimateInterests') || {}
- const hasVendorConsent = vendorConsents[PERMUTIVE_VENDOR_ID] === true || vendorLegitimateInterests[PERMUTIVE_VENDOR_ID] === true
+ const vendorConsents = deepAccess(userConsent, 'gdpr.vendorData.vendor.consents') || {};
+ const vendorLegitimateInterests = deepAccess(userConsent, 'gdpr.vendorData.vendor.legitimateInterests') || {};
+ const purposeConsents = deepAccess(userConsent, 'gdpr.vendorData.purpose.consents') || {};
+ const purposeLegitimateInterests = deepAccess(userConsent, 'gdpr.vendorData.purpose.legitimateInterests') || {};
+ const hasVendorConsent = vendorConsents[PERMUTIVE_VENDOR_ID] === true || vendorLegitimateInterests[PERMUTIVE_VENDOR_ID] === true;
return hasVendorConsent && requiredPurposes.every((purposeId) =>
purposeConsents[purposeId] === true || purposeLegitimateInterests[purposeId] === true
- )
+ );
}
- const purposeConsents = deepAccess(userConsent, 'gdpr.vendorData.publisher.consents') || {}
- const purposeLegitimateInterests = deepAccess(userConsent, 'gdpr.vendorData.publisher.legitimateInterests') || {}
+ const purposeConsents = deepAccess(userConsent, 'gdpr.vendorData.publisher.consents') || {};
+ const purposeLegitimateInterests = deepAccess(userConsent, 'gdpr.vendorData.publisher.legitimateInterests') || {};
return requiredPurposes.every((purposeId) =>
purposeConsents[purposeId] === true || purposeLegitimateInterests[purposeId] === true
- )
+ );
}
diff --git a/libraries/precisoUtils/bidNativeUtils.js b/libraries/precisoUtils/bidNativeUtils.js
index 23ca22c7a6a..7e826e557cf 100644
--- a/libraries/precisoUtils/bidNativeUtils.js
+++ b/libraries/precisoUtils/bidNativeUtils.js
@@ -46,7 +46,7 @@ export function interpretNativeBid(serverBid) {
currency: 'USD',
// native: interpretNativeAd(serverBid.adm)
native: interpretNativeAd(macroReplace(serverBid.adm, serverBid.price))
- }
+ };
}
/**
diff --git a/libraries/precisoUtils/bidUtils.js b/libraries/precisoUtils/bidUtils.js
index 050f758601c..5927886cf93 100644
--- a/libraries/precisoUtils/bidUtils.js
+++ b/libraries/precisoUtils/bidUtils.js
@@ -1,6 +1,6 @@
import { convertOrtbRequestToProprietaryNative } from '../../src/native.js';
import { replaceAuctionPrice, deepAccess, logInfo } from '../../src/utils.js';
-import { ajax } from '../../src/ajax.js';
+import { noCredsAjax as ajax } from '../../src/ajax.js';
// import { NATIVE } from '../../src/mediaTypes.js';
import { consentCheck, getBidFloor } from './bidUtilsCommon.js';
import { interpretNativeBid } from './bidNativeUtils.js';
@@ -47,11 +47,11 @@ export const buildRequests = (endpoint) => (validBidRequests = [], bidderRequest
data: req,
};
-}
+};
export function interpretResponse(serverResponse) {
- const bidsValue = []
- const bidResponse = serverResponse.body
+ const bidsValue = [];
+ const bidResponse = serverResponse.body;
bidResponse.seatbid.forEach(seat => {
seat.bid.forEach(bid => {
bidsValue.push({
@@ -67,10 +67,10 @@ export function interpretResponse(serverResponse) {
meta: {
advertiserDomains: bid.adomain || '',
},
- })
- })
- })
- return bidsValue
+ });
+ });
+ });
+ return bidsValue;
}
export function onBidWon(bid) {
@@ -93,11 +93,11 @@ function mapImpression(slot, bidderRequest) {
};
if (slot.mediaType === 'native' || deepAccess(slot, 'mediaTypes.native')) {
- imp.native = mapNative(slot)
+ imp.native = mapNative(slot);
} else {
- imp.banner = mapBanner(slot)
+ imp.banner = mapBanner(slot);
}
- return imp
+ return imp;
}
function mapNative(slot) {
@@ -108,19 +108,19 @@ function mapNative(slot) {
};
return {
request: JSON.stringify(request)
- }
+ };
}
}
function mapBanner(slot) {
if (slot.mediaTypes.banner) {
let format = (slot.mediaTypes.banner.sizes || slot.sizes).map(size => {
- return { w: size[0], h: size[1] }
+ return { w: size[0], h: size[1] };
});
return {
format
- }
+ };
}
}
@@ -154,7 +154,7 @@ export function buildBidResponse(serverResponse) {
},
});
}
- })
+ });
});
return bids;
}
diff --git a/libraries/precisoUtils/bidUtilsCommon.js b/libraries/precisoUtils/bidUtilsCommon.js
index 1072428826f..a83712dcaa9 100644
--- a/libraries/precisoUtils/bidUtilsCommon.js
+++ b/libraries/precisoUtils/bidUtilsCommon.js
@@ -38,7 +38,7 @@ export function getBidFloor(bid) {
});
return bidFloor?.floor;
} catch (_) {
- return 0
+ return 0;
}
}
@@ -89,7 +89,7 @@ export const buildBidRequests = (adurl) => (validBidRequests = [], bidderRequest
url: adurl,
data: request
};
-}
+};
export function interpretResponse(serverResponse) {
const response = [];
@@ -111,7 +111,7 @@ export function consentCheck(bidderRequest, req) {
req.ccpa = bidderRequest.uspConsent;
}
if (bidderRequest.gdprConsent) {
- req.gdpr = bidderRequest.gdprConsent
+ req.gdpr = bidderRequest.gdprConsent;
}
if (bidderRequest.gppConsent) {
req.gpp = bidderRequest.gppConsent;
@@ -137,7 +137,7 @@ export const buildUserSyncs = (syncOptions, serverResponses, gdprConsent, uspCon
if (isCk2trk) {
syncUrl += uspConsent ? `&us_privacy=${uspConsent}` : `&us_privacy=`;
- syncUrl += (syncOptions.iframeEnabled) ? `&t=4` : `&t=2`
+ syncUrl += (syncOptions.iframeEnabled) ? `&t=4` : `&t=2`;
} else {
if (uspConsent && uspConsent.consentString) {
syncUrl += `&ccpa_consent=${uspConsent.consentString}`;
@@ -150,7 +150,7 @@ export const buildUserSyncs = (syncOptions, serverResponses, gdprConsent, uspCon
type: syncType,
url: syncUrl
}];
-}
+};
export function bidWinReport (bid) {
const cpm = bid?.adserverTargeting?.hb_pb || '';
diff --git a/libraries/pubmaticUtils/plugins/dynamicTimeout.js b/libraries/pubmaticUtils/plugins/dynamicTimeout.js
index ed8cdd52e9f..0398e7d6878 100644
--- a/libraries/pubmaticUtils/plugins/dynamicTimeout.js
+++ b/libraries/pubmaticUtils/plugins/dynamicTimeout.js
@@ -5,7 +5,7 @@ import { shouldThrottle } from '../pubmaticUtils.js';
let _dynamicTimeoutConfig = null;
export const getDynamicTimeoutConfig = () => _dynamicTimeoutConfig;
-export const setDynamicTimeoutConfig = (config) => { _dynamicTimeoutConfig = config; }
+export const setDynamicTimeoutConfig = (config) => { _dynamicTimeoutConfig = config; };
export const CONSTANTS = Object.freeze({
LOG_PRE_FIX: 'PubMatic-Dynamic-Timeout: ',
@@ -132,13 +132,13 @@ export const getFinalTimeout = (bidderTimeout, additionalTimeout) => {
}
return calculatedTimeout;
-}
+};
export const getBidderTimeout = (reqBidsConfigObj) => {
return getDynamicTimeoutConfig()?.config?.bidderTimeout
? getDynamicTimeoutConfig()?.config?.bidderTimeout
: reqBidsConfigObj?.timeout || getGlobal()?.getConfig('bidderTimeout');
-}
+};
/**
* Get rules based on percentage values and bidderTimeout
@@ -158,7 +158,7 @@ export const getRules = (bidderTimeout) => {
}
// In Percentage - If no rules are available then create rules from the default defined - values are in percentages
return createDynamicRules(RULES_PERCENTAGE, bidderTimeout);
-}
+};
/**
* Creates dynamic rules based on percentage values and bidder timeout
diff --git a/libraries/pubmaticUtils/plugins/floorProvider.js b/libraries/pubmaticUtils/plugins/floorProvider.js
index a6112634353..61389ce8336 100644
--- a/libraries/pubmaticUtils/plugins/floorProvider.js
+++ b/libraries/pubmaticUtils/plugins/floorProvider.js
@@ -12,11 +12,11 @@ import { continueAuction } from '../../../modules/priceFloors.js'; // eslint-dis
let _floorConfig = null;
export const getFloorConfig = () => _floorConfig;
-export const setFloorsConfig = (config) => { _floorConfig = config; }
+export const setFloorsConfig = (config) => { _floorConfig = config; };
let _configJsonManager = null;
export const getConfigJsonManager = () => _configJsonManager;
-export const setConfigJsonManager = (configJsonManager) => { _configJsonManager = configJsonManager; }
+export const setConfigJsonManager = (configJsonManager) => { _configJsonManager = configJsonManager; };
export const CONSTANTS = Object.freeze({
LOG_PRE_FIX: 'PubMatic-Floor-Provider: '
diff --git a/libraries/pubmaticUtils/plugins/unifiedPricingRule.js b/libraries/pubmaticUtils/plugins/unifiedPricingRule.js
index 4060af17044..3c5646402cd 100644
--- a/libraries/pubmaticUtils/plugins/unifiedPricingRule.js
+++ b/libraries/pubmaticUtils/plugins/unifiedPricingRule.js
@@ -25,7 +25,7 @@ export const getProfileConfigs = () => getConfigJsonManager()?.getYMConfig();
let _configJsonManager = null;
export const getConfigJsonManager = () => _configJsonManager;
-export const setConfigJsonManager = (configJsonManager) => { _configJsonManager = configJsonManager; }
+export const setConfigJsonManager = (configJsonManager) => { _configJsonManager = configJsonManager; };
/**
* Initialize the floor provider
diff --git a/libraries/pubmaticUtils/pubmaticUtils.js b/libraries/pubmaticUtils/pubmaticUtils.js
index a7e23f1ee76..78646818fd1 100644
--- a/libraries/pubmaticUtils/pubmaticUtils.js
+++ b/libraries/pubmaticUtils/pubmaticUtils.js
@@ -44,7 +44,7 @@ export const getBrowserType = () => {
browserIndex = BROWSER_REGEX_MAP.find(({ regex }) => regex.test(userAgent))?.id || 0;
}
return browserIndex.toString();
-}
+};
export const getCurrentTimeOfDay = () => {
const currentHour = new Date().getHours();
@@ -54,23 +54,23 @@ export const getCurrentTimeOfDay = () => {
: currentHour < 17 ? CONSTANTS.TIME_OF_DAY_VALUES.AFTERNOON
: currentHour < 19 ? CONSTANTS.TIME_OF_DAY_VALUES.EVENING
: CONSTANTS.TIME_OF_DAY_VALUES.NIGHT;
-}
+};
export const getUtmValue = () => {
const url = new URL(window.location?.href);
const urlParams = new URLSearchParams(url?.search);
return urlParams && urlParams.toString().includes(CONSTANTS.UTM) ? CONSTANTS.UTM_VALUES.TRUE : CONSTANTS.UTM_VALUES.FALSE;
-}
+};
export const getDayOfWeek = () => {
const dayOfWeek = new Date().getDay();
return dayOfWeek.toString();
-}
+};
export const getHourOfDay = () => {
const hourOfDay = new Date().getHours();
return hourOfDay.toString();
-}
+};
/**
* Determines whether an action should be throttled based on a given percentage.
diff --git a/libraries/purposeDeclarations/validate.mjs b/libraries/purposeDeclarations/validate.mjs
new file mode 100644
index 00000000000..be5a384b35c
--- /dev/null
+++ b/libraries/purposeDeclarations/validate.mjs
@@ -0,0 +1,13 @@
+// NOTE: this file is used both by the build system and Prebid runtime; the former
+// needs the ".mjs" extension, but precompilation transforms this into a "normal" .js
+
+export function validatePurposeDeclarations({ purposes, legIntPurposes, flexiblePurposes }) {
+ const bothBases = purposes.concat(legIntPurposes).filter(purpose => purposes.includes(purpose) && legIntPurposes.includes(purpose));
+ if (bothBases.length > 0) {
+ return `declares both consent and LI for purposes ${bothBases.join(', ')}`;
+ }
+ const noBasis = flexiblePurposes.filter(purpose => !purposes.includes(purpose) && !legIntPurposes.includes(purpose));
+ if (noBasis.length > 0) {
+ return `declares purposes ${noBasis.join(', ')} as flexible, but no legal basis for them`;
+ }
+}
diff --git a/libraries/riseUtils/constants.js b/libraries/riseUtils/constants.js
index 0ed9691db6e..8037507f214 100644
--- a/libraries/riseUtils/constants.js
+++ b/libraries/riseUtils/constants.js
@@ -1,6 +1,6 @@
import { BANNER, NATIVE, VIDEO } from '../../src/mediaTypes.js';
-const OW_GVLID = 280
+const OW_GVLID = 280;
export const SUPPORTED_AD_TYPES = [BANNER, VIDEO, NATIVE];
export const ADAPTER_VERSION = '8.0.0';
export const DEFAULT_TTL = 360;
@@ -12,7 +12,7 @@ export const DEFAULT_GVLID = 1043;
export const ALIASES = [
{ code: 'risexchange', gvlid: DEFAULT_GVLID },
{ code: 'openwebxchange', gvlid: OW_GVLID }
-]
+];
export const MODES = {
PRODUCTION: 'hb-multi',
diff --git a/libraries/riseUtils/index.js b/libraries/riseUtils/index.js
index c818dc8bc21..1a9425d8720 100644
--- a/libraries/riseUtils/index.js
+++ b/libraries/riseUtils/index.js
@@ -35,7 +35,7 @@ export const makeBaseSpec = (baseUrl, modes) => {
method: 'POST',
url: getEndpoint(testMode, rtbDomain, modes),
data: combinedRequestsObject
- }
+ };
},
interpretResponse: function ({ body }) {
const bidResponses = [];
@@ -63,7 +63,7 @@ export const makeBaseSpec = (baseUrl, modes) => {
return {
type: 'image',
url: pixel
- }
+ };
});
syncs.push(...pixels);
}
@@ -80,8 +80,8 @@ export const makeBaseSpec = (baseUrl, modes) => {
triggerPixel(bid.nurl);
}
}
- }
-}
+ };
+};
export function getBidRequestMediaTypes(bidRequest) {
const mediaTypes = deepAccess(bidRequest, 'mediaTypes');
@@ -112,7 +112,7 @@ export function getFloor(bid) {
return 0;
}
- const mediaTypes = getBidRequestMediaTypes(bid)
+ const mediaTypes = getBidRequestMediaTypes(bid);
const firstMediaType = mediaTypes[0];
const floorResult = bid.getFloor({
@@ -339,9 +339,7 @@ export function buildBidResponse(adUnit) {
netRevenue: adUnit.netRevenue || true,
nurl: adUnit.nurl,
mediaType: adUnit.mediaType,
- meta: {
- mediaType: adUnit.mediaType
- }
+ meta: buildBidMeta(adUnit)
};
if (adUnit.mediaType === VIDEO) {
@@ -352,11 +350,20 @@ export function buildBidResponse(adUnit) {
bidResponse.native = { ortb: adUnit.native };
}
- if (adUnit.adomain && adUnit.adomain.length) {
- bidResponse.meta.advertiserDomains = adUnit.adomain;
+ return bidResponse;
+}
+
+export function buildBidMeta(adUnit) {
+ const meta = {
+ mediaType: adUnit.mediaType,
+ ...(adUnit.meta || {})
+ };
+
+ if (!meta.advertiserDomains && adUnit.adomain && adUnit.adomain.length) {
+ meta.advertiserDomains = adUnit.adomain;
}
- return bidResponse;
+ return meta;
}
export function generateGeneralParams(generalObject, bidderRequest, adapterVersion) {
@@ -401,7 +408,7 @@ export function generateGeneralParams(generalObject, bidderRequest, adapterVersi
generalParams.device = ortb2Metadata.device;
}
- const previousAuctionInfo = deepAccess(bidderRequest, 'ortb2.ext.prebid.previousauctioninfo')
+ const previousAuctionInfo = deepAccess(bidderRequest, 'ortb2.ext.prebid.previousauctioninfo');
if (previousAuctionInfo) {
generalParams.prev_auction_info = JSON.stringify(previousAuctionInfo);
}
diff --git a/libraries/sizeUtils/tranformSize.js b/libraries/sizeUtils/tranformSize.js
index 687b3f1c7b9..1549f8f3476 100644
--- a/libraries/sizeUtils/tranformSize.js
+++ b/libraries/sizeUtils/tranformSize.js
@@ -3,10 +3,10 @@ import * as utils from '../../src/utils.js';
/**
* get sizes for rtb
* @param {Array|Object} requestSizes
- * @return {Object}
+ * @return {Object[]} [{width, height}]
*/
export function transformSizes(requestSizes) {
- const sizes = [];
+ let sizes = [];
let sizeObj = {};
if (
@@ -19,7 +19,7 @@ export function transformSizes(requestSizes) {
sizes.push(sizeObj);
} else if (typeof requestSizes === 'object') {
for (let i = 0; i < requestSizes.length; i++) {
- const size = requestSizes[i];
+ let size = requestSizes[i];
sizeObj = {};
sizeObj.width = parseInt(size[0], 10);
sizeObj.height = parseInt(size[1], 10);
@@ -30,6 +30,36 @@ export function transformSizes(requestSizes) {
return sizes;
}
+/**
+ * get sizes for rtb (ORTB format with w/h)
+ * @param {Array|Object} requestSizes
+ * @return {Object[]} [{w, h}]
+ */
+export function transformSizesOrtb(requestSizes) {
+ let sizes = [];
+ let sizeObj = {};
+
+ if (
+ utils.isArray(requestSizes) &&
+ requestSizes.length === 2 &&
+ !utils.isArray(requestSizes[0])
+ ) {
+ sizeObj.w = parseInt(requestSizes[0], 10);
+ sizeObj.h = parseInt(requestSizes[1], 10);
+ sizes.push(sizeObj);
+ } else if (typeof requestSizes === 'object') {
+ for (let i = 0; i < requestSizes.length; i++) {
+ let size = requestSizes[i];
+ sizeObj = {};
+ sizeObj.w = parseInt(size[0], 10);
+ sizeObj.h = parseInt(size[1], 10);
+ sizes.push(sizeObj);
+ }
+ }
+
+ return sizes;
+}
+
export const normalAdSize = [
{ w: 300, h: 250 },
{ w: 300, h: 600 },
diff --git a/libraries/storageDisclosure/summary.mjs b/libraries/storageDisclosure/summary.mjs
index 7953fd06a12..d9cf24e64c8 100644
--- a/libraries/storageDisclosure/summary.mjs
+++ b/libraries/storageDisclosure/summary.mjs
@@ -14,9 +14,9 @@ export function getStorageDisclosureSummary(moduleNames, getModuleMetadata) {
disclosedIn: url,
disclosedBy: [moduleName],
...identifier
- }))
+ }));
}
- })
+ });
});
return [].concat(...Object.values(summary));
}
diff --git a/libraries/targetVideoUtils/bidderUtils.js b/libraries/targetVideoUtils/bidderUtils.js
index 8d6beac3397..99317d67f52 100644
--- a/libraries/targetVideoUtils/bidderUtils.js
+++ b/libraries/targetVideoUtils/bidderUtils.js
@@ -26,7 +26,7 @@ export function formatRequest({ payload, url, bidderRequest, bidId }) {
options: {
withCredentials: true,
}
- }
+ };
if (bidderRequest) {
request.bidderRequest = bidderRequest;
@@ -211,5 +211,5 @@ export function getSiteObj() {
page: refInfo.page,
ref: refInfo.ref,
domain: refInfo.domain
- }
+ };
}
diff --git a/libraries/targetVideoUtils/constants.js b/libraries/targetVideoUtils/constants.js
index ccd0b63131f..b1be49b28c0 100644
--- a/libraries/targetVideoUtils/constants.js
+++ b/libraries/targetVideoUtils/constants.js
@@ -22,4 +22,4 @@ export {
BANNER_ENDPOINT_URL,
VIDEO_ENDPOINT_URL,
VIDEO_PARAMS
-}
+};
diff --git a/libraries/teqblazeUtils/bidderUtils.ts b/libraries/teqblazeUtils/bidderUtils.ts
index cad8ed2cab0..85a01e325ee 100644
--- a/libraries/teqblazeUtils/bidderUtils.ts
+++ b/libraries/teqblazeUtils/bidderUtils.ts
@@ -206,7 +206,7 @@ const checkIfObjectHasKey = (keys: string[], obj: Record, mode:
}
return mode === 'every';
-}
+};
export const isBidRequestValid =
(keys: string[] = ['placementId', 'endpointId'], mode?: Mode) =>
@@ -309,7 +309,7 @@ export function interpretResponseBuilder({ addtlBidValidation = (_bid: any): boo
}
return response;
- }
+ };
}
export const interpretResponse = interpretResponseBuilder();
diff --git a/libraries/uid1Eids/uid1Eids.js b/libraries/uid1Eids/uid1Eids.js
index 4b45c984058..8855ed39a38 100644
--- a/libraries/uid1Eids/uid1Eids.js
+++ b/libraries/uid1Eids/uid1Eids.js
@@ -10,7 +10,7 @@ export const UID1_EIDS = {
}
},
getUidExt: function(data) {
- return { ...{ rtiPartner: 'TDID' }, ...data.ext }
+ return { ...{ rtiPartner: 'TDID' }, ...data.ext };
}
}
-}
+};
diff --git a/libraries/uid2Eids/uid2Eids.js b/libraries/uid2Eids/uid2Eids.js
index ce4f4fa3b2a..6d48e6dd2fe 100644
--- a/libraries/uid2Eids/uid2Eids.js
+++ b/libraries/uid2Eids/uid2Eids.js
@@ -11,4 +11,4 @@ export const UID2_EIDS = {
}
}
}
-}
+};
diff --git a/libraries/uid2IdSystemShared/uid2IdSystem_shared.js b/libraries/uid2IdSystemShared/uid2IdSystem_shared.js
index aa9af0844d7..8fad49f757e 100644
--- a/libraries/uid2IdSystemShared/uid2IdSystem_shared.js
+++ b/libraries/uid2IdSystemShared/uid2IdSystem_shared.js
@@ -1,4 +1,4 @@
-import { ajax } from '../../src/ajax.js'
+import { noCredsAjax as ajax } from '../../src/ajax.js';
import { cyrb53Hash, logError } from '../../src/utils.js';
export const Uid2CodeVersion = '1.1';
@@ -73,7 +73,7 @@ export class Uid2ApiClient {
this._logInfo('Decrypting refresh API response');
const encodeResp = this.createArrayBuffer(atob(responseText));
window.crypto.subtle.importKey('raw', this.createArrayBuffer(atob(refreshDetails.refresh_response_key)), { name: 'AES-GCM' }, false, ['decrypt']).then((key) => {
- this._logInfo('Imported decryption key')
+ this._logInfo('Imported decryption key');
// returns the symmetric key
window.crypto.subtle.decrypt({
name: 'AES-GCM',
@@ -170,7 +170,7 @@ export class Uid2StorageManager {
if (!storedValue) {
const fallbackValue = fallbackStorageGet();
if (fallbackValue) {
- this._logInfo(`${preferredStorageLabel} was empty, but found a fallback value.`)
+ this._logInfo(`${preferredStorageLabel} was empty, but found a fallback value.`);
if (typeof fallbackValue === 'object') {
this._logInfo(`Copying the fallback value to ${preferredStorageLabel}.`);
preferredStorageSet(fallbackValue);
diff --git a/libraries/uniquestUtils/uniquestUtils.js b/libraries/uniquestUtils/uniquestUtils.js
index 07a195bf8cf..3f902865b0b 100644
--- a/libraries/uniquestUtils/uniquestUtils.js
+++ b/libraries/uniquestUtils/uniquestUtils.js
@@ -2,7 +2,7 @@ export function interpretResponse (serverResponse) {
const response = serverResponse.body;
if (!response || Object.keys(response).length === 0) {
- return []
+ return [];
}
const bid = {
diff --git a/libraries/userAgentUtils/userAgentTypes.enums.js b/libraries/userAgentUtils/userAgentTypes.enums.js
index 8a0255e88bf..7428aad2437 100644
--- a/libraries/userAgentUtils/userAgentTypes.enums.js
+++ b/libraries/userAgentUtils/userAgentTypes.enums.js
@@ -2,7 +2,7 @@ export const deviceTypes = Object.freeze({
DESKTOP: 0,
MOBILE: 1,
TABLET: 2,
-})
+});
export const browserTypes = Object.freeze({
CHROME: 0,
FIREFOX: 1,
@@ -10,7 +10,7 @@ export const browserTypes = Object.freeze({
EDGE: 3,
INTERNET_EXPLORER: 4,
OTHER: 5
-})
+});
export const osTypes = Object.freeze({
WINDOWS: 0,
MAC: 1,
@@ -19,4 +19,4 @@ export const osTypes = Object.freeze({
IOS: 4,
ANDROID: 5,
OTHER: 6
-})
+});
diff --git a/libraries/utiqUtils/utiqUtils.ts b/libraries/utiqUtils/utiqUtils.ts
index dd2ea9ff06c..afe1e8356aa 100644
--- a/libraries/utiqUtils/utiqUtils.ts
+++ b/libraries/utiqUtils/utiqUtils.ts
@@ -40,7 +40,7 @@ export function findUtiqService(storage: any, refreshUserIds: () => void, logPre
"connectId": {
"idGraph": [idGraphData],
},
- }))
+ }));
} else {
logInfo(`${logPrefix}: removing local storage pass`);
storage.removeDataFromLocalStorage('utiqPass');
diff --git a/libraries/vastTrackers/vastTrackers.js b/libraries/vastTrackers/vastTrackers.js
index 09eb20d41b1..3e6492b4c42 100644
--- a/libraries/vastTrackers/vastTrackers.js
+++ b/libraries/vastTrackers/vastTrackers.js
@@ -50,7 +50,7 @@ export function updateVastHook({ index = auctionManager.index } = {}) {
}
}
next(bidResponse);
- }
+ };
}
const addTrackersToResponse = updateVastHook();
diff --git a/libraries/vidazooUtils/bidderUtils.js b/libraries/vidazooUtils/bidderUtils.js
index f3ca8f32a92..f9e14c42483 100644
--- a/libraries/vidazooUtils/bidderUtils.js
+++ b/libraries/vidazooUtils/bidderUtils.js
@@ -7,7 +7,7 @@ import {
parseUrl,
triggerPixel,
uniques,
- getWinDimensions
+ getWinDimensions, deepClone
} from '../../src/utils.js';
import { chunk } from '../chunk/chunk.js';
import {
@@ -37,7 +37,7 @@ export function getTopWindowQueryParams() {
function isValidParamsHost(params) {
// valid is params:{host: 'twist.win'}
- return params && params.host && typeof params.host === 'string' && params.host.split('.').length === 2
+ return params && params.host && typeof params.host === 'string' && params.host.split('.').length === 2;
}
export function extractCID(params) {
@@ -130,7 +130,7 @@ export function getNextDealId(storage, key, expiry = DEAL_ID_EXPIRY) {
export function hashCode(s, prefix = '_') {
const l = s.length;
- let h = 0
+ let h = 0;
let i = 0;
if (l > 0) {
while (i < l) {
@@ -215,7 +215,7 @@ export function createUserSyncGetter(options = {
params += '&gpp=' + encodeURIComponent(gppString);
params += '&gpp_sid=' + encodeURIComponent(applicableSections.join(','));
}
- const UsBaseHeader = responses?.[0]?.headers?.get('x-us-base-url')
+ const UsBaseHeader = responses?.[0]?.headers?.get('x-us-base-url');
if (iframeEnabled) {
if (options.iframeSyncUrl) {
@@ -254,7 +254,7 @@ export function createUserSyncGetter(options = {
}
}
return syncs;
- }
+ };
}
export function appendUserIdsToRequestPayload(payloadRef, userIds) {
@@ -280,7 +280,7 @@ function appendUserIdsAsEidsToRequestPayload(payloadRef, userIds) {
userIds.forEach((userIdObj) => {
key = `uid.${userIdObj.source}`;
payloadRef[key] = userIdObj.uids[0].id;
- })
+ });
}
export function getVidazooSessionId(storage) {
@@ -315,7 +315,12 @@ export function buildRequestData(bid, topWindowUrl, sizes, bidderRequest, bidder
const userData = bidderRequest?.ortb2?.user?.data || [];
const contentLang = bidderRequest?.ortb2?.site?.content?.language || document.documentElement.lang;
const coppa = bidderRequest?.ortb2?.regs?.coppa ?? 0;
- const device = bidderRequest?.ortb2?.device || {};
+ const device = bidderRequest?.ortb2?.device ? deepClone(bidderRequest?.ortb2?.device) : {};
+
+ // delete device.devicetype if invalid
+ if (!Number.isInteger(device.devicetype)) {
+ delete device.devicetype;
+ }
if (isFn(bid.getFloor)) {
const floorInfo = bid.getFloor({
@@ -423,8 +428,8 @@ export function buildRequestData(bid, topWindowUrl, sizes, bidderRequest, bidder
data['ext.' + key] = value;
});
- if (bidderRequest.ortb2) data.ortb2 = bidderRequest.ortb2
- if (bid.ortb2Imp) data.ortb2Imp = bid.ortb2Imp
+ if (bidderRequest.ortb2) data.ortb2 = bidderRequest.ortb2;
+ if (bid.ortb2Imp) data.ortb2Imp = bid.ortb2Imp;
if (params?.host) {
data.params = {
host: params.host
@@ -439,7 +444,7 @@ function getScreenResolution() {
const width = dimensions?.screen?.width;
const height = dimensions?.screen?.height;
if (width != null && height != null) {
- return `${width}x${height}`
+ return `${width}x${height}`;
}
}
@@ -449,7 +454,7 @@ export function createInterpretResponseFn(bidderCode, allowSingleRequest) {
return [];
}
- const allowed = allowSingleRequest && MULTI_REQ_LIST.includes(bidderCode)
+ const allowed = allowSingleRequest && MULTI_REQ_LIST.includes(bidderCode);
const singleRequestMode = allowed && config.getConfig(`${bidderCode}.singleRequest`);
const reqBidId = request?.data?.bidId;
const { results } = serverResponse.body;
@@ -498,13 +503,13 @@ export function createInterpretResponseFn(bidderCode, allowSingleRequest) {
if (metaData) {
Object.assign(response, {
meta: metaData
- })
+ });
} else {
Object.assign(response, {
meta: {
advertiserDomains: advertiserDomains || []
}
- })
+ });
}
if (mediaType === BANNER) {
@@ -524,7 +529,7 @@ export function createInterpretResponseFn(bidderCode, allowSingleRequest) {
} catch (e) {
return [];
}
- }
+ };
}
export function createBuildRequestsFn(createRequestDomain, createUniqueRequestData, storage, bidderCode, bidderVersion, allowSingleRequest) {
@@ -555,9 +560,9 @@ export function createBuildRequestsFn(createRequestDomain, createUniqueRequestDa
const subDomain = extractSubDomain(params);
const data = bidRequests.map(bid => {
const sizes = parseSizesInput(bid.sizes);
- return buildRequestData(bid, topWindowUrl, sizes, bidderRequest, bidderTimeout, storage, bidderVersion, bidderCode, createUniqueRequestData)
+ return buildRequestData(bid, topWindowUrl, sizes, bidderRequest, bidderTimeout, storage, bidderVersion, bidderCode, createUniqueRequestData);
});
- let chSize = 10
+ let chSize = 10;
if (config.getConfig(`${bidderCode}.chunkSize`) && typeof config.getConfig(`${bidderCode}.chunkSize`) === 'number') {
chSize = config.getConfig(`${bidderCode}.chunkSize`);
}
@@ -590,7 +595,7 @@ export function createBuildRequestsFn(createRequestDomain, createUniqueRequestDa
return function buildRequests(validBidRequests, bidderRequest) {
const topWindowUrl = bidderRequest.refererInfo.page || bidderRequest.refererInfo.topmostLocation;
const bidderTimeout = bidderRequest.timeout || config.getConfig('bidderTimeout');
- const allowed = allowSingleRequest && MULTI_REQ_LIST.includes(bidderCode)
+ const allowed = allowSingleRequest && MULTI_REQ_LIST.includes(bidderCode);
const singleRequestMode = allowed && config.getConfig(`${bidderCode}.singleRequest`);
const requests = [];
@@ -619,5 +624,5 @@ export function createBuildRequestsFn(createRequestDomain, createUniqueRequestDa
});
}
return requests;
- }
+ };
}
diff --git a/libraries/vidazooUtils/constants.js b/libraries/vidazooUtils/constants.js
index f673977d3c6..9d33841625e 100644
--- a/libraries/vidazooUtils/constants.js
+++ b/libraries/vidazooUtils/constants.js
@@ -9,5 +9,5 @@ export const OPT_TIME_KEY = 'vdzHum';
// ALIASES item example: { code: "adapter_name", gvlid?: 0000, skipPbsAliasing?: false },
export const ALIASES = [];
export const MULTI_REQ_LIST = ['vidazoo', 'twistdigital'];
-export const IFRAME_SYNC_DEFAULT_URL = 'https://sync.cootlogix.com/api/sync/iframe'
-export const IMAGE_SYNC_DEFAULT_URL = 'https://sync.cootlogix.com/api/sync/image'
+export const IFRAME_SYNC_DEFAULT_URL = 'https://sync.cootlogix.com/api/sync/iframe';
+export const IMAGE_SYNC_DEFAULT_URL = 'https://sync.cootlogix.com/api/sync/image';
diff --git a/libraries/vidazooUtils/vidazooTypes.ts b/libraries/vidazooUtils/vidazooTypes.ts
index ac5d48a9986..cd29cbb033c 100644
--- a/libraries/vidazooUtils/vidazooTypes.ts
+++ b/libraries/vidazooUtils/vidazooTypes.ts
@@ -32,8 +32,8 @@ export type Ext = {
[key: string]: Record
} & {
customParameters?: CustomParameters;
-}
+};
type CustomParameters = {
mediaTypes?: MediaTypes
-}
+};
diff --git a/libraries/video/constants/ortb.js b/libraries/video/constants/ortb.js
index 86e7b499774..27c0757f6b7 100644
--- a/libraries/video/constants/ortb.js
+++ b/libraries/video/constants/ortb.js
@@ -122,7 +122,7 @@ export const AD_POSITION = {
FOOTER: 5,
SIDEBAR: 6,
FULL_SCREEN: 7
-}
+};
/**
* ORTB 2.5 section 5.11 - Playback Cessation Modes
@@ -132,7 +132,7 @@ export const PLAYBACK_END = {
VIDEO_COMPLETION: 1,
VIEWPORT_LEAVE: 2,
FLOATING: 3
-}
+};
/**
* ORTB 2.5 section 5.10 - Playback Methods
diff --git a/libraries/video/shared/helpers.js b/libraries/video/shared/helpers.js
index e61fde6a331..4148a8c562d 100644
--- a/libraries/video/shared/helpers.js
+++ b/libraries/video/shared/helpers.js
@@ -1,4 +1,4 @@
-import { videoKey } from '../constants/constants.js'
+import { videoKey } from '../constants/constants.js';
export function getExternalVideoEventName(eventName) {
if (!eventName) {
diff --git a/libraries/video/shared/parentModule.js b/libraries/video/shared/parentModule.js
index 41089b54a33..0306bddb324 100644
--- a/libraries/video/shared/parentModule.js
+++ b/libraries/video/shared/parentModule.js
@@ -39,7 +39,7 @@ export function ParentModule(submoduleBuilder_) {
return {
registerSubmodule,
getSubmodule
- }
+ };
}
/**
diff --git a/libraries/video/shared/vastXmlEditor.js b/libraries/video/shared/vastXmlEditor.js
index f43b4cdef05..f7447bb1810 100644
--- a/libraries/video/shared/vastXmlEditor.js
+++ b/libraries/video/shared/vastXmlEditor.js
@@ -45,7 +45,7 @@ export function VastXmlEditor(xmlUtil_) {
return {
getVastXmlWithTracking,
buildVastWrapper
- }
+ };
function getImpressionDoc(impressionUrl, impressionId) {
if (!impressionUrl) {
diff --git a/libraries/vizionikUtils/vizionikUtils.js b/libraries/vizionikUtils/vizionikUtils.js
index cfe55b3dea7..387b7d2d757 100644
--- a/libraries/vizionikUtils/vizionikUtils.js
+++ b/libraries/vizionikUtils/vizionikUtils.js
@@ -31,7 +31,7 @@ export function getUserSyncs(syncEndpoint, paramNames) {
}
return syncs;
- }
+ };
}
export function sspInterpretResponse(ttl, adomain) {
@@ -97,7 +97,7 @@ export function sspInterpretResponse(ttl, adomain) {
}
return bidResponses;
- }
+ };
}
export function sspBuildRequests(defaultEndpoint) {
@@ -119,7 +119,7 @@ export function sspBuildRequests(defaultEndpoint) {
}
return requests;
- }
+ };
}
export function sspValidRequest(bid) {
diff --git a/libraries/xeUtils/bidderUtils.js b/libraries/xeUtils/bidderUtils.js
index 91f5992921f..c1bde324bf4 100644
--- a/libraries/xeUtils/bidderUtils.js
+++ b/libraries/xeUtils/bidderUtils.js
@@ -145,9 +145,9 @@ export function getUserSyncs(syncOptions, serverResponses, gdprConsent = {}, usp
const [type, url] = pixel;
const sync = { type, url: `${url}&${usPrivacy}${gdprFlag}${gdprString}` };
if (type === 'iframe' && syncOptions.iframeEnabled) {
- syncs.push(sync)
+ syncs.push(sync);
} else if (type === 'image' && syncOptions.pixelEnabled) {
- syncs.push(sync)
+ syncs.push(sync);
}
});
}
diff --git a/metadata/compileMetadata.mjs b/metadata/compileMetadata.mjs
index 2909a7dc9ec..9ea043eb9d0 100644
--- a/metadata/compileMetadata.mjs
+++ b/metadata/compileMetadata.mjs
@@ -5,8 +5,9 @@ import moduleMetadata from './modules.json' with {type: 'json'};
import coreMetadata from './core.json' with {type: 'json'};
import overrides from './overrides.mjs';
-import {fetchDisclosure, getDisclosureUrl, logErrorSummary} from './storageDisclosure.mjs';
-import {isValidGvlId} from './gvl.mjs';
+import { fetchDisclosure, getDisclosureUrl, getPublicURL, logErrorSummary } from './storageDisclosure.mjs';
+import { getPurposes, isValidGvlId } from './gvl.mjs';
+import {validatePurposeDeclarations} from '../libraries/purposeDeclarations/validate.mjs';
const MAX_DISCLOSURE_AGE_DAYS = 14;
@@ -57,11 +58,40 @@ function previousDisclosure(moduleName, {componentType, componentName, disclosur
}
})
})
+}
+
+const EXPECTED_PURPOSES = {
+ 'userId': [1],
+ 'bidder': [2],
+ 'analytics': [7]
+}
+
+const RELEVANT_PURPOSES = [1, 2, 4, 7];
+
+const purposeWarnings = [];
+const purposeErrors = [];
+
+function logPurposeMsg(dest, component, gvlid, purposes, msg) {
+ dest.push(`${component} (GVL ID ${gvlid}) ${msg} (${JSON.stringify(purposes)})`)
+}
+
+function checkPurpose({component, gvlid}, purpose, {legIntPurposes, purposes}) {
+ if (!purposes.includes(purpose) && !legIntPurposes.includes(purpose)) {
+ logPurposeMsg(purposeWarnings, component, gvlid, {legIntPurposes, purposes}, `does not declare consent or LI as legal basis for purpose ${purpose}`)
+ }
+}
+export function validatePurposes({component, gvlid}, {legIntPurposes, purposes, flexiblePurposes, specialFeatures}) {
+ RELEVANT_PURPOSES.forEach(purpose => {
+ if (legIntPurposes.includes(purpose) && !flexiblePurposes.includes(purpose)) {
+ logPurposeMsg(purposeWarnings, component, gvlid, {purposes, legIntPurposes, flexiblePurposes}, `declares LI only as legal basis for purpose ${purpose}`)
+ }
+ })
}
-async function metadataFor(moduleName, metas) {
+async function metadataFor(moduleName, metas, fetch = true) {
const disclosures = {};
+ const purposes = {};
for (const meta of metas) {
if (meta.disclosureURL == null && meta.gvlid != null) {
meta.disclosureURL = await getDisclosureUrl(meta.gvlid);
@@ -69,22 +99,38 @@ async function metadataFor(moduleName, metas) {
if (meta.disclosureURL) {
const disclosure = {
timestamp: new Date().toISOString(),
- disclosures: await fetchDisclosure(meta)
+ disclosures: fetch ? await fetchDisclosure(meta) : null
};
+ meta.disclosureURL = getPublicURL(meta.disclosureURL);
if (disclosure.disclosures == null) {
Object.assign(disclosure, await previousDisclosure(moduleName, meta));
}
disclosures[meta.disclosureURL] = disclosure;
}
+ if (meta.gvlid != null && !purposes.hasOwnProperty(meta.gvlid)) {
+ purposes[meta.gvlid] = await getPurposes(meta.gvlid)
+ }
}
+ metas.filter(({gvlid}) => gvlid != null).forEach(({componentType, componentName, gvlid}) => {
+ (EXPECTED_PURPOSES[componentType] ?? []).forEach(purpose => {
+ checkPurpose({component: `${componentType}.${componentName}`, gvlid}, purpose, purposes[gvlid]);
+ });
+ const validationError = validatePurposeDeclarations(purposes[gvlid]);
+ if (validationError) {
+ logPurposeMsg(purposeErrors, `${componentType}.${componentName}`, purposes[gvlid], validationError);
+ }
+ validatePurposes({component: `${componentType}.${componentName}`, gvlid}, purposes[gvlid]);
+
+ })
return {
'NOTICE': 'do not edit - this file is autogenerated by `gulp update-metadata`',
disclosures,
+ purposes,
components: metas
};
}
-async function compileCoreMetadata() {
+async function compileCoreMetadata(fetch = true) {
const modules = coreMetadata.components.reduce((byModule, item) => {
if (!byModule.hasOwnProperty(item.moduleName)) {
byModule[item.moduleName] = [];
@@ -94,7 +140,7 @@ async function compileCoreMetadata() {
return byModule;
}, {});
for (let [moduleName, metadata] of Object.entries(modules)) {
- await updateModuleMetadata(moduleName, metadata);
+ await updateModuleMetadata(moduleName, metadata, fetch);
}
return Object.keys(modules);
}
@@ -103,10 +149,10 @@ function moduleMetadataPath(moduleName) {
return path.resolve(`./metadata/modules/${moduleName}.json`);
}
-async function updateModuleMetadata(moduleName, metadata) {
+async function updateModuleMetadata(moduleName, metadata, fetch = true) {
fs.writeFileSync(
moduleMetadataPath(moduleName),
- JSON.stringify(await metadataFor(moduleName, metadata), null, 2)
+ JSON.stringify(await metadataFor(moduleName, metadata, fetch), null, 2)
);
}
@@ -132,7 +178,7 @@ async function validateGvlIds() {
}
}
-async function compileModuleMetadata() {
+async function compileModuleMetadata(fetch = true) {
const processed = [];
const found = new WeakSet();
let err = false;
@@ -158,7 +204,7 @@ async function compileModuleMetadata() {
console.error('More than one module name matches module file:', moduleName, names);
err = true;
} else {
- await updateModuleMetadata(moduleName, meta);
+ await updateModuleMetadata(moduleName, meta, fetch);
processed.push(moduleName);
}
}
@@ -177,10 +223,19 @@ async function compileModuleMetadata() {
}
-export default async function compileMetadata() {
+export default async function compileMetadata(fetch = true) {
await validateGvlIds();
- const allModules = new Set((await compileCoreMetadata())
- .concat(await compileModuleMetadata()));
+ const allModules = new Set((await compileCoreMetadata(fetch))
+ .concat(await compileModuleMetadata(fetch)));
+ if (purposeWarnings.length > 0) {
+ console.warn("Some vendors have unexpected purpose declarations:");
+ purposeWarnings.forEach(warn => console.warn(` ${warn}`));
+ }
+ if (purposeErrors.length > 0) {
+ console.error("Some vendors have invalid purpose declarations:");
+ purposeErrors.forEach(err => console.error(` ${err}`));
+ throw new Error('Some purpose declarations are out of spec')
+ }
logErrorSummary();
fs.readdirSync('./metadata/modules')
.map(name => path.parse(name))
diff --git a/metadata/extractMetadata.mjs b/metadata/extractMetadata.mjs
index 7426ad10c10..24f7703d7fb 100644
--- a/metadata/extractMetadata.mjs
+++ b/metadata/extractMetadata.mjs
@@ -1,7 +1,9 @@
import puppeteer from 'puppeteer'
+import process from 'process';
export default async () => {
const browser = await puppeteer.launch({
+ executablePath: process.env.CHROME_BIN ?? '/usr/bin/google-chrome',
args: [
'--no-sandbox',
'--disable-setuid-sandbox'
diff --git a/metadata/gvl.mjs b/metadata/gvl.mjs
index 149a09d79ea..1bf598cfa03 100644
--- a/metadata/gvl.mjs
+++ b/metadata/gvl.mjs
@@ -20,3 +20,12 @@ export function isValidGvlId(gvlId, gvl = getGvl) {
return !!(gvl.vendors[gvlId] && !gvl.vendors[gvlId].deletedDate);
})
}
+
+export function getPurposes(gvlId, gvl = getGvl) {
+ return gvl().then(gvl => {
+ const {purposes, legIntPurposes, flexiblePurposes, specialFeatures} = gvl.vendors[gvlId];
+ return {
+ purposes, legIntPurposes, flexiblePurposes, specialFeatures
+ }
+ })
+}
diff --git a/metadata/modules.json b/metadata/modules.json
index b7897c6a115..5e2bb9da26b 100644
--- a/metadata/modules.json
+++ b/metadata/modules.json
@@ -547,6 +547,13 @@
"gvlid": null,
"disclosureURL": null
},
+ {
+ "componentType": "bidder",
+ "componentName": "reload",
+ "aliasOf": "adkernel",
+ "gvlid": null,
+ "disclosureURL": null
+ },
{
"componentType": "bidder",
"componentName": "admaru",
@@ -684,7 +691,7 @@
"componentType": "bidder",
"componentName": "adnow",
"aliasOf": null,
- "gvlid": 1210,
+ "gvlid": null,
"disclosureURL": null
},
{
@@ -883,34 +890,6 @@
"gvlid": 410,
"disclosureURL": null
},
- {
- "componentType": "bidder",
- "componentName": "streamkey",
- "aliasOf": "adtelligent",
- "gvlid": null,
- "disclosureURL": null
- },
- {
- "componentType": "bidder",
- "componentName": "janet",
- "aliasOf": "adtelligent",
- "gvlid": null,
- "disclosureURL": null
- },
- {
- "componentType": "bidder",
- "componentName": "ocm",
- "aliasOf": "adtelligent",
- "gvlid": 1148,
- "disclosureURL": null
- },
- {
- "componentType": "bidder",
- "componentName": "9dotsmedia",
- "aliasOf": "adtelligent",
- "gvlid": null,
- "disclosureURL": null
- },
{
"componentType": "bidder",
"componentName": "indicue",
@@ -918,13 +897,6 @@
"gvlid": null,
"disclosureURL": null
},
- {
- "componentType": "bidder",
- "componentName": "stellormedia",
- "aliasOf": "adtelligent",
- "gvlid": null,
- "disclosureURL": null
- },
{
"componentType": "bidder",
"componentName": "adtrgtme",
@@ -1198,6 +1170,13 @@
"gvlid": null,
"disclosureURL": null
},
+ {
+ "componentType": "bidder",
+ "componentName": "anzuDSP",
+ "aliasOf": null,
+ "gvlid": null,
+ "disclosureURL": null
+ },
{
"componentType": "bidder",
"componentName": "anzuSSP",
@@ -1324,13 +1303,6 @@
"gvlid": 32,
"disclosureURL": null
},
- {
- "componentType": "bidder",
- "componentName": "oftmedia",
- "aliasOf": "appnexus",
- "gvlid": 32,
- "disclosureURL": null
- },
{
"componentType": "bidder",
"componentName": "adasta",
@@ -1636,7 +1608,7 @@
"componentType": "bidder",
"componentName": "bliink",
"aliasOf": null,
- "gvlid": 658,
+ "gvlid": null,
"disclosureURL": null
},
{
@@ -2161,7 +2133,7 @@
"componentType": "bidder",
"componentName": "distroscale",
"aliasOf": null,
- "gvlid": 754,
+ "gvlid": null,
"disclosureURL": null
},
{
@@ -2304,6 +2276,13 @@
"gvlid": null,
"disclosureURL": null
},
+ {
+ "componentType": "bidder",
+ "componentName": "engerio",
+ "aliasOf": null,
+ "gvlid": null,
+ "disclosureURL": null
+ },
{
"componentType": "bidder",
"componentName": "eplanning",
@@ -2381,6 +2360,20 @@
"gvlid": 781,
"disclosureURL": null
},
+ {
+ "componentType": "bidder",
+ "componentName": "ferio",
+ "aliasOf": null,
+ "gvlid": null,
+ "disclosureURL": null
+ },
+ {
+ "componentType": "bidder",
+ "componentName": "myfeature",
+ "aliasOf": "ferio",
+ "gvlid": null,
+ "disclosureURL": null
+ },
{
"componentType": "bidder",
"componentName": "finative",
@@ -2619,6 +2612,13 @@
"gvlid": 1177,
"disclosureURL": null
},
+ {
+ "componentType": "bidder",
+ "componentName": "hubvisor",
+ "aliasOf": null,
+ "gvlid": 1112,
+ "disclosureURL": null
+ },
{
"componentType": "bidder",
"componentName": "hybrid",
@@ -3165,6 +3165,13 @@
"gvlid": 153,
"disclosureURL": null
},
+ {
+ "componentType": "bidder",
+ "componentName": "magicbid",
+ "aliasOf": null,
+ "gvlid": null,
+ "disclosureURL": null
+ },
{
"componentType": "bidder",
"componentName": "magnite",
@@ -3207,6 +3214,13 @@
"gvlid": null,
"disclosureURL": null
},
+ {
+ "componentType": "bidder",
+ "componentName": "matterfull",
+ "aliasOf": null,
+ "gvlid": null,
+ "disclosureURL": null
+ },
{
"componentType": "bidder",
"componentName": "mediaConsortium",
@@ -3389,6 +3403,20 @@
"gvlid": 32,
"disclosureURL": null
},
+ {
+ "componentType": "bidder",
+ "componentName": "oftmedia",
+ "aliasOf": "msft",
+ "gvlid": 32,
+ "disclosureURL": null
+ },
+ {
+ "componentType": "bidder",
+ "componentName": "msftstaila",
+ "aliasOf": "msft",
+ "gvlid": 32,
+ "disclosureURL": null
+ },
{
"componentType": "bidder",
"componentName": "mtc",
@@ -4110,6 +4138,13 @@
"gvlid": 290,
"disclosureURL": null
},
+ {
+ "componentType": "bidder",
+ "componentName": "realry",
+ "aliasOf": null,
+ "gvlid": null,
+ "disclosureURL": null
+ },
{
"componentType": "bidder",
"componentName": "rediads",
@@ -4194,6 +4229,13 @@
"gvlid": 1588,
"disclosureURL": null
},
+ {
+ "componentType": "bidder",
+ "componentName": "revbidortb",
+ "aliasOf": "revantage",
+ "gvlid": null,
+ "disclosureURL": null
+ },
{
"componentType": "bidder",
"componentName": "revcontent",
@@ -4586,6 +4628,13 @@
"gvlid": null,
"disclosureURL": null
},
+ {
+ "componentType": "bidder",
+ "componentName": "stackup",
+ "aliasOf": "smarthub",
+ "gvlid": null,
+ "disclosureURL": null
+ },
{
"componentType": "bidder",
"componentName": "smartico",
@@ -5778,6 +5827,13 @@
"disclosureURL": null,
"aliasOf": null
},
+ {
+ "componentType": "userId",
+ "componentName": "acxiomRealId",
+ "gvlid": null,
+ "disclosureURL": null,
+ "aliasOf": null
+ },
{
"componentType": "userId",
"componentName": "admixerId",
@@ -6361,6 +6417,11 @@
"componentName": "hadronAnalytics",
"gvlid": null
},
+ {
+ "componentType": "analytics",
+ "componentName": "hubvisor",
+ "gvlid": null
+ },
{
"componentType": "analytics",
"componentName": "id5Analytics",
diff --git a/metadata/modules/1plusXRtdProvider.json b/metadata/modules/1plusXRtdProvider.json
index f761dfac2dd..1b1d163e948 100644
--- a/metadata/modules/1plusXRtdProvider.json
+++ b/metadata/modules/1plusXRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/33acrossAnalyticsAdapter.json b/metadata/modules/33acrossAnalyticsAdapter.json
index d3ac68259fd..40222c3250d 100644
--- a/metadata/modules/33acrossAnalyticsAdapter.json
+++ b/metadata/modules/33acrossAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/33acrossBidAdapter.json b/metadata/modules/33acrossBidAdapter.json
index 1a48f257c99..04a4f7ce2eb 100644
--- a/metadata/modules/33acrossBidAdapter.json
+++ b/metadata/modules/33acrossBidAdapter.json
@@ -2,10 +2,27 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://platform.33across.com/disclosures.json": {
- "timestamp": "2026-05-18T20:03:46.498Z",
+ "timestamp": "2026-06-15T17:38:44.243Z",
"disclosures": []
}
},
+ "purposes": {
+ "58": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/33acrossIdSystem.json b/metadata/modules/33acrossIdSystem.json
index 91ca50da896..ff69fe53959 100644
--- a/metadata/modules/33acrossIdSystem.json
+++ b/metadata/modules/33acrossIdSystem.json
@@ -2,10 +2,27 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://platform.33across.com/disclosures.json": {
- "timestamp": "2026-05-18T20:03:46.540Z",
+ "timestamp": "2026-06-15T17:38:44.442Z",
"disclosures": []
}
},
+ "purposes": {
+ "58": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/360playvidBidAdapter.json b/metadata/modules/360playvidBidAdapter.json
index 54cb0ea9b4b..510625476ea 100644
--- a/metadata/modules/360playvidBidAdapter.json
+++ b/metadata/modules/360playvidBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/51DegreesRtdProvider.json b/metadata/modules/51DegreesRtdProvider.json
index b0c5b9f0e6a..cbb2ac59277 100644
--- a/metadata/modules/51DegreesRtdProvider.json
+++ b/metadata/modules/51DegreesRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/AsteriobidPbmAnalyticsAdapter.json b/metadata/modules/AsteriobidPbmAnalyticsAdapter.json
index ce3208afcb6..f257d2c3878 100644
--- a/metadata/modules/AsteriobidPbmAnalyticsAdapter.json
+++ b/metadata/modules/AsteriobidPbmAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/a1MediaBidAdapter.json b/metadata/modules/a1MediaBidAdapter.json
index 0f036b5a2d1..dd83991d271 100644
--- a/metadata/modules/a1MediaBidAdapter.json
+++ b/metadata/modules/a1MediaBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/a1MediaRtdProvider.json b/metadata/modules/a1MediaRtdProvider.json
index e07c2220170..9e5b4a4e409 100644
--- a/metadata/modules/a1MediaRtdProvider.json
+++ b/metadata/modules/a1MediaRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/a4gBidAdapter.json b/metadata/modules/a4gBidAdapter.json
index abbae0b4378..96a81cf3006 100644
--- a/metadata/modules/a4gBidAdapter.json
+++ b/metadata/modules/a4gBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/aaxBlockmeterRtdProvider.json b/metadata/modules/aaxBlockmeterRtdProvider.json
index 4170821fcf8..0e612db2789 100644
--- a/metadata/modules/aaxBlockmeterRtdProvider.json
+++ b/metadata/modules/aaxBlockmeterRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/ablidaBidAdapter.json b/metadata/modules/ablidaBidAdapter.json
index ee67b79ecfd..d7f137a250b 100644
--- a/metadata/modules/ablidaBidAdapter.json
+++ b/metadata/modules/ablidaBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/abtshieldIdSystem.json b/metadata/modules/abtshieldIdSystem.json
index a2038467deb..7987230caef 100644
--- a/metadata/modules/abtshieldIdSystem.json
+++ b/metadata/modules/abtshieldIdSystem.json
@@ -2,10 +2,38 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://d1.abtshield.com/disclosures.json": {
- "timestamp": "2026-05-18T20:03:46.542Z",
+ "timestamp": "2026-06-15T17:38:44.443Z",
"disclosures": []
}
},
+ "purposes": {
+ "825": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 5,
+ 6
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "specialFeatures": [
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/aceexBidAdapter.json b/metadata/modules/aceexBidAdapter.json
index 2803725870a..33c5a8dfff8 100644
--- a/metadata/modules/aceexBidAdapter.json
+++ b/metadata/modules/aceexBidAdapter.json
@@ -2,10 +2,24 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://aceex.io/tcf.json": {
- "timestamp": "2026-05-18T20:03:47.151Z",
+ "timestamp": "2026-06-15T17:38:45.337Z",
"disclosures": []
}
},
+ "purposes": {
+ "1387": {
+ "purposes": [
+ 1,
+ 2,
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/acuityadsBidAdapter.json b/metadata/modules/acuityadsBidAdapter.json
index f986dfebf73..2799d4bc6ca 100644
--- a/metadata/modules/acuityadsBidAdapter.json
+++ b/metadata/modules/acuityadsBidAdapter.json
@@ -2,10 +2,32 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://privacy.acuityads.com/deviceStorageDisclosure.json": {
- "timestamp": "2026-05-18T20:03:47.482Z",
+ "timestamp": "2026-06-15T17:38:45.660Z",
"disclosures": []
}
},
+ "purposes": {
+ "231": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 8,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8,
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/acxiomRealIdSystem.json b/metadata/modules/acxiomRealIdSystem.json
new file mode 100644
index 00000000000..b4f12c9b707
--- /dev/null
+++ b/metadata/modules/acxiomRealIdSystem.json
@@ -0,0 +1,14 @@
+{
+ "NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
+ "disclosures": {},
+ "purposes": {},
+ "components": [
+ {
+ "componentType": "userId",
+ "componentName": "acxiomRealId",
+ "gvlid": null,
+ "disclosureURL": null,
+ "aliasOf": null
+ }
+ ]
+}
\ No newline at end of file
diff --git a/metadata/modules/ad2ictionBidAdapter.json b/metadata/modules/ad2ictionBidAdapter.json
index b6e564d1ea0..1e15a7cf851 100644
--- a/metadata/modules/ad2ictionBidAdapter.json
+++ b/metadata/modules/ad2ictionBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adWMGAnalyticsAdapter.json b/metadata/modules/adWMGAnalyticsAdapter.json
index 6a377462260..f9ff050b2a3 100644
--- a/metadata/modules/adWMGAnalyticsAdapter.json
+++ b/metadata/modules/adWMGAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/adWMGBidAdapter.json b/metadata/modules/adWMGBidAdapter.json
index f2e0540abea..9d0d9e8dc47 100644
--- a/metadata/modules/adWMGBidAdapter.json
+++ b/metadata/modules/adWMGBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adagioAnalyticsAdapter.json b/metadata/modules/adagioAnalyticsAdapter.json
index 93c5dbbd55e..0998adff5a2 100644
--- a/metadata/modules/adagioAnalyticsAdapter.json
+++ b/metadata/modules/adagioAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/adagioBidAdapter.json b/metadata/modules/adagioBidAdapter.json
index ea55ceb2f16..960df926e73 100644
--- a/metadata/modules/adagioBidAdapter.json
+++ b/metadata/modules/adagioBidAdapter.json
@@ -2,10 +2,34 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://adagio.io/deviceStorageDisclosure.json": {
- "timestamp": "2026-05-18T20:03:47.596Z",
+ "timestamp": "2026-06-15T17:38:45.953Z",
"disclosures": []
}
},
+ "purposes": {
+ "617": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 8,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8,
+ 10
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adagioRtdProvider.json b/metadata/modules/adagioRtdProvider.json
index feec6bd8594..75ef8c30cd1 100644
--- a/metadata/modules/adagioRtdProvider.json
+++ b/metadata/modules/adagioRtdProvider.json
@@ -2,10 +2,34 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://adagio.io/deviceStorageDisclosure.json": {
- "timestamp": "2026-05-18T20:03:47.663Z",
+ "timestamp": "2026-06-15T17:38:46.056Z",
"disclosures": []
}
},
+ "purposes": {
+ "617": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 8,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8,
+ 10
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/adbroBidAdapter.json b/metadata/modules/adbroBidAdapter.json
index f28c46a9ac1..8550790680a 100644
--- a/metadata/modules/adbroBidAdapter.json
+++ b/metadata/modules/adbroBidAdapter.json
@@ -2,10 +2,33 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://tag.adbro.me/privacy/devicestorage.json": {
- "timestamp": "2026-05-18T20:03:47.663Z",
+ "timestamp": "2026-06-15T17:38:46.056Z",
"disclosures": []
}
},
+ "purposes": {
+ "1316": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6
+ ],
+ "legIntPurposes": [
+ 7,
+ 8,
+ 10,
+ 11
+ ],
+ "flexiblePurposes": [
+ 2,
+ 11
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adbutlerBidAdapter.json b/metadata/modules/adbutlerBidAdapter.json
index 86b7ab5e52b..5ae5492214c 100644
--- a/metadata/modules/adbutlerBidAdapter.json
+++ b/metadata/modules/adbutlerBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adclusterBidAdapter.json b/metadata/modules/adclusterBidAdapter.json
index 72d44231bb6..c8a4f1930d7 100644
--- a/metadata/modules/adclusterBidAdapter.json
+++ b/metadata/modules/adclusterBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/addefendBidAdapter.json b/metadata/modules/addefendBidAdapter.json
index 7580390941b..398938ce834 100644
--- a/metadata/modules/addefendBidAdapter.json
+++ b/metadata/modules/addefendBidAdapter.json
@@ -2,10 +2,24 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://www.addefend.com/deviceStorage.json": {
- "timestamp": "2026-05-18T20:03:47.780Z",
+ "timestamp": "2026-06-15T17:38:46.333Z",
"disclosures": []
}
},
+ "purposes": {
+ "539": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adelerateBidAdapter.json b/metadata/modules/adelerateBidAdapter.json
index 2e3f06fa6ab..0889ca5276a 100644
--- a/metadata/modules/adelerateBidAdapter.json
+++ b/metadata/modules/adelerateBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adfBidAdapter.json b/metadata/modules/adfBidAdapter.json
index bdd1805748f..339ae8f7870 100644
--- a/metadata/modules/adfBidAdapter.json
+++ b/metadata/modules/adfBidAdapter.json
@@ -2,10 +2,30 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://site.adform.com/assets/devicestorage.json": {
- "timestamp": "2026-05-18T20:03:49.053Z",
+ "timestamp": "2026-06-15T17:38:47.469Z",
"disclosures": []
}
},
+ "purposes": {
+ "50": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adfusionBidAdapter.json b/metadata/modules/adfusionBidAdapter.json
index 5a42c45181c..edd13bfa56f 100644
--- a/metadata/modules/adfusionBidAdapter.json
+++ b/metadata/modules/adfusionBidAdapter.json
@@ -2,10 +2,26 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://spicyrtb.com/static/iab-disclosure.json": {
- "timestamp": "2026-05-18T20:03:49.053Z",
+ "timestamp": "2026-06-15T17:38:47.470Z",
"disclosures": []
}
},
+ "purposes": {
+ "844": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adgenerationBidAdapter.json b/metadata/modules/adgenerationBidAdapter.json
index 0cb6aff6eb0..e906b5f8c3e 100644
--- a/metadata/modules/adgenerationBidAdapter.json
+++ b/metadata/modules/adgenerationBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adgridBidAdapter.json b/metadata/modules/adgridBidAdapter.json
index 8991b61935b..8a9fcbf4f48 100644
--- a/metadata/modules/adgridBidAdapter.json
+++ b/metadata/modules/adgridBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adhashBidAdapter.json b/metadata/modules/adhashBidAdapter.json
index 44ce3f735db..493899ac4f1 100644
--- a/metadata/modules/adhashBidAdapter.json
+++ b/metadata/modules/adhashBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adheseBidAdapter.json b/metadata/modules/adheseBidAdapter.json
index 6fd4cc7a0d3..4819d52dad1 100644
--- a/metadata/modules/adheseBidAdapter.json
+++ b/metadata/modules/adheseBidAdapter.json
@@ -2,10 +2,27 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://adhese.com/deviceStorage.json": {
- "timestamp": "2026-05-18T20:03:49.553Z",
+ "timestamp": "2026-06-15T17:38:48.645Z",
"disclosures": []
}
},
+ "purposes": {
+ "553": {
+ "purposes": [
+ 1,
+ 2,
+ 4,
+ 6,
+ 7,
+ 9
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adipoloBidAdapter.json b/metadata/modules/adipoloBidAdapter.json
index bc224e2c6cd..e6fb55dbb9b 100644
--- a/metadata/modules/adipoloBidAdapter.json
+++ b/metadata/modules/adipoloBidAdapter.json
@@ -2,10 +2,30 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://adipolo.com/device_storage_disclosure.json": {
- "timestamp": "2026-05-18T20:03:50.000Z",
+ "timestamp": "2026-06-15T17:38:49.112Z",
"disclosures": []
}
},
+ "purposes": {
+ "1456": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 8,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [
+ 7
+ ],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adkernelAdnAnalyticsAdapter.json b/metadata/modules/adkernelAdnAnalyticsAdapter.json
index d9cd7a18e58..af11591b798 100644
--- a/metadata/modules/adkernelAdnAnalyticsAdapter.json
+++ b/metadata/modules/adkernelAdnAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/adkernelAdnBidAdapter.json b/metadata/modules/adkernelAdnBidAdapter.json
index 2a3b3121eb1..b47f9c9b4fb 100644
--- a/metadata/modules/adkernelAdnBidAdapter.json
+++ b/metadata/modules/adkernelAdnBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://static.adkernel.com/deviceStorage.json": {
- "timestamp": "2026-05-18T20:03:50.230Z",
+ "timestamp": "2026-06-15T17:38:49.362Z",
"disclosures": [
{
"identifier": "adk_rtb_conv_id",
@@ -17,6 +17,26 @@
]
}
},
+ "purposes": {
+ "14": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [
+ 2,
+ 7
+ ],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1,
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adkernelBidAdapter.json b/metadata/modules/adkernelBidAdapter.json
index 812751b86dd..2115657e337 100644
--- a/metadata/modules/adkernelBidAdapter.json
+++ b/metadata/modules/adkernelBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://static.adkernel.com/deviceStorage.json": {
- "timestamp": "2026-05-18T20:03:50.325Z",
+ "timestamp": "2026-06-15T17:38:49.579Z",
"disclosures": [
{
"identifier": "adk_rtb_conv_id",
@@ -17,22 +17,91 @@
]
},
"https://data.converge-digital.com/deviceStorage.json": {
- "timestamp": "2026-05-18T20:03:50.325Z",
+ "timestamp": "2026-06-15T17:38:49.579Z",
"disclosures": []
},
"https://spinx.biz/tcf-spinx.json": {
- "timestamp": "2026-05-18T20:03:50.496Z",
+ "timestamp": "2026-06-15T17:38:49.768Z",
"disclosures": []
},
"https://gdpr.memob.com/deviceStorage.json": {
- "timestamp": "2026-05-18T20:03:51.242Z",
+ "timestamp": "2026-06-15T17:38:50.367Z",
"disclosures": []
},
"https://appmonsta.ai/DeviceStorageDisclosure.json": {
- "timestamp": "2026-05-18T20:03:51.378Z",
+ "timestamp": "2026-06-15T17:38:50.630Z",
"disclosures": []
}
},
+ "purposes": {
+ "14": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [
+ 2,
+ 7
+ ],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1,
+ 2
+ ]
+ },
+ "248": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ },
+ "1209": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ },
+ "1283": {
+ "purposes": [
+ 1
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ },
+ "1308": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
@@ -355,6 +424,13 @@
"aliasOf": "adkernel",
"gvlid": null,
"disclosureURL": null
+ },
+ {
+ "componentType": "bidder",
+ "componentName": "reload",
+ "aliasOf": "adkernel",
+ "gvlid": null,
+ "disclosureURL": null
}
]
}
\ No newline at end of file
diff --git a/metadata/modules/adlaneRtdProvider.json b/metadata/modules/adlaneRtdProvider.json
index f3327726a74..c531a137cc9 100644
--- a/metadata/modules/adlaneRtdProvider.json
+++ b/metadata/modules/adlaneRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/adlooxAnalyticsAdapter.json b/metadata/modules/adlooxAnalyticsAdapter.json
index 7561ae65b53..00028f87236 100644
--- a/metadata/modules/adlooxAnalyticsAdapter.json
+++ b/metadata/modules/adlooxAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/adlooxRtdProvider.json b/metadata/modules/adlooxRtdProvider.json
index 0d0b1ca000a..1b674c5b739 100644
--- a/metadata/modules/adlooxRtdProvider.json
+++ b/metadata/modules/adlooxRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/admaruBidAdapter.json b/metadata/modules/admaruBidAdapter.json
index 552c0d8a78c..75fb345ccee 100644
--- a/metadata/modules/admaruBidAdapter.json
+++ b/metadata/modules/admaruBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/admaticBidAdapter.json b/metadata/modules/admaticBidAdapter.json
index 61ec2422b4f..cfc0b3e06ce 100644
--- a/metadata/modules/admaticBidAdapter.json
+++ b/metadata/modules/admaticBidAdapter.json
@@ -2,17 +2,11 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://static.admatic.de/iab-europe/tcfv2/disclosure.json": {
- "timestamp": "2026-05-18T20:03:53.201Z",
- "disclosures": [
- {
- "identifier": "px_pbjs",
- "type": "web",
- "purposes": []
- }
- ]
+ "timestamp": "2026-06-15T17:38:52.473Z",
+ "disclosures": []
},
"https://adtarget.com.tr/.well-known/deviceStorage.json": {
- "timestamp": "2026-05-18T20:03:53.201Z",
+ "timestamp": "2026-06-15T17:38:52.473Z",
"disclosures": [
{
"identifier": "adt_pbjs",
@@ -22,6 +16,33 @@
]
}
},
+ "purposes": {
+ "779": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ },
+ "1281": {
+ "purposes": [
+ 1,
+ 2
+ ],
+ "legIntPurposes": [
+ 10
+ ],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/admediaBidAdapter.json b/metadata/modules/admediaBidAdapter.json
index 8674aa4aca8..a9fa6f54a89 100644
--- a/metadata/modules/admediaBidAdapter.json
+++ b/metadata/modules/admediaBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/admixerBidAdapter.json b/metadata/modules/admixerBidAdapter.json
index cc588a6e056..02fefeae70f 100644
--- a/metadata/modules/admixerBidAdapter.json
+++ b/metadata/modules/admixerBidAdapter.json
@@ -2,10 +2,30 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://admixer.com/tcf.json": {
- "timestamp": "2026-05-18T20:03:53.201Z",
+ "timestamp": "2026-06-15T17:38:52.473Z",
"disclosures": []
}
},
+ "purposes": {
+ "511": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 7,
+ 9
+ ],
+ "legIntPurposes": [
+ 10
+ ],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/admixerIdSystem.json b/metadata/modules/admixerIdSystem.json
index d719fd97325..884737f86cc 100644
--- a/metadata/modules/admixerIdSystem.json
+++ b/metadata/modules/admixerIdSystem.json
@@ -2,10 +2,30 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://admixer.com/tcf.json": {
- "timestamp": "2026-05-18T20:03:53.867Z",
+ "timestamp": "2026-06-15T17:38:53.064Z",
"disclosures": []
}
},
+ "purposes": {
+ "511": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 7,
+ 9
+ ],
+ "legIntPurposes": [
+ 10
+ ],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/adnimationBidAdapter.json b/metadata/modules/adnimationBidAdapter.json
index 7bb7fce194e..9a361ad55a5 100644
--- a/metadata/modules/adnimationBidAdapter.json
+++ b/metadata/modules/adnimationBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adnowBidAdapter.json b/metadata/modules/adnowBidAdapter.json
index 75c80430850..d86ce51439f 100644
--- a/metadata/modules/adnowBidAdapter.json
+++ b/metadata/modules/adnowBidAdapter.json
@@ -1,78 +1,14 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
- "disclosures": {
- "https://adnow.com/vdsod.json": {
- "timestamp": "2026-05-18T20:03:53.867Z",
- "disclosures": [
- {
- "identifier": "SC_unique_*",
- "type": "cookie",
- "maxAgeSeconds": 86400,
- "cookieRefresh": false,
- "purposes": [
- 1,
- 2
- ]
- },
- {
- "identifier": "SC_showNum_*",
- "type": "cookie",
- "maxAgeSeconds": 86400,
- "cookieRefresh": true,
- "purposes": [
- 1,
- 2
- ]
- },
- {
- "identifier": "SC_showNumExpires_*",
- "type": "cookie",
- "maxAgeSeconds": 86400,
- "cookieRefresh": true,
- "purposes": [
- 1,
- 2
- ]
- },
- {
- "identifier": "SC_showNumV_*",
- "type": "cookie",
- "maxAgeSeconds": 86400,
- "cookieRefresh": true,
- "purposes": [
- 1,
- 2
- ]
- },
- {
- "identifier": "SC_showNumVExpires_*",
- "type": "cookie",
- "maxAgeSeconds": 86400,
- "cookieRefresh": true,
- "purposes": [
- 1,
- 2
- ]
- },
- {
- "identifier": "SC_dsp_uuid_v3_*",
- "type": "cookie",
- "maxAgeSeconds": 1209600,
- "cookieRefresh": false,
- "purposes": [
- 1
- ]
- }
- ]
- }
- },
+ "disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
"componentName": "adnow",
"aliasOf": null,
- "gvlid": 1210,
- "disclosureURL": "https://adnow.com/vdsod.json"
+ "gvlid": null,
+ "disclosureURL": null
}
]
}
\ No newline at end of file
diff --git a/metadata/modules/adnuntiusAnalyticsAdapter.json b/metadata/modules/adnuntiusAnalyticsAdapter.json
index 5e449fdc75c..bdf9b55281c 100644
--- a/metadata/modules/adnuntiusAnalyticsAdapter.json
+++ b/metadata/modules/adnuntiusAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/adnuntiusBidAdapter.json b/metadata/modules/adnuntiusBidAdapter.json
index 090367b20ac..d7b060910e1 100644
--- a/metadata/modules/adnuntiusBidAdapter.json
+++ b/metadata/modules/adnuntiusBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://delivery.adnuntius.com/.well-known/deviceStorage.json": {
- "timestamp": "2026-05-18T20:03:54.206Z",
+ "timestamp": "2026-06-15T17:38:53.065Z",
"disclosures": [
{
"identifier": "adn.metaData",
@@ -18,6 +18,26 @@
]
}
},
+ "purposes": {
+ "855": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adnuntiusRtdProvider.json b/metadata/modules/adnuntiusRtdProvider.json
index 0bdc946d731..efbe11d6a6f 100644
--- a/metadata/modules/adnuntiusRtdProvider.json
+++ b/metadata/modules/adnuntiusRtdProvider.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://delivery.adnuntius.com/.well-known/deviceStorage.json": {
- "timestamp": "2026-05-18T20:03:54.605Z",
+ "timestamp": "2026-06-15T17:38:53.556Z",
"disclosures": [
{
"identifier": "adn.metaData",
@@ -18,6 +18,26 @@
]
}
},
+ "purposes": {
+ "855": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/adoceanBidAdapter.json b/metadata/modules/adoceanBidAdapter.json
index ccdb9df5ccf..98a03b4e4e4 100644
--- a/metadata/modules/adoceanBidAdapter.json
+++ b/metadata/modules/adoceanBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://gemius.com/media/documents/Gemius_SA_Vendor_Device_Storage.json": {
- "timestamp": "2026-05-18T20:03:54.605Z",
+ "timestamp": "2026-06-15T17:38:53.556Z",
"disclosures": [
{
"identifier": "__gsyncs_gdpr",
@@ -268,6 +268,23 @@
]
}
},
+ "purposes": {
+ "328": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adotBidAdapter.json b/metadata/modules/adotBidAdapter.json
index 2cee3f9dae1..b544d132c5b 100644
--- a/metadata/modules/adotBidAdapter.json
+++ b/metadata/modules/adotBidAdapter.json
@@ -2,10 +2,29 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://assets.adotmob.com/tcf/tcf.json": {
- "timestamp": "2026-05-18T20:03:55.503Z",
+ "timestamp": "2026-06-15T17:38:54.862Z",
"disclosures": []
}
},
+ "purposes": {
+ "272": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1,
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adpartnerBidAdapter.json b/metadata/modules/adpartnerBidAdapter.json
index 6edd2fcd306..7c3a56994c8 100644
--- a/metadata/modules/adpartnerBidAdapter.json
+++ b/metadata/modules/adpartnerBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adplusAnalyticsAdapter.json b/metadata/modules/adplusAnalyticsAdapter.json
index 92dc4a0c0d4..aa0ba8ca422 100644
--- a/metadata/modules/adplusAnalyticsAdapter.json
+++ b/metadata/modules/adplusAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/adplusBidAdapter.json b/metadata/modules/adplusBidAdapter.json
index cfe4dd9e392..34a948d019a 100644
--- a/metadata/modules/adplusBidAdapter.json
+++ b/metadata/modules/adplusBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adplusIdSystem.json b/metadata/modules/adplusIdSystem.json
index 76e88200f0d..0a3250362e6 100644
--- a/metadata/modules/adplusIdSystem.json
+++ b/metadata/modules/adplusIdSystem.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/adponeBidAdapter.json b/metadata/modules/adponeBidAdapter.json
index d63a8f7e80a..f97ab97ea4d 100644
--- a/metadata/modules/adponeBidAdapter.json
+++ b/metadata/modules/adponeBidAdapter.json
@@ -2,10 +2,26 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://adserver.adpone.com/deviceStorage.json": {
- "timestamp": "2026-05-18T20:03:55.579Z",
+ "timestamp": "2026-06-15T17:38:54.968Z",
"disclosures": []
}
},
+ "purposes": {
+ "799": {
+ "purposes": [
+ 1,
+ 2,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adprimeBidAdapter.json b/metadata/modules/adprimeBidAdapter.json
index a18bb1d23d7..89bf77a13d0 100644
--- a/metadata/modules/adprimeBidAdapter.json
+++ b/metadata/modules/adprimeBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adqueryBidAdapter.json b/metadata/modules/adqueryBidAdapter.json
index 041c5531c5a..8ddfd2a3dd6 100644
--- a/metadata/modules/adqueryBidAdapter.json
+++ b/metadata/modules/adqueryBidAdapter.json
@@ -2,10 +2,31 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://api.adquery.io/tcf/adQuery.json": {
- "timestamp": "2026-05-18T20:03:55.710Z",
+ "timestamp": "2026-06-15T17:38:55.153Z",
"disclosures": []
}
},
+ "purposes": {
+ "902": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adqueryIdSystem.json b/metadata/modules/adqueryIdSystem.json
index ad4592421ba..f181acc5ac0 100644
--- a/metadata/modules/adqueryIdSystem.json
+++ b/metadata/modules/adqueryIdSystem.json
@@ -2,10 +2,31 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://api.adquery.io/tcf/adQuery.json": {
- "timestamp": "2026-05-18T20:03:56.109Z",
+ "timestamp": "2026-06-15T17:38:55.716Z",
"disclosures": []
}
},
+ "purposes": {
+ "902": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/adrelevantisBidAdapter.json b/metadata/modules/adrelevantisBidAdapter.json
index 82802aa3793..395a743985f 100644
--- a/metadata/modules/adrelevantisBidAdapter.json
+++ b/metadata/modules/adrelevantisBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adrinoBidAdapter.json b/metadata/modules/adrinoBidAdapter.json
index 3ba0cf449b8..e59560bdb4a 100644
--- a/metadata/modules/adrinoBidAdapter.json
+++ b/metadata/modules/adrinoBidAdapter.json
@@ -2,10 +2,27 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.adrino.cloud/iab/device-storage.json": {
- "timestamp": "2026-05-18T20:03:56.110Z",
+ "timestamp": "2026-06-15T17:38:55.717Z",
"disclosures": []
}
},
+ "purposes": {
+ "1072": {
+ "purposes": [
+ 2,
+ 4,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adriverBidAdapter.json b/metadata/modules/adriverBidAdapter.json
index a95b6e2a4f8..26dd63a5b94 100644
--- a/metadata/modules/adriverBidAdapter.json
+++ b/metadata/modules/adriverBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adriverIdSystem.json b/metadata/modules/adriverIdSystem.json
index 65e92d38ede..c0aad2fb8b0 100644
--- a/metadata/modules/adriverIdSystem.json
+++ b/metadata/modules/adriverIdSystem.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/ads_interactiveBidAdapter.json b/metadata/modules/ads_interactiveBidAdapter.json
index 6c84813bd09..1268b7cf3e8 100644
--- a/metadata/modules/ads_interactiveBidAdapter.json
+++ b/metadata/modules/ads_interactiveBidAdapter.json
@@ -2,10 +2,23 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://adsinteractive.com/vendor.json": {
- "timestamp": "2026-05-18T20:03:56.151Z",
+ "timestamp": "2026-06-15T17:38:55.797Z",
"disclosures": []
}
},
+ "purposes": {
+ "1212": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adsmartxBidAdapter.json b/metadata/modules/adsmartxBidAdapter.json
index 21ea5dcef03..f04eee0847b 100644
--- a/metadata/modules/adsmartxBidAdapter.json
+++ b/metadata/modules/adsmartxBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adsmovilBidAdapter.json b/metadata/modules/adsmovilBidAdapter.json
index e66f70daa81..0710c37db6e 100644
--- a/metadata/modules/adsmovilBidAdapter.json
+++ b/metadata/modules/adsmovilBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adspiritBidAdapter.json b/metadata/modules/adspiritBidAdapter.json
index 282a48a4a62..8f1679ca941 100644
--- a/metadata/modules/adspiritBidAdapter.json
+++ b/metadata/modules/adspiritBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adstirBidAdapter.json b/metadata/modules/adstirBidAdapter.json
index 09affafc6ad..42ba7937361 100644
--- a/metadata/modules/adstirBidAdapter.json
+++ b/metadata/modules/adstirBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adtargetBidAdapter.json b/metadata/modules/adtargetBidAdapter.json
index 739e09a9cf1..a6ac01c265e 100644
--- a/metadata/modules/adtargetBidAdapter.json
+++ b/metadata/modules/adtargetBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://adtarget.com.tr/.well-known/deviceStorage.json": {
- "timestamp": "2026-05-18T20:03:56.518Z",
+ "timestamp": "2026-06-15T17:38:56.319Z",
"disclosures": [
{
"identifier": "adt_pbjs",
@@ -12,6 +12,22 @@
]
}
},
+ "purposes": {
+ "779": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adtelligentBidAdapter.json b/metadata/modules/adtelligentBidAdapter.json
index 77eab212749..7c734084903 100644
--- a/metadata/modules/adtelligentBidAdapter.json
+++ b/metadata/modules/adtelligentBidAdapter.json
@@ -2,14 +2,22 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://adtelligent.com/.well-known/deviceStorage.json": {
- "timestamp": "2026-05-18T20:03:56.519Z",
- "disclosures": []
- },
- "https://orangeclickmedia.com/device_storage_disclosure.json": {
- "timestamp": "2026-05-18T20:03:56.979Z",
+ "timestamp": "2026-06-15T17:38:56.319Z",
"disclosures": []
}
},
+ "purposes": {
+ "410": {
+ "purposes": [
+ 1,
+ 2,
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
@@ -18,47 +26,12 @@
"gvlid": 410,
"disclosureURL": "https://adtelligent.com/.well-known/deviceStorage.json"
},
- {
- "componentType": "bidder",
- "componentName": "streamkey",
- "aliasOf": "adtelligent",
- "gvlid": null,
- "disclosureURL": null
- },
- {
- "componentType": "bidder",
- "componentName": "janet",
- "aliasOf": "adtelligent",
- "gvlid": null,
- "disclosureURL": null
- },
- {
- "componentType": "bidder",
- "componentName": "ocm",
- "aliasOf": "adtelligent",
- "gvlid": 1148,
- "disclosureURL": "https://orangeclickmedia.com/device_storage_disclosure.json"
- },
- {
- "componentType": "bidder",
- "componentName": "9dotsmedia",
- "aliasOf": "adtelligent",
- "gvlid": null,
- "disclosureURL": null
- },
{
"componentType": "bidder",
"componentName": "indicue",
"aliasOf": "adtelligent",
"gvlid": null,
"disclosureURL": null
- },
- {
- "componentType": "bidder",
- "componentName": "stellormedia",
- "aliasOf": "adtelligent",
- "gvlid": null,
- "disclosureURL": null
}
]
}
\ No newline at end of file
diff --git a/metadata/modules/adtelligentIdSystem.json b/metadata/modules/adtelligentIdSystem.json
index 981cf66be2f..266f490e580 100644
--- a/metadata/modules/adtelligentIdSystem.json
+++ b/metadata/modules/adtelligentIdSystem.json
@@ -2,10 +2,22 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://adtelligent.com/.well-known/deviceStorage.json": {
- "timestamp": "2026-05-18T20:03:57.132Z",
+ "timestamp": "2026-06-15T17:38:56.508Z",
"disclosures": []
}
},
+ "purposes": {
+ "410": {
+ "purposes": [
+ 1,
+ 2,
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/adtrgtmeBidAdapter.json b/metadata/modules/adtrgtmeBidAdapter.json
index 068738548a6..62b80aaafe5 100644
--- a/metadata/modules/adtrgtmeBidAdapter.json
+++ b/metadata/modules/adtrgtmeBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adtrueBidAdapter.json b/metadata/modules/adtrueBidAdapter.json
index 501b214de2c..90d79d7f4b3 100644
--- a/metadata/modules/adtrueBidAdapter.json
+++ b/metadata/modules/adtrueBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/aduptechBidAdapter.json b/metadata/modules/aduptechBidAdapter.json
index e6d9fcce63c..c3ee55f9ce7 100644
--- a/metadata/modules/aduptechBidAdapter.json
+++ b/metadata/modules/aduptechBidAdapter.json
@@ -2,10 +2,32 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://s.d.adup-tech.com/gdpr/deviceStorage.json": {
- "timestamp": "2026-05-18T20:03:57.133Z",
+ "timestamp": "2026-06-15T17:38:56.509Z",
"disclosures": []
}
},
+ "purposes": {
+ "647": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 10,
+ 11
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10,
+ 11
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/advRedAnalyticsAdapter.json b/metadata/modules/advRedAnalyticsAdapter.json
index f05bd01d52a..78de91c66ff 100644
--- a/metadata/modules/advRedAnalyticsAdapter.json
+++ b/metadata/modules/advRedAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/advangelistsBidAdapter.json b/metadata/modules/advangelistsBidAdapter.json
index ee7565ac337..2a6dc36f1f7 100644
--- a/metadata/modules/advangelistsBidAdapter.json
+++ b/metadata/modules/advangelistsBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/advertisingBidAdapter.json b/metadata/modules/advertisingBidAdapter.json
index 99d357e2b8f..cd64202fb2e 100644
--- a/metadata/modules/advertisingBidAdapter.json
+++ b/metadata/modules/advertisingBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adverxoBidAdapter.json b/metadata/modules/adverxoBidAdapter.json
index e3cec5f59de..efd221d69a9 100644
--- a/metadata/modules/adverxoBidAdapter.json
+++ b/metadata/modules/adverxoBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adxcgAnalyticsAdapter.json b/metadata/modules/adxcgAnalyticsAdapter.json
index a9d0f3286ed..c98c0f4d18c 100644
--- a/metadata/modules/adxcgAnalyticsAdapter.json
+++ b/metadata/modules/adxcgAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/adxcgBidAdapter.json b/metadata/modules/adxcgBidAdapter.json
index 97481c5829e..16685c048da 100644
--- a/metadata/modules/adxcgBidAdapter.json
+++ b/metadata/modules/adxcgBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/adxpremiumAnalyticsAdapter.json b/metadata/modules/adxpremiumAnalyticsAdapter.json
index 4f0ecb7effb..d46b53445b0 100644
--- a/metadata/modules/adxpremiumAnalyticsAdapter.json
+++ b/metadata/modules/adxpremiumAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/adyoulikeBidAdapter.json b/metadata/modules/adyoulikeBidAdapter.json
index 98b2f800c1d..af789358480 100644
--- a/metadata/modules/adyoulikeBidAdapter.json
+++ b/metadata/modules/adyoulikeBidAdapter.json
@@ -2,10 +2,24 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://adyoulike.com/deviceStorageDisclosureURL.json": {
- "timestamp": "2026-05-18T20:03:57.233Z",
+ "timestamp": "2026-06-15T17:38:56.580Z",
"disclosures": []
}
},
+ "purposes": {
+ "259": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/afpBidAdapter.json b/metadata/modules/afpBidAdapter.json
index 3ffe9d26ffa..2be30a0b938 100644
--- a/metadata/modules/afpBidAdapter.json
+++ b/metadata/modules/afpBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/agenticAudienceRtdProvider.json b/metadata/modules/agenticAudienceRtdProvider.json
index 2eab4d92d64..db2e9d2cb43 100644
--- a/metadata/modules/agenticAudienceRtdProvider.json
+++ b/metadata/modules/agenticAudienceRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/agmaAnalyticsAdapter.json b/metadata/modules/agmaAnalyticsAdapter.json
index a79d93be0e7..e5a73a005b4 100644
--- a/metadata/modules/agmaAnalyticsAdapter.json
+++ b/metadata/modules/agmaAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/aidemBidAdapter.json b/metadata/modules/aidemBidAdapter.json
index b6577ae755d..87de70ee42c 100644
--- a/metadata/modules/aidemBidAdapter.json
+++ b/metadata/modules/aidemBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/airgridRtdProvider.json b/metadata/modules/airgridRtdProvider.json
index 6b739860344..ff411086ae2 100644
--- a/metadata/modules/airgridRtdProvider.json
+++ b/metadata/modules/airgridRtdProvider.json
@@ -2,10 +2,28 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://www.wearemiq.com/privacy-and-compliance/devicestoragedisclosures.json": {
- "timestamp": "2026-05-18T20:03:57.863Z",
+ "timestamp": "2026-06-15T17:38:57.346Z",
"disclosures": []
}
},
+ "purposes": {
+ "101": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/ajaBidAdapter.json b/metadata/modules/ajaBidAdapter.json
index eab9d7e911e..0ae945d8fa1 100644
--- a/metadata/modules/ajaBidAdapter.json
+++ b/metadata/modules/ajaBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/akceloBidAdapter.json b/metadata/modules/akceloBidAdapter.json
index a14c5fe275d..e3badd05a71 100644
--- a/metadata/modules/akceloBidAdapter.json
+++ b/metadata/modules/akceloBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/alkimiBidAdapter.json b/metadata/modules/alkimiBidAdapter.json
index ae6a931d746..da7027f8768 100644
--- a/metadata/modules/alkimiBidAdapter.json
+++ b/metadata/modules/alkimiBidAdapter.json
@@ -2,10 +2,30 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://d1xjh92lb8fey3.cloudfront.net/tcf/alkimi_exchange_tcf.json": {
- "timestamp": "2026-05-18T20:03:58.032Z",
+ "timestamp": "2026-06-15T17:38:57.478Z",
"disclosures": []
}
},
+ "purposes": {
+ "1169": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 5,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1,
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/allegroBidAdapter.json b/metadata/modules/allegroBidAdapter.json
index e0d5dc82908..04b07f978fe 100644
--- a/metadata/modules/allegroBidAdapter.json
+++ b/metadata/modules/allegroBidAdapter.json
@@ -2,10 +2,29 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://assets.allegrostatic.com/dsp-tcf-external/device-storage.json": {
- "timestamp": "2026-05-18T20:03:58.446Z",
+ "timestamp": "2026-06-15T17:38:58.019Z",
"disclosures": []
}
},
+ "purposes": {
+ "1493": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1,
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/alliance_gravityBidAdapter.json b/metadata/modules/alliance_gravityBidAdapter.json
index 40f8333441f..8fb10bea261 100644
--- a/metadata/modules/alliance_gravityBidAdapter.json
+++ b/metadata/modules/alliance_gravityBidAdapter.json
@@ -2,10 +2,25 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://www.alliancegravity.com/tcf-vendor-info.json": {
- "timestamp": "2026-05-18T20:03:59.184Z",
+ "timestamp": "2026-06-15T17:38:58.684Z",
"disclosures": []
}
},
+ "purposes": {
+ "501": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/alvadsBidAdapter.json b/metadata/modules/alvadsBidAdapter.json
index c7e7f306402..2bb54b8d3b6 100644
--- a/metadata/modules/alvadsBidAdapter.json
+++ b/metadata/modules/alvadsBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/ampliffyBidAdapter.json b/metadata/modules/ampliffyBidAdapter.json
index a21bb52099f..2a8163464ca 100644
--- a/metadata/modules/ampliffyBidAdapter.json
+++ b/metadata/modules/ampliffyBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/amxBidAdapter.json b/metadata/modules/amxBidAdapter.json
index 88d3364a934..38e1654c9b2 100644
--- a/metadata/modules/amxBidAdapter.json
+++ b/metadata/modules/amxBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://assets.a-mo.net/tcf/device-storage.json": {
- "timestamp": "2026-05-18T20:03:59.852Z",
+ "timestamp": "2026-06-15T17:38:59.457Z",
"disclosures": [
{
"identifier": "amuid2",
@@ -43,6 +43,19 @@
]
}
},
+ "purposes": {
+ "737": {
+ "purposes": [
+ 1,
+ 2,
+ 4,
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/amxIdSystem.json b/metadata/modules/amxIdSystem.json
index cfebcb1a6c2..52e3defbb7d 100644
--- a/metadata/modules/amxIdSystem.json
+++ b/metadata/modules/amxIdSystem.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://assets.a-mo.net/tcf/device-storage.json": {
- "timestamp": "2026-05-18T20:03:59.941Z",
+ "timestamp": "2026-06-15T17:38:59.561Z",
"disclosures": [
{
"identifier": "amuid2",
@@ -43,6 +43,19 @@
]
}
},
+ "purposes": {
+ "737": {
+ "purposes": [
+ 1,
+ 2,
+ 4,
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/aniviewBidAdapter.json b/metadata/modules/aniviewBidAdapter.json
index b540dfb36d5..c5672b3d98a 100644
--- a/metadata/modules/aniviewBidAdapter.json
+++ b/metadata/modules/aniviewBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://player.aniview.com/gdpr/gdpr.json": {
- "timestamp": "2026-05-18T20:03:59.941Z",
+ "timestamp": "2026-06-15T17:38:59.561Z",
"disclosures": [
{
"identifier": "av_*",
@@ -18,6 +18,24 @@
]
}
},
+ "purposes": {
+ "780": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/anonymisedRtdProvider.json b/metadata/modules/anonymisedRtdProvider.json
index b326a6e0424..2ecb6bc9333 100644
--- a/metadata/modules/anonymisedRtdProvider.json
+++ b/metadata/modules/anonymisedRtdProvider.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn1.anonymised.io/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:00.199Z",
+ "timestamp": "2026-06-15T17:38:59.803Z",
"disclosures": [
{
"identifier": "oidc.user*",
@@ -62,6 +62,22 @@
]
}
},
+ "purposes": {
+ "1116": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/anyclipBidAdapter.json b/metadata/modules/anyclipBidAdapter.json
index 6c23cf83add..b13cda59941 100644
--- a/metadata/modules/anyclipBidAdapter.json
+++ b/metadata/modules/anyclipBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/anzuDSPBidAdapter.json b/metadata/modules/anzuDSPBidAdapter.json
new file mode 100644
index 00000000000..3b47a116f2a
--- /dev/null
+++ b/metadata/modules/anzuDSPBidAdapter.json
@@ -0,0 +1,14 @@
+{
+ "NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
+ "disclosures": {},
+ "purposes": {},
+ "components": [
+ {
+ "componentType": "bidder",
+ "componentName": "anzuDSP",
+ "aliasOf": null,
+ "gvlid": null,
+ "disclosureURL": null
+ }
+ ]
+}
\ No newline at end of file
diff --git a/metadata/modules/anzuSSPBidAdapter.json b/metadata/modules/anzuSSPBidAdapter.json
index ae7cbc0f9ef..a58dd39eb37 100644
--- a/metadata/modules/anzuSSPBidAdapter.json
+++ b/metadata/modules/anzuSSPBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/apacdexBidAdapter.json b/metadata/modules/apacdexBidAdapter.json
index 501814779f2..6193faca4e4 100644
--- a/metadata/modules/apacdexBidAdapter.json
+++ b/metadata/modules/apacdexBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/apesterBidAdapter.json b/metadata/modules/apesterBidAdapter.json
index 4b12ac58590..6bb18ee5787 100644
--- a/metadata/modules/apesterBidAdapter.json
+++ b/metadata/modules/apesterBidAdapter.json
@@ -2,10 +2,29 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://apester.com/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:00.498Z",
+ "timestamp": "2026-06-15T17:39:00.188Z",
"disclosures": []
}
},
+ "purposes": {
+ "354": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 7,
+ 8,
+ 10
+ ],
+ "flexiblePurposes": [
+ 7
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/appMonstaMediaBidAdapter.json b/metadata/modules/appMonstaMediaBidAdapter.json
index 1b2449a2d60..791ee6ae20f 100644
--- a/metadata/modules/appMonstaMediaBidAdapter.json
+++ b/metadata/modules/appMonstaMediaBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/appStockSSPBidAdapter.json b/metadata/modules/appStockSSPBidAdapter.json
index 2fa9fa1ef64..cd0ccbd2594 100644
--- a/metadata/modules/appStockSSPBidAdapter.json
+++ b/metadata/modules/appStockSSPBidAdapter.json
@@ -2,10 +2,26 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://app-stock.com/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:00.719Z",
+ "timestamp": "2026-06-15T17:39:00.412Z",
"disclosures": []
}
},
+ "purposes": {
+ "1223": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/appierAnalyticsAdapter.json b/metadata/modules/appierAnalyticsAdapter.json
index e231a8fdb82..6807418c839 100644
--- a/metadata/modules/appierAnalyticsAdapter.json
+++ b/metadata/modules/appierAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/appierBidAdapter.json b/metadata/modules/appierBidAdapter.json
index d9aed7f261d..3e24fc789ea 100644
--- a/metadata/modules/appierBidAdapter.json
+++ b/metadata/modules/appierBidAdapter.json
@@ -1,8 +1,8 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
- "https://tcf.appier.com/deviceStorage2025.json": {
- "timestamp": "2026-05-18T20:04:00.786Z",
+ "https://tcf.appier.com/deviceStorage.json": {
+ "timestamp": "2026-06-15T17:39:00.508Z",
"disclosures": [
{
"identifier": "_atrk_ssid",
@@ -238,13 +238,40 @@
]
}
},
+ "purposes": {
+ "728": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 5,
+ 6,
+ 11
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
"componentName": "appier",
"aliasOf": null,
"gvlid": 728,
- "disclosureURL": "https://tcf.appier.com/deviceStorage2025.json"
+ "disclosureURL": "https://tcf.appier.com/deviceStorage.json"
},
{
"componentType": "bidder",
diff --git a/metadata/modules/appnexusBidAdapter.json b/metadata/modules/appnexusBidAdapter.json
index d15c29ad1d5..5f044bbdf51 100644
--- a/metadata/modules/appnexusBidAdapter.json
+++ b/metadata/modules/appnexusBidAdapter.json
@@ -2,22 +2,82 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://acdn.adnxs.com/gvl/1d/xandrdevicestoragedisclosures.json": {
- "timestamp": "2026-05-18T20:04:01.836Z",
+ "timestamp": "2026-06-15T17:39:01.521Z",
"disclosures": []
},
"https://beintoo-support.b-cdn.net/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:00.984Z",
+ "timestamp": "2026-06-15T17:39:00.805Z",
"disclosures": []
},
"https://projectagora.net/1032_deviceStorageDisclosure.json": {
- "timestamp": "2026-05-18T20:04:01.198Z",
+ "timestamp": "2026-06-15T17:39:00.967Z",
"disclosures": []
},
"https://adzymic.com/tcf.json": {
- "timestamp": "2026-05-18T20:04:01.836Z",
+ "timestamp": "2026-06-15T17:39:01.521Z",
"disclosures": []
}
},
+ "purposes": {
+ "32": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ },
+ "618": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ },
+ "723": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ },
+ "1032": {
+ "purposes": [
+ 1,
+ 7,
+ 8
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
@@ -68,13 +128,6 @@
"gvlid": 32,
"disclosureURL": "https://acdn.adnxs.com/gvl/1d/xandrdevicestoragedisclosures.json"
},
- {
- "componentType": "bidder",
- "componentName": "oftmedia",
- "aliasOf": "appnexus",
- "gvlid": 32,
- "disclosureURL": "https://acdn.adnxs.com/gvl/1d/xandrdevicestoragedisclosures.json"
- },
{
"componentType": "bidder",
"componentName": "adasta",
diff --git a/metadata/modules/appushBidAdapter.json b/metadata/modules/appushBidAdapter.json
index 245d3a7f4dd..437c5cb5c4e 100644
--- a/metadata/modules/appushBidAdapter.json
+++ b/metadata/modules/appushBidAdapter.json
@@ -2,10 +2,33 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://www.thebiding.com/disclosures.json": {
- "timestamp": "2026-05-18T20:04:02.139Z",
+ "timestamp": "2026-06-15T17:39:02.001Z",
"disclosures": []
}
},
+ "purposes": {
+ "879": {
+ "purposes": [
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "specialFeatures": [
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/apsBidAdapter.json b/metadata/modules/apsBidAdapter.json
index 1ce0c6b68c7..cca676f0e87 100644
--- a/metadata/modules/apsBidAdapter.json
+++ b/metadata/modules/apsBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://m.media-amazon.com/images/G/01/adprefs/deviceStorageDisclosure.json": {
- "timestamp": "2026-05-18T20:04:02.484Z",
+ "timestamp": "2026-06-15T17:39:02.405Z",
"disclosures": [
{
"identifier": "vendor-id",
@@ -40,6 +40,27 @@
]
}
},
+ "purposes": {
+ "793": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/apstreamBidAdapter.json b/metadata/modules/apstreamBidAdapter.json
index 7696dcfe1d5..7fde7bca9a3 100644
--- a/metadata/modules/apstreamBidAdapter.json
+++ b/metadata/modules/apstreamBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://sak.userreport.com/tcf.json": {
- "timestamp": "2026-05-18T20:04:02.523Z",
+ "timestamp": "2026-06-15T17:39:02.546Z",
"disclosures": [
{
"identifier": "apr_dsu",
@@ -81,6 +81,30 @@
]
}
},
+ "purposes": {
+ "394": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/arcspanRtdProvider.json b/metadata/modules/arcspanRtdProvider.json
index 3e4f7b737f5..87b8c00d3f1 100644
--- a/metadata/modules/arcspanRtdProvider.json
+++ b/metadata/modules/arcspanRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/asealBidAdapter.json b/metadata/modules/asealBidAdapter.json
index 719c755bb33..471674c705e 100644
--- a/metadata/modules/asealBidAdapter.json
+++ b/metadata/modules/asealBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/asoBidAdapter.json b/metadata/modules/asoBidAdapter.json
index 556f7a02ace..e1f6bbc452d 100644
--- a/metadata/modules/asoBidAdapter.json
+++ b/metadata/modules/asoBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/asterioBidAdapter.json b/metadata/modules/asterioBidAdapter.json
index e64fe7d0f5c..d2c2edb6567 100644
--- a/metadata/modules/asterioBidAdapter.json
+++ b/metadata/modules/asterioBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/asteriobidAnalyticsAdapter.json b/metadata/modules/asteriobidAnalyticsAdapter.json
index cdd07141659..46dcc9757a0 100644
--- a/metadata/modules/asteriobidAnalyticsAdapter.json
+++ b/metadata/modules/asteriobidAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/astraoneBidAdapter.json b/metadata/modules/astraoneBidAdapter.json
index 0d5bb0d2685..63543842894 100644
--- a/metadata/modules/astraoneBidAdapter.json
+++ b/metadata/modules/astraoneBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/atsAnalyticsAdapter.json b/metadata/modules/atsAnalyticsAdapter.json
index 09e9750aea8..b967c392232 100644
--- a/metadata/modules/atsAnalyticsAdapter.json
+++ b/metadata/modules/atsAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/audiencerunBidAdapter.json b/metadata/modules/audiencerunBidAdapter.json
index ea80f8c30c8..c25fd3058d2 100644
--- a/metadata/modules/audiencerunBidAdapter.json
+++ b/metadata/modules/audiencerunBidAdapter.json
@@ -2,10 +2,27 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://www.audiencerun.com/tcf.json": {
- "timestamp": "2026-05-18T20:04:02.668Z",
+ "timestamp": "2026-06-15T17:39:02.655Z",
"disclosures": []
}
},
+ "purposes": {
+ "944": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/automatadAnalyticsAdapter.json b/metadata/modules/automatadAnalyticsAdapter.json
index c92f4dad3de..2833d3d08a7 100644
--- a/metadata/modules/automatadAnalyticsAdapter.json
+++ b/metadata/modules/automatadAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/automatadBidAdapter.json b/metadata/modules/automatadBidAdapter.json
index 52227a79b0a..31abb83d6ba 100644
--- a/metadata/modules/automatadBidAdapter.json
+++ b/metadata/modules/automatadBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/axisBidAdapter.json b/metadata/modules/axisBidAdapter.json
index f3bd51bfdd5..05e208d480a 100644
--- a/metadata/modules/axisBidAdapter.json
+++ b/metadata/modules/axisBidAdapter.json
@@ -2,10 +2,30 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://axis-marketplace.com/tcf.json": {
- "timestamp": "2026-05-18T20:04:02.809Z",
+ "timestamp": "2026-06-15T17:39:02.862Z",
"disclosures": []
}
},
+ "purposes": {
+ "1197": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 7,
+ 10
+ ],
+ "legIntPurposes": [
+ 8,
+ 9,
+ 11
+ ],
+ "flexiblePurposes": [
+ 9
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/axonixBidAdapter.json b/metadata/modules/axonixBidAdapter.json
index 0db1e8e9a19..b5fdbe932ed 100644
--- a/metadata/modules/axonixBidAdapter.json
+++ b/metadata/modules/axonixBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/azerionedgeRtdProvider.json b/metadata/modules/azerionedgeRtdProvider.json
index 55cb4200de2..3e83f7a0db8 100644
--- a/metadata/modules/azerionedgeRtdProvider.json
+++ b/metadata/modules/azerionedgeRtdProvider.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://sellers.improvedigital.com/tcf-cookies.json": {
- "timestamp": "2026-05-18T20:04:02.997Z",
+ "timestamp": "2026-06-15T17:39:03.141Z",
"disclosures": [
{
"identifier": "tuuid",
@@ -133,6 +133,29 @@
]
}
},
+ "purposes": {
+ "253": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 9
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/beachfrontBidAdapter.json b/metadata/modules/beachfrontBidAdapter.json
index 4b0f7a6dbd5..43dc6691929 100644
--- a/metadata/modules/beachfrontBidAdapter.json
+++ b/metadata/modules/beachfrontBidAdapter.json
@@ -2,10 +2,28 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://tcf.seedtag.com/vendor.json": {
- "timestamp": "2026-05-18T20:04:03.444Z",
+ "timestamp": "2026-06-15T17:39:03.665Z",
"disclosures": []
}
},
+ "purposes": {
+ "157": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/bedigitechBidAdapter.json b/metadata/modules/bedigitechBidAdapter.json
index 2da5c96e03b..285f9e77bd1 100644
--- a/metadata/modules/bedigitechBidAdapter.json
+++ b/metadata/modules/bedigitechBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/beopBidAdapter.json b/metadata/modules/beopBidAdapter.json
index 068e7913b11..c7ca0b6e251 100644
--- a/metadata/modules/beopBidAdapter.json
+++ b/metadata/modules/beopBidAdapter.json
@@ -2,10 +2,38 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://beop.collectiveaudience.co/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:03.642Z",
+ "timestamp": "2026-06-15T17:39:03.849Z",
"disclosures": []
}
},
+ "purposes": {
+ "666": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8
+ ],
+ "legIntPurposes": [
+ 9,
+ 10,
+ 11
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/betweenBidAdapter.json b/metadata/modules/betweenBidAdapter.json
index b1586eecebb..09c1e503532 100644
--- a/metadata/modules/betweenBidAdapter.json
+++ b/metadata/modules/betweenBidAdapter.json
@@ -2,10 +2,24 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://en.betweenx.com/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:03.770Z",
+ "timestamp": "2026-06-15T17:39:04.066Z",
"disclosures": []
}
},
+ "purposes": {
+ "724": {
+ "purposes": [
+ 1,
+ 9
+ ],
+ "legIntPurposes": [
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/beyondmediaBidAdapter.json b/metadata/modules/beyondmediaBidAdapter.json
index d19ff3231a5..b671e499a4f 100644
--- a/metadata/modules/beyondmediaBidAdapter.json
+++ b/metadata/modules/beyondmediaBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/biddoBidAdapter.json b/metadata/modules/biddoBidAdapter.json
index 9f8386e04ba..0877b92ffa1 100644
--- a/metadata/modules/biddoBidAdapter.json
+++ b/metadata/modules/biddoBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/bidfuseBidAdapter.json b/metadata/modules/bidfuseBidAdapter.json
index 03636b75cc7..8d2b4ef2482 100644
--- a/metadata/modules/bidfuseBidAdapter.json
+++ b/metadata/modules/bidfuseBidAdapter.json
@@ -2,10 +2,26 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://bidfuse.com/disclosure.json": {
- "timestamp": "2026-05-18T20:04:03.963Z",
+ "timestamp": "2026-06-15T17:39:04.381Z",
"disclosures": []
}
},
+ "purposes": {
+ "1466": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/bidglassBidAdapter.json b/metadata/modules/bidglassBidAdapter.json
index fb4142cb8ca..bfd20d0e60e 100644
--- a/metadata/modules/bidglassBidAdapter.json
+++ b/metadata/modules/bidglassBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/bidmaticBidAdapter.json b/metadata/modules/bidmaticBidAdapter.json
index 85fccb51b54..58bfe6be0b1 100644
--- a/metadata/modules/bidmaticBidAdapter.json
+++ b/metadata/modules/bidmaticBidAdapter.json
@@ -2,10 +2,22 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://bidmatic.io/.well-known/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:04.229Z",
+ "timestamp": "2026-06-15T17:39:04.594Z",
"disclosures": []
}
},
+ "purposes": {
+ "1134": {
+ "purposes": [
+ 1,
+ 2,
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/bidscubeBidAdapter.json b/metadata/modules/bidscubeBidAdapter.json
index 7cb1d0bfa42..f1a086d3adb 100644
--- a/metadata/modules/bidscubeBidAdapter.json
+++ b/metadata/modules/bidscubeBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/bidtheatreBidAdapter.json b/metadata/modules/bidtheatreBidAdapter.json
index 10904507075..71f76e1014c 100644
--- a/metadata/modules/bidtheatreBidAdapter.json
+++ b/metadata/modules/bidtheatreBidAdapter.json
@@ -2,10 +2,28 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://privacy.bidtheatre.com/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:04.364Z",
+ "timestamp": "2026-06-15T17:39:04.964Z",
"disclosures": []
}
},
+ "purposes": {
+ "30": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 7
+ ],
+ "legIntPurposes": [
+ 2
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/big-richmediaBidAdapter.json b/metadata/modules/big-richmediaBidAdapter.json
index d5c7888c7a9..83da3628877 100644
--- a/metadata/modules/big-richmediaBidAdapter.json
+++ b/metadata/modules/big-richmediaBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/billow_rtb25BidAdapter.json b/metadata/modules/billow_rtb25BidAdapter.json
index aaa6b7ad431..8669134e519 100644
--- a/metadata/modules/billow_rtb25BidAdapter.json
+++ b/metadata/modules/billow_rtb25BidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/bitmediaBidAdapter.json b/metadata/modules/bitmediaBidAdapter.json
index 24beaea7ae8..ce84744b354 100644
--- a/metadata/modules/bitmediaBidAdapter.json
+++ b/metadata/modules/bitmediaBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/blastoBidAdapter.json b/metadata/modules/blastoBidAdapter.json
index 3e9396578c3..343bef4d2e3 100644
--- a/metadata/modules/blastoBidAdapter.json
+++ b/metadata/modules/blastoBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/bliinkBidAdapter.json b/metadata/modules/bliinkBidAdapter.json
index 541ca19d04e..d96019c323e 100644
--- a/metadata/modules/bliinkBidAdapter.json
+++ b/metadata/modules/bliinkBidAdapter.json
@@ -1,18 +1,14 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
- "disclosures": {
- "https://bliink.io/disclosures.json": {
- "timestamp": "2026-05-18T20:04:04.717Z",
- "disclosures": []
- }
- },
+ "disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
"componentName": "bliink",
"aliasOf": null,
- "gvlid": 658,
- "disclosureURL": "https://bliink.io/disclosures.json"
+ "gvlid": null,
+ "disclosureURL": null
},
{
"componentType": "bidder",
diff --git a/metadata/modules/blockthroughBidAdapter.json b/metadata/modules/blockthroughBidAdapter.json
index e509dc0ae2e..6bccea2280f 100644
--- a/metadata/modules/blockthroughBidAdapter.json
+++ b/metadata/modules/blockthroughBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://blockthrough.com/tcf_disclosures.json": {
- "timestamp": "2026-05-18T20:04:05.297Z",
+ "timestamp": "2026-06-15T17:39:05.438Z",
"disclosures": [
{
"identifier": "BT_AA_DETECTION",
@@ -322,6 +322,27 @@
]
}
},
+ "purposes": {
+ "815": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/blueBidAdapter.json b/metadata/modules/blueBidAdapter.json
index 3132565b4ee..35d5d121ad7 100644
--- a/metadata/modules/blueBidAdapter.json
+++ b/metadata/modules/blueBidAdapter.json
@@ -2,10 +2,31 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://getblue.io/iab/iab.json": {
- "timestamp": "2026-05-18T20:04:05.544Z",
+ "timestamp": "2026-06-15T17:39:05.609Z",
"disclosures": null
}
},
+ "purposes": {
+ "620": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/blueconicRtdProvider.json b/metadata/modules/blueconicRtdProvider.json
index 739413e7b21..32802bff3ee 100644
--- a/metadata/modules/blueconicRtdProvider.json
+++ b/metadata/modules/blueconicRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/bmsBidAdapter.json b/metadata/modules/bmsBidAdapter.json
index 20bb166e8be..e3908ac2953 100644
--- a/metadata/modules/bmsBidAdapter.json
+++ b/metadata/modules/bmsBidAdapter.json
@@ -2,10 +2,30 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://bluems.com/iab.json": {
- "timestamp": "2026-05-18T20:04:06.180Z",
+ "timestamp": "2026-06-15T17:39:08.247Z",
"disclosures": []
}
},
+ "purposes": {
+ "1105": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/bmtmBidAdapter.json b/metadata/modules/bmtmBidAdapter.json
index eeed7ab1d80..91fb0f6b9f6 100644
--- a/metadata/modules/bmtmBidAdapter.json
+++ b/metadata/modules/bmtmBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/boldwinBidAdapter.json b/metadata/modules/boldwinBidAdapter.json
index bafc644c92e..8d2e26d25d5 100644
--- a/metadata/modules/boldwinBidAdapter.json
+++ b/metadata/modules/boldwinBidAdapter.json
@@ -2,10 +2,30 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://magav.videowalldirect.com/iab/videowalldirectiab.json": {
- "timestamp": "2026-05-18T20:04:06.259Z",
+ "timestamp": "2026-06-15T17:39:08.449Z",
"disclosures": []
}
},
+ "purposes": {
+ "1151": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/brainxBidAdapter.json b/metadata/modules/brainxBidAdapter.json
index 1b0a2960ab1..755b5693430 100644
--- a/metadata/modules/brainxBidAdapter.json
+++ b/metadata/modules/brainxBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/brandmetricsRtdProvider.json b/metadata/modules/brandmetricsRtdProvider.json
index a87f0cc021a..7d11d5d4619 100644
--- a/metadata/modules/brandmetricsRtdProvider.json
+++ b/metadata/modules/brandmetricsRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/braveBidAdapter.json b/metadata/modules/braveBidAdapter.json
index c4a749177ff..3755f9a4337 100644
--- a/metadata/modules/braveBidAdapter.json
+++ b/metadata/modules/braveBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/bridBidAdapter.json b/metadata/modules/bridBidAdapter.json
index 8e724452852..55ec1deeee7 100644
--- a/metadata/modules/bridBidAdapter.json
+++ b/metadata/modules/bridBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://target-video.com/vendors-device-storage-and-operational-disclosures.json": {
- "timestamp": "2026-05-18T20:04:06.490Z",
+ "timestamp": "2026-06-15T17:39:08.634Z",
"disclosures": [
{
"identifier": "brid_location",
@@ -112,6 +112,21 @@
]
}
},
+ "purposes": {
+ "786": {
+ "purposes": [
+ 1,
+ 2,
+ 4,
+ 7,
+ 8,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/bridgewellBidAdapter.json b/metadata/modules/bridgewellBidAdapter.json
index 018eba9dc33..d2b2d462c29 100644
--- a/metadata/modules/bridgewellBidAdapter.json
+++ b/metadata/modules/bridgewellBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/browsiAnalyticsAdapter.json b/metadata/modules/browsiAnalyticsAdapter.json
index 19dea91a5a1..3518beca325 100644
--- a/metadata/modules/browsiAnalyticsAdapter.json
+++ b/metadata/modules/browsiAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/browsiBidAdapter.json b/metadata/modules/browsiBidAdapter.json
index 0b1f316a8ca..e2e454cf781 100644
--- a/metadata/modules/browsiBidAdapter.json
+++ b/metadata/modules/browsiBidAdapter.json
@@ -2,10 +2,22 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.browsiprod.com/ads/tcf.json": {
- "timestamp": "2026-05-18T20:04:06.691Z",
+ "timestamp": "2026-06-15T17:39:08.986Z",
"disclosures": []
}
},
+ "purposes": {
+ "329": {
+ "purposes": [
+ 1,
+ 7,
+ 8
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/browsiRtdProvider.json b/metadata/modules/browsiRtdProvider.json
index bc1e801e40f..3597c4ddaff 100644
--- a/metadata/modules/browsiRtdProvider.json
+++ b/metadata/modules/browsiRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/bucksenseBidAdapter.json b/metadata/modules/bucksenseBidAdapter.json
index bceda5f4312..88b86c4cf56 100644
--- a/metadata/modules/bucksenseBidAdapter.json
+++ b/metadata/modules/bucksenseBidAdapter.json
@@ -2,10 +2,29 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://j.bksnimages.com/iab/devsto03.json": {
- "timestamp": "2026-05-18T20:04:06.800Z",
+ "timestamp": "2026-06-15T17:39:09.342Z",
"disclosures": []
}
},
+ "purposes": {
+ "235": {
+ "purposes": [
+ 1,
+ 2,
+ 7,
+ 9
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 9
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/buzzoolaBidAdapter.json b/metadata/modules/buzzoolaBidAdapter.json
index 97390fc2638..ac5dfe7b04f 100644
--- a/metadata/modules/buzzoolaBidAdapter.json
+++ b/metadata/modules/buzzoolaBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/byDataAnalyticsAdapter.json b/metadata/modules/byDataAnalyticsAdapter.json
index 84a4dcc7ffb..f3496ed1664 100644
--- a/metadata/modules/byDataAnalyticsAdapter.json
+++ b/metadata/modules/byDataAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/c1xBidAdapter.json b/metadata/modules/c1xBidAdapter.json
index 5418f8a5cc4..2b9f61218b5 100644
--- a/metadata/modules/c1xBidAdapter.json
+++ b/metadata/modules/c1xBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/cadent_aperture_mxBidAdapter.json b/metadata/modules/cadent_aperture_mxBidAdapter.json
index f61828675e8..e755cd4a11b 100644
--- a/metadata/modules/cadent_aperture_mxBidAdapter.json
+++ b/metadata/modules/cadent_aperture_mxBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/carodaBidAdapter.json b/metadata/modules/carodaBidAdapter.json
index bee1d5ee44a..96109e08d59 100644
--- a/metadata/modules/carodaBidAdapter.json
+++ b/metadata/modules/carodaBidAdapter.json
@@ -2,10 +2,22 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn2.caroda.io/tcfvds/2022-05-17/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:07.243Z",
+ "timestamp": "2026-06-15T17:39:09.520Z",
"disclosures": []
}
},
+ "purposes": {
+ "954": {
+ "purposes": [
+ 1,
+ 2,
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/ccxBidAdapter.json b/metadata/modules/ccxBidAdapter.json
index 277cbd85550..dfe05ec406c 100644
--- a/metadata/modules/ccxBidAdapter.json
+++ b/metadata/modules/ccxBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/ceeIdSystem.json b/metadata/modules/ceeIdSystem.json
index fa3826c295d..9f1a532f97c 100644
--- a/metadata/modules/ceeIdSystem.json
+++ b/metadata/modules/ceeIdSystem.json
@@ -2,10 +2,36 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://ssp.wp.pl/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:07.332Z",
+ "timestamp": "2026-06-15T17:39:09.793Z",
"disclosures": []
}
},
+ "purposes": {
+ "676": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9
+ ],
+ "legIntPurposes": [
+ 10
+ ],
+ "flexiblePurposes": [
+ 7,
+ 8,
+ 9
+ ],
+ "specialFeatures": [
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/chromeAiRtdProvider.json b/metadata/modules/chromeAiRtdProvider.json
index 85c7ec5f322..a5af744333c 100644
--- a/metadata/modules/chromeAiRtdProvider.json
+++ b/metadata/modules/chromeAiRtdProvider.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.jsdelivr.net/gh/prebid/Prebid.js/metadata/disclosures/modules/chromeAiRtdProvider.json": {
- "timestamp": "2026-05-18T20:04:18.714Z",
+ "timestamp": "2026-06-15T17:39:10.889Z",
"disclosures": [
{
"identifier": "chromeAi_detected_data",
@@ -17,6 +17,7 @@
]
}
},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/chtnwBidAdapter.json b/metadata/modules/chtnwBidAdapter.json
index f75f683a6f7..f652593d0dd 100644
--- a/metadata/modules/chtnwBidAdapter.json
+++ b/metadata/modules/chtnwBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/cleanioRtdProvider.json b/metadata/modules/cleanioRtdProvider.json
index c2496ffca06..668fc9fc157 100644
--- a/metadata/modules/cleanioRtdProvider.json
+++ b/metadata/modules/cleanioRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/clickforceBidAdapter.json b/metadata/modules/clickforceBidAdapter.json
index 4c8bb7fda82..d18802f7185 100644
--- a/metadata/modules/clickforceBidAdapter.json
+++ b/metadata/modules/clickforceBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/clickioBidAdapter.json b/metadata/modules/clickioBidAdapter.json
index 3f369eb9931..ae9079d8ae4 100644
--- a/metadata/modules/clickioBidAdapter.json
+++ b/metadata/modules/clickioBidAdapter.json
@@ -2,10 +2,23 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://o.clickiocdn.com/tcf_storage_info.json": {
- "timestamp": "2026-05-18T20:04:18.715Z",
+ "timestamp": "2026-06-15T17:39:10.890Z",
"disclosures": []
}
},
+ "purposes": {
+ "1500": {
+ "purposes": [
+ 1,
+ 2,
+ 7,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/clydoBidAdapter.json b/metadata/modules/clydoBidAdapter.json
index 9d4cca50254..325c796f5cb 100644
--- a/metadata/modules/clydoBidAdapter.json
+++ b/metadata/modules/clydoBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/codefuelBidAdapter.json b/metadata/modules/codefuelBidAdapter.json
index 87fafe67635..197ef4bc22b 100644
--- a/metadata/modules/codefuelBidAdapter.json
+++ b/metadata/modules/codefuelBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/cointrafficBidAdapter.json b/metadata/modules/cointrafficBidAdapter.json
index 8c09c265a05..e3d040ae5d6 100644
--- a/metadata/modules/cointrafficBidAdapter.json
+++ b/metadata/modules/cointrafficBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/coinzillaBidAdapter.json b/metadata/modules/coinzillaBidAdapter.json
index 81291c814c8..c5e9d9b9c9c 100644
--- a/metadata/modules/coinzillaBidAdapter.json
+++ b/metadata/modules/coinzillaBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/colombiaBidAdapter.json b/metadata/modules/colombiaBidAdapter.json
index c685f0b91ce..ab5a113e1f2 100644
--- a/metadata/modules/colombiaBidAdapter.json
+++ b/metadata/modules/colombiaBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/colossussspBidAdapter.json b/metadata/modules/colossussspBidAdapter.json
index dc2142b0a80..39b65381876 100644
--- a/metadata/modules/colossussspBidAdapter.json
+++ b/metadata/modules/colossussspBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/compassBidAdapter.json b/metadata/modules/compassBidAdapter.json
index c6cdc6f5f98..3e86a493be1 100644
--- a/metadata/modules/compassBidAdapter.json
+++ b/metadata/modules/compassBidAdapter.json
@@ -2,10 +2,24 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.marphezis.com/tcf-vendor-disclosures.json": {
- "timestamp": "2026-05-18T20:04:19.308Z",
+ "timestamp": "2026-06-15T17:39:11.545Z",
"disclosures": []
}
},
+ "purposes": {
+ "883": {
+ "purposes": [],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/conceptxBidAdapter.json b/metadata/modules/conceptxBidAdapter.json
index 26be1cc67e4..8438c032b4b 100644
--- a/metadata/modules/conceptxBidAdapter.json
+++ b/metadata/modules/conceptxBidAdapter.json
@@ -2,10 +2,32 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cncptx.com/device_storage_disclosure.json": {
- "timestamp": "2026-05-18T20:04:19.485Z",
+ "timestamp": "2026-06-15T17:39:11.677Z",
"disclosures": []
}
},
+ "purposes": {
+ "1340": {
+ "purposes": [
+ 1
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "specialFeatures": [
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/concertAnalyticsAdapter.json b/metadata/modules/concertAnalyticsAdapter.json
index c2f0b44fe47..ca4d835845c 100644
--- a/metadata/modules/concertAnalyticsAdapter.json
+++ b/metadata/modules/concertAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/concertBidAdapter.json b/metadata/modules/concertBidAdapter.json
index 6f2018bd8f0..e16694be02d 100644
--- a/metadata/modules/concertBidAdapter.json
+++ b/metadata/modules/concertBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/condorxBidAdapter.json b/metadata/modules/condorxBidAdapter.json
index ae1c06f092b..26ffd106558 100644
--- a/metadata/modules/condorxBidAdapter.json
+++ b/metadata/modules/condorxBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/confiantRtdProvider.json b/metadata/modules/confiantRtdProvider.json
index b2ec2d8000f..f69730e4c0a 100644
--- a/metadata/modules/confiantRtdProvider.json
+++ b/metadata/modules/confiantRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/connatixBidAdapter.json b/metadata/modules/connatixBidAdapter.json
index b9a52cee8a6..ff4d0893aac 100644
--- a/metadata/modules/connatixBidAdapter.json
+++ b/metadata/modules/connatixBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://connatix.com/iab-tcf-disclosure.json": {
- "timestamp": "2026-05-18T20:04:19.874Z",
+ "timestamp": "2026-06-15T17:39:11.789Z",
"disclosures": [
{
"identifier": "cnx_userId",
@@ -21,6 +21,23 @@
]
}
},
+ "purposes": {
+ "143": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/connectIdSystem.json b/metadata/modules/connectIdSystem.json
index abcb478ae44..af1193797de 100644
--- a/metadata/modules/connectIdSystem.json
+++ b/metadata/modules/connectIdSystem.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://meta.legal.yahoo.com/iab-tcf/v2/device-storage-disclosure.json": {
- "timestamp": "2026-05-18T20:04:20.052Z",
+ "timestamp": "2026-06-15T17:39:12.027Z",
"disclosures": [
{
"identifier": "vmcid",
@@ -57,6 +57,28 @@
]
}
},
+ "purposes": {
+ "25": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/connectadBidAdapter.json b/metadata/modules/connectadBidAdapter.json
index d5763018b6f..2cd9e0860cc 100644
--- a/metadata/modules/connectadBidAdapter.json
+++ b/metadata/modules/connectadBidAdapter.json
@@ -2,10 +2,31 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.connectad.io/tcf_storage_info.json": {
- "timestamp": "2026-05-18T20:04:20.166Z",
+ "timestamp": "2026-06-15T17:39:12.248Z",
"disclosures": []
}
},
+ "purposes": {
+ "138": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/consumableBidAdapter.json b/metadata/modules/consumableBidAdapter.json
index 11ce0708f2b..1b7f83420d0 100644
--- a/metadata/modules/consumableBidAdapter.json
+++ b/metadata/modules/consumableBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/contentexchangeBidAdapter.json b/metadata/modules/contentexchangeBidAdapter.json
index aacda4e528c..0e5b2464d61 100644
--- a/metadata/modules/contentexchangeBidAdapter.json
+++ b/metadata/modules/contentexchangeBidAdapter.json
@@ -2,10 +2,30 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://hb.contentexchange.me/template/device_storage.json": {
- "timestamp": "2026-05-18T20:04:20.325Z",
+ "timestamp": "2026-06-15T17:39:12.972Z",
"disclosures": []
}
},
+ "purposes": {
+ "864": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/contxtfulBidAdapter.json b/metadata/modules/contxtfulBidAdapter.json
index 0bdb9bc2060..d9f3ab078a9 100644
--- a/metadata/modules/contxtfulBidAdapter.json
+++ b/metadata/modules/contxtfulBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/contxtfulRtdProvider.json b/metadata/modules/contxtfulRtdProvider.json
index d953fdb245e..ae8eca4c32a 100644
--- a/metadata/modules/contxtfulRtdProvider.json
+++ b/metadata/modules/contxtfulRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/conversantBidAdapter.json b/metadata/modules/conversantBidAdapter.json
index 5ef2e11a249..cd7ee6232f1 100644
--- a/metadata/modules/conversantBidAdapter.json
+++ b/metadata/modules/conversantBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://s-usweb.dotomi.com/assets/js/taggy-js/2.18.13/device_storage_disclosure.json": {
- "timestamp": "2026-05-18T20:04:20.888Z",
+ "timestamp": "2026-06-15T17:39:13.892Z",
"disclosures": [
{
"identifier": "dtm_status",
@@ -579,6 +579,26 @@
]
}
},
+ "purposes": {
+ "24": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/copper6sspBidAdapter.json b/metadata/modules/copper6sspBidAdapter.json
index ed17747c623..c9493b91488 100644
--- a/metadata/modules/copper6sspBidAdapter.json
+++ b/metadata/modules/copper6sspBidAdapter.json
@@ -2,10 +2,30 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://ssp.copper6.com/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:21.007Z",
+ "timestamp": "2026-06-15T17:39:13.957Z",
"disclosures": []
}
},
+ "purposes": {
+ "1356": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/cortexBidAdapter.json b/metadata/modules/cortexBidAdapter.json
index 1277eb43e1a..6603743b505 100644
--- a/metadata/modules/cortexBidAdapter.json
+++ b/metadata/modules/cortexBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/cpmstarBidAdapter.json b/metadata/modules/cpmstarBidAdapter.json
index 65218eece49..cb8d7a9c7a5 100644
--- a/metadata/modules/cpmstarBidAdapter.json
+++ b/metadata/modules/cpmstarBidAdapter.json
@@ -1,18 +1,42 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
- "https://www.aditude.com/storageaccess.json": {
- "timestamp": "2026-05-18T20:04:21.219Z",
+ "https://cdn-prod.aditude.com/storageaccess.json": {
+ "timestamp": "2026-06-15T17:39:14.211Z",
"disclosures": []
}
},
+ "purposes": {
+ "1317": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
"componentName": "cpmstar",
"aliasOf": null,
"gvlid": 1317,
- "disclosureURL": "https://www.aditude.com/storageaccess.json"
+ "disclosureURL": "https://cdn-prod.aditude.com/storageaccess.json"
}
]
}
\ No newline at end of file
diff --git a/metadata/modules/craftBidAdapter.json b/metadata/modules/craftBidAdapter.json
index 405c278b5db..717f6e77215 100644
--- a/metadata/modules/craftBidAdapter.json
+++ b/metadata/modules/craftBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/criteoBidAdapter.json b/metadata/modules/criteoBidAdapter.json
index dc4e15ef48b..303538d94a6 100644
--- a/metadata/modules/criteoBidAdapter.json
+++ b/metadata/modules/criteoBidAdapter.json
@@ -2,20 +2,8 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://privacy.criteo.com/iab-europe/tcfv2/disclosure.json": {
- "timestamp": "2026-05-18T20:04:21.721Z",
+ "timestamp": "2026-06-15T17:39:14.471Z",
"disclosures": [
- {
- "identifier": "criteo_fast_bid",
- "type": "web",
- "maxAgeSeconds": 604800,
- "purposes": []
- },
- {
- "identifier": "criteo_fast_bid_expires",
- "type": "web",
- "maxAgeSeconds": 604800,
- "purposes": []
- },
{
"identifier": "cto_bundle",
"type": "cookie",
@@ -29,6 +17,10 @@
7,
9,
10
+ ],
+ "specialPurposes": [
+ 1,
+ 3
]
},
{
@@ -36,9 +28,9 @@
"type": "cookie",
"maxAgeSeconds": 33696000,
"cookieRefresh": false,
- "purposes": [
- 1
- ]
+ "purposes": [],
+ "description": "Stores user opt-out from Criteo personalised advertising (first-party context)",
+ "optOut": true
},
{
"identifier": "cto_bundle",
@@ -52,17 +44,41 @@
7,
9,
10
+ ],
+ "specialPurposes": [
+ 1,
+ 3
]
},
{
"identifier": "cto_optout",
"type": "web",
"maxAgeSeconds": null,
- "purposes": []
+ "purposes": [],
+ "description": "Stores user opt-out from Criteo personalised advertising (web storage)",
+ "optOut": true
}
]
}
},
+ "purposes": {
+ "91": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/criteoIdSystem.json b/metadata/modules/criteoIdSystem.json
index 0b467e32ce3..52e71f6c1e7 100644
--- a/metadata/modules/criteoIdSystem.json
+++ b/metadata/modules/criteoIdSystem.json
@@ -2,20 +2,8 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://privacy.criteo.com/iab-europe/tcfv2/disclosure.json": {
- "timestamp": "2026-05-18T20:04:21.902Z",
+ "timestamp": "2026-06-15T17:39:14.669Z",
"disclosures": [
- {
- "identifier": "criteo_fast_bid",
- "type": "web",
- "maxAgeSeconds": 604800,
- "purposes": []
- },
- {
- "identifier": "criteo_fast_bid_expires",
- "type": "web",
- "maxAgeSeconds": 604800,
- "purposes": []
- },
{
"identifier": "cto_bundle",
"type": "cookie",
@@ -29,6 +17,10 @@
7,
9,
10
+ ],
+ "specialPurposes": [
+ 1,
+ 3
]
},
{
@@ -36,9 +28,9 @@
"type": "cookie",
"maxAgeSeconds": 33696000,
"cookieRefresh": false,
- "purposes": [
- 1
- ]
+ "purposes": [],
+ "description": "Stores user opt-out from Criteo personalised advertising (first-party context)",
+ "optOut": true
},
{
"identifier": "cto_bundle",
@@ -52,17 +44,41 @@
7,
9,
10
+ ],
+ "specialPurposes": [
+ 1,
+ 3
]
},
{
"identifier": "cto_optout",
"type": "web",
"maxAgeSeconds": null,
- "purposes": []
+ "purposes": [],
+ "description": "Stores user opt-out from Criteo personalised advertising (web storage)",
+ "optOut": true
}
]
}
},
+ "purposes": {
+ "91": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/cwireBidAdapter.json b/metadata/modules/cwireBidAdapter.json
index a7ba9667a8f..47e9da4b821 100644
--- a/metadata/modules/cwireBidAdapter.json
+++ b/metadata/modules/cwireBidAdapter.json
@@ -2,10 +2,26 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.cwi.re/artifacts/iab/iab.json": {
- "timestamp": "2026-05-18T20:04:21.902Z",
+ "timestamp": "2026-06-15T17:39:14.670Z",
"disclosures": []
}
},
+ "purposes": {
+ "1081": {
+ "purposes": [
+ 1,
+ 2,
+ 7
+ ],
+ "legIntPurposes": [
+ 10
+ ],
+ "flexiblePurposes": [
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/czechAdIdSystem.json b/metadata/modules/czechAdIdSystem.json
index cb3a13e6987..019aecbb208 100644
--- a/metadata/modules/czechAdIdSystem.json
+++ b/metadata/modules/czechAdIdSystem.json
@@ -2,10 +2,25 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cpex.cz/storagedisclosure.json": {
- "timestamp": "2026-05-18T20:04:22.721Z",
+ "timestamp": "2026-06-15T17:39:15.479Z",
"disclosures": []
}
},
+ "purposes": {
+ "570": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/dacIdSystem.json b/metadata/modules/dacIdSystem.json
index 6886b206788..cfc3676ee99 100644
--- a/metadata/modules/dacIdSystem.json
+++ b/metadata/modules/dacIdSystem.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/dailyhuntBidAdapter.json b/metadata/modules/dailyhuntBidAdapter.json
index 40a78dd65b5..1ca4d38290f 100644
--- a/metadata/modules/dailyhuntBidAdapter.json
+++ b/metadata/modules/dailyhuntBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/dailymotionBidAdapter.json b/metadata/modules/dailymotionBidAdapter.json
index 19ad6ba1e83..befb2a4fe43 100644
--- a/metadata/modules/dailymotionBidAdapter.json
+++ b/metadata/modules/dailymotionBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://statics.dmcdn.net/a/vds.json": {
- "timestamp": "2026-05-18T20:04:23.352Z",
+ "timestamp": "2026-06-15T17:39:16.365Z",
"disclosures": [
{
"identifier": "uid_dm",
@@ -36,6 +36,33 @@
]
}
},
+ "purposes": {
+ "573": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 5,
+ 6
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/dasBidAdapter.json b/metadata/modules/dasBidAdapter.json
index 1ca1c72523f..b3f8f906a77 100644
--- a/metadata/modules/dasBidAdapter.json
+++ b/metadata/modules/dasBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/datablocksAnalyticsAdapter.json b/metadata/modules/datablocksAnalyticsAdapter.json
index f0e6840e782..b2715f723f5 100644
--- a/metadata/modules/datablocksAnalyticsAdapter.json
+++ b/metadata/modules/datablocksAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/datablocksBidAdapter.json b/metadata/modules/datablocksBidAdapter.json
index 4291e83a3c7..c648840a1da 100644
--- a/metadata/modules/datablocksBidAdapter.json
+++ b/metadata/modules/datablocksBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/datamageRtdProvider.json b/metadata/modules/datamageRtdProvider.json
index 73a495c9bce..6686d2c2350 100644
--- a/metadata/modules/datamageRtdProvider.json
+++ b/metadata/modules/datamageRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/datawrkzAnalyticsAdapter.json b/metadata/modules/datawrkzAnalyticsAdapter.json
index 54bae4e4f2c..6d6432288e3 100644
--- a/metadata/modules/datawrkzAnalyticsAdapter.json
+++ b/metadata/modules/datawrkzAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/datawrkzBidAdapter.json b/metadata/modules/datawrkzBidAdapter.json
index d30a8fa610d..df44f597900 100644
--- a/metadata/modules/datawrkzBidAdapter.json
+++ b/metadata/modules/datawrkzBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/debugging.json b/metadata/modules/debugging.json
index 3e0eaeb54ac..1b899e7a142 100644
--- a/metadata/modules/debugging.json
+++ b/metadata/modules/debugging.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.jsdelivr.net/gh/prebid/Prebid.js/metadata/disclosures/prebid/debugging.json": {
- "timestamp": "2026-05-18T20:03:46.494Z",
+ "timestamp": "2026-06-15T17:38:44.238Z",
"disclosures": [
{
"identifier": "__*_debugging__",
@@ -14,6 +14,7 @@
]
}
},
+ "purposes": {},
"components": [
{
"componentType": "prebid",
diff --git a/metadata/modules/deepintentBidAdapter.json b/metadata/modules/deepintentBidAdapter.json
index f8cf0359520..caad43cbc03 100644
--- a/metadata/modules/deepintentBidAdapter.json
+++ b/metadata/modules/deepintentBidAdapter.json
@@ -2,10 +2,34 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://option.deepintent.com/iabeurope_vendor_disclosures.json": {
- "timestamp": "2026-05-18T20:04:23.885Z",
+ "timestamp": "2026-06-15T17:39:16.820Z",
"disclosures": []
}
},
+ "purposes": {
+ "541": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/deepintentDpesIdSystem.json b/metadata/modules/deepintentDpesIdSystem.json
index e0f780b07ce..2986e9a43a5 100644
--- a/metadata/modules/deepintentDpesIdSystem.json
+++ b/metadata/modules/deepintentDpesIdSystem.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/defineMediaBidAdapter.json b/metadata/modules/defineMediaBidAdapter.json
index 933eb8056b6..c46352229e0 100644
--- a/metadata/modules/defineMediaBidAdapter.json
+++ b/metadata/modules/defineMediaBidAdapter.json
@@ -2,28 +2,66 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://definemedia.de/tcf/deviceStorageDisclosureURL.json": {
- "timestamp": "2026-05-18T20:04:24.011Z",
+ "timestamp": "2026-06-15T17:39:17.017Z",
"disclosures": [
{
- "identifier": "conative$dataGathering$Adex",
+ "identifier": "__storage__test",
"type": "web",
"maxAgeSeconds": null,
"purposes": [
- 1,
- 2
- ]
+ 1
+ ],
+ "description": "Session storage availability probe before first-party cache access."
+ },
+ {
+ "identifier": "__dm_storage_test",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "purposes": [
+ 1
+ ],
+ "description": "Session storage availability probe performed when storage use is checked against the TCF state."
},
{
- "identifier": "conative$proddataGathering$ContextId$*",
+ "identifier": "dm-as4-default$conative_config",
"type": "web",
"maxAgeSeconds": null,
"purposes": [
1
- ]
+ ],
+ "description": "Session storage cache for the domain configuration response."
+ },
+ {
+ "identifier": "dm-as4-default$context$*",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "purposes": [
+ 1
+ ],
+ "description": "Session storage cache for Ceres context responses."
}
]
}
},
+ "purposes": {
+ "440": {
+ "purposes": [
+ 1,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/deltaprojectsBidAdapter.json b/metadata/modules/deltaprojectsBidAdapter.json
index 60ec9c67d55..28a43588ed4 100644
--- a/metadata/modules/deltaprojectsBidAdapter.json
+++ b/metadata/modules/deltaprojectsBidAdapter.json
@@ -2,10 +2,32 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.de17a.com/policy/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:24.477Z",
+ "timestamp": "2026-06-15T17:39:17.753Z",
"disclosures": []
}
},
+ "purposes": {
+ "209": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/dexertoBidAdapter.json b/metadata/modules/dexertoBidAdapter.json
index 444d9adedfa..a18a1b9d3f3 100644
--- a/metadata/modules/dexertoBidAdapter.json
+++ b/metadata/modules/dexertoBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/dgkeywordRtdProvider.json b/metadata/modules/dgkeywordRtdProvider.json
index 2cafbbe31ae..679a723446e 100644
--- a/metadata/modules/dgkeywordRtdProvider.json
+++ b/metadata/modules/dgkeywordRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/dianomiBidAdapter.json b/metadata/modules/dianomiBidAdapter.json
index 20fe09740f7..685d003eb7c 100644
--- a/metadata/modules/dianomiBidAdapter.json
+++ b/metadata/modules/dianomiBidAdapter.json
@@ -2,10 +2,34 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://www.dianomi.com/device_storage.json": {
- "timestamp": "2026-05-18T20:04:25.045Z",
+ "timestamp": "2026-06-15T17:39:18.603Z",
"disclosures": []
}
},
+ "purposes": {
+ "885": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 5,
+ 6,
+ 8,
+ 9
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/digitalMatterBidAdapter.json b/metadata/modules/digitalMatterBidAdapter.json
index 612f34430a4..d6c77642205 100644
--- a/metadata/modules/digitalMatterBidAdapter.json
+++ b/metadata/modules/digitalMatterBidAdapter.json
@@ -2,10 +2,28 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://digitalmatter.ai/disclosures.json": {
- "timestamp": "2026-05-18T20:04:25.045Z",
+ "timestamp": "2026-06-15T17:39:18.604Z",
"disclosures": []
}
},
+ "purposes": {
+ "1345": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/digitalcaramelBidAdapter.json b/metadata/modules/digitalcaramelBidAdapter.json
index 87dce8cb47a..edb5213be98 100644
--- a/metadata/modules/digitalcaramelBidAdapter.json
+++ b/metadata/modules/digitalcaramelBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/discoveryBidAdapter.json b/metadata/modules/discoveryBidAdapter.json
index f3b1b36f6da..0ea8dd4c149 100644
--- a/metadata/modules/discoveryBidAdapter.json
+++ b/metadata/modules/discoveryBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/displayioBidAdapter.json b/metadata/modules/displayioBidAdapter.json
index d8bc577ff1e..aa5f2789547 100644
--- a/metadata/modules/displayioBidAdapter.json
+++ b/metadata/modules/displayioBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/distroscaleBidAdapter.json b/metadata/modules/distroscaleBidAdapter.json
index 6d52ff89370..743f306c576 100644
--- a/metadata/modules/distroscaleBidAdapter.json
+++ b/metadata/modules/distroscaleBidAdapter.json
@@ -1,18 +1,14 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
- "disclosures": {
- "https://a.jsrdn.com/tcf/tcf-vendor-disclosure.json": {
- "timestamp": "2026-05-18T20:04:25.447Z",
- "disclosures": []
- }
- },
+ "disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
"componentName": "distroscale",
"aliasOf": null,
- "gvlid": 754,
- "disclosureURL": "https://a.jsrdn.com/tcf/tcf-vendor-disclosure.json"
+ "gvlid": null,
+ "disclosureURL": null
},
{
"componentType": "bidder",
diff --git a/metadata/modules/djaxBidAdapter.json b/metadata/modules/djaxBidAdapter.json
index 63b0bb766b5..9192ab2fba9 100644
--- a/metadata/modules/djaxBidAdapter.json
+++ b/metadata/modules/djaxBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/docereeAdManagerBidAdapter.json b/metadata/modules/docereeAdManagerBidAdapter.json
index 81982a06e91..dfa8e29a4f1 100644
--- a/metadata/modules/docereeAdManagerBidAdapter.json
+++ b/metadata/modules/docereeAdManagerBidAdapter.json
@@ -2,10 +2,27 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://doceree.com/.well-known/iab/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:25.789Z",
+ "timestamp": "2026-06-09T13:34:40.372Z",
"disclosures": []
}
},
+ "purposes": {
+ "1063": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [
+ 2,
+ 7
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/docereeBidAdapter.json b/metadata/modules/docereeBidAdapter.json
index 625e1748e08..c61d238b466 100644
--- a/metadata/modules/docereeBidAdapter.json
+++ b/metadata/modules/docereeBidAdapter.json
@@ -2,10 +2,27 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://doceree.com/.well-known/iab/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:26.838Z",
+ "timestamp": "2026-06-09T13:34:45.362Z",
"disclosures": []
}
},
+ "purposes": {
+ "1063": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [
+ 2,
+ 7
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/dochaseBidAdapter.json b/metadata/modules/dochaseBidAdapter.json
index 7a71ed0565b..e5a8c715e5e 100644
--- a/metadata/modules/dochaseBidAdapter.json
+++ b/metadata/modules/dochaseBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/dpaiBidAdapter.json b/metadata/modules/dpaiBidAdapter.json
index 901b09a3355..7ce31aa9f2a 100644
--- a/metadata/modules/dpaiBidAdapter.json
+++ b/metadata/modules/dpaiBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/driftpixelBidAdapter.json b/metadata/modules/driftpixelBidAdapter.json
index fb06c46a8d1..978dcf7cb76 100644
--- a/metadata/modules/driftpixelBidAdapter.json
+++ b/metadata/modules/driftpixelBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/dsp_genieeBidAdapter.json b/metadata/modules/dsp_genieeBidAdapter.json
index 881f4a94f4d..9f94f0e7736 100644
--- a/metadata/modules/dsp_genieeBidAdapter.json
+++ b/metadata/modules/dsp_genieeBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/dspxBidAdapter.json b/metadata/modules/dspxBidAdapter.json
index 3a3e90c743c..36538210d76 100644
--- a/metadata/modules/dspxBidAdapter.json
+++ b/metadata/modules/dspxBidAdapter.json
@@ -2,10 +2,34 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://tcf.adtech.app/gen/deviceStorageDisclosure/os.json": {
- "timestamp": "2026-05-18T20:04:26.839Z",
+ "timestamp": "2026-06-15T17:39:19.558Z",
"disclosures": []
}
},
+ "purposes": {
+ "602": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8,
+ 10
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/dvgroupBidAdapter.json b/metadata/modules/dvgroupBidAdapter.json
index fff5d0e662a..050f4626790 100644
--- a/metadata/modules/dvgroupBidAdapter.json
+++ b/metadata/modules/dvgroupBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/dxkultureBidAdapter.json b/metadata/modules/dxkultureBidAdapter.json
index eb7dd9d98c8..de0534a4c46 100644
--- a/metadata/modules/dxkultureBidAdapter.json
+++ b/metadata/modules/dxkultureBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/dxtechBidAdapter.json b/metadata/modules/dxtechBidAdapter.json
index 08ad174229b..0f0ee7a1ce6 100644
--- a/metadata/modules/dxtechBidAdapter.json
+++ b/metadata/modules/dxtechBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/dynamicAdBoostRtdProvider.json b/metadata/modules/dynamicAdBoostRtdProvider.json
index 7ec18bd785c..336c2092e0c 100644
--- a/metadata/modules/dynamicAdBoostRtdProvider.json
+++ b/metadata/modules/dynamicAdBoostRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/e_volutionBidAdapter.json b/metadata/modules/e_volutionBidAdapter.json
index facd92f6468..6b4b298a9c5 100644
--- a/metadata/modules/e_volutionBidAdapter.json
+++ b/metadata/modules/e_volutionBidAdapter.json
@@ -2,10 +2,31 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://e-volution.ai/file.json": {
- "timestamp": "2026-05-18T20:04:27.992Z",
+ "timestamp": "2026-06-15T17:39:20.753Z",
"disclosures": []
}
},
+ "purposes": {
+ "957": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/eclickBidAdapter.json b/metadata/modules/eclickBidAdapter.json
index c19ca4af158..b49d3fa811a 100644
--- a/metadata/modules/eclickBidAdapter.json
+++ b/metadata/modules/eclickBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/edge226BidAdapter.json b/metadata/modules/edge226BidAdapter.json
index 78fc5848843..03406cd938a 100644
--- a/metadata/modules/edge226BidAdapter.json
+++ b/metadata/modules/edge226BidAdapter.json
@@ -2,10 +2,25 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.serveteck.com/cdn_storage/tcf/tcf.json?a=1.io": {
- "timestamp": "2026-05-18T20:04:28.353Z",
+ "timestamp": "2026-06-15T17:39:21.234Z",
"disclosures": null
}
},
+ "purposes": {
+ "1202": {
+ "purposes": [
+ 2,
+ 7,
+ 10,
+ 11
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/ehealthcaresolutionsBidAdapter.json b/metadata/modules/ehealthcaresolutionsBidAdapter.json
index 8027a295a9f..d703721e264 100644
--- a/metadata/modules/ehealthcaresolutionsBidAdapter.json
+++ b/metadata/modules/ehealthcaresolutionsBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/eightPodAnalyticsAdapter.json b/metadata/modules/eightPodAnalyticsAdapter.json
index 52e87cea2e8..4d4e8941f65 100644
--- a/metadata/modules/eightPodAnalyticsAdapter.json
+++ b/metadata/modules/eightPodAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/eightPodBidAdapter.json b/metadata/modules/eightPodBidAdapter.json
index 5759d698d0d..a5f19165b9f 100644
--- a/metadata/modules/eightPodBidAdapter.json
+++ b/metadata/modules/eightPodBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/empowerBidAdapter.json b/metadata/modules/empowerBidAdapter.json
index 129254283c6..952367af6f1 100644
--- a/metadata/modules/empowerBidAdapter.json
+++ b/metadata/modules/empowerBidAdapter.json
@@ -2,10 +2,26 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.empower.net/vendor/vendor.json": {
- "timestamp": "2026-05-18T20:04:28.700Z",
+ "timestamp": "2026-06-15T17:39:21.640Z",
"disclosures": []
}
},
+ "purposes": {
+ "1248": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/emtvBidAdapter.json b/metadata/modules/emtvBidAdapter.json
index 5ac33bad8de..85d7ab4bde9 100644
--- a/metadata/modules/emtvBidAdapter.json
+++ b/metadata/modules/emtvBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/encypherRtdProvider.json b/metadata/modules/encypherRtdProvider.json
index 645d68136f5..86cf8dece8e 100644
--- a/metadata/modules/encypherRtdProvider.json
+++ b/metadata/modules/encypherRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/engageyaBidAdapter.json b/metadata/modules/engageyaBidAdapter.json
index 31b39e5fb34..9211115a8ef 100644
--- a/metadata/modules/engageyaBidAdapter.json
+++ b/metadata/modules/engageyaBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/engerioBidAdapter.json b/metadata/modules/engerioBidAdapter.json
new file mode 100644
index 00000000000..d518840b8e5
--- /dev/null
+++ b/metadata/modules/engerioBidAdapter.json
@@ -0,0 +1,14 @@
+{
+ "NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
+ "disclosures": {},
+ "purposes": {},
+ "components": [
+ {
+ "componentType": "bidder",
+ "componentName": "engerio",
+ "aliasOf": null,
+ "gvlid": null,
+ "disclosureURL": null
+ }
+ ]
+}
\ No newline at end of file
diff --git a/metadata/modules/eplanningBidAdapter.json b/metadata/modules/eplanningBidAdapter.json
index 542f121e550..2eb7d866d58 100644
--- a/metadata/modules/eplanningBidAdapter.json
+++ b/metadata/modules/eplanningBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/epom_dspBidAdapter.json b/metadata/modules/epom_dspBidAdapter.json
index 6f2acc45ccd..22e873e0c55 100644
--- a/metadata/modules/epom_dspBidAdapter.json
+++ b/metadata/modules/epom_dspBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/equativBidAdapter.json b/metadata/modules/equativBidAdapter.json
index 77a3eaf4bb4..f0dd84c4849 100644
--- a/metadata/modules/equativBidAdapter.json
+++ b/metadata/modules/equativBidAdapter.json
@@ -2,10 +2,27 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://apps.smartadserver.com/device-storage-disclosures/equativDeviceStorageDisclosures.json": {
- "timestamp": "2026-05-18T20:04:29.178Z",
+ "timestamp": "2026-06-15T17:39:21.769Z",
"disclosures": []
}
},
+ "purposes": {
+ "45": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/escalaxBidAdapter.json b/metadata/modules/escalaxBidAdapter.json
index e23275023bb..f8dd754c958 100644
--- a/metadata/modules/escalaxBidAdapter.json
+++ b/metadata/modules/escalaxBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/eskimiBidAdapter.json b/metadata/modules/eskimiBidAdapter.json
index fa0e6cad186..795850cd16d 100644
--- a/metadata/modules/eskimiBidAdapter.json
+++ b/metadata/modules/eskimiBidAdapter.json
@@ -2,10 +2,30 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://dsp-media.eskimi.com/deviceStorage.json": {
- "timestamp": "2026-05-14T13:11:44.148Z",
+ "timestamp": "2026-06-15T17:39:23.066Z",
"disclosures": []
}
},
+ "purposes": {
+ "814": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/etargetBidAdapter.json b/metadata/modules/etargetBidAdapter.json
index 399a0fbc091..35ddb153520 100644
--- a/metadata/modules/etargetBidAdapter.json
+++ b/metadata/modules/etargetBidAdapter.json
@@ -2,10 +2,24 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://www.etarget.sk/cookies3.json": {
- "timestamp": "2026-05-18T20:04:33.352Z",
+ "timestamp": "2026-06-15T17:39:23.260Z",
"disclosures": []
}
},
+ "purposes": {
+ "29": {
+ "purposes": [
+ 1
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/euidIdSystem.json b/metadata/modules/euidIdSystem.json
index 488b81edbab..3216654a3bc 100644
--- a/metadata/modules/euidIdSystem.json
+++ b/metadata/modules/euidIdSystem.json
@@ -2,10 +2,32 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://ttd-misc-public-assets.s3.us-west-2.amazonaws.com/deviceStorageDisclosureURL.json": {
- "timestamp": "2026-05-18T20:04:34.202Z",
+ "timestamp": "2026-06-15T17:39:24.379Z",
"disclosures": []
}
},
+ "purposes": {
+ "21": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/exadsBidAdapter.json b/metadata/modules/exadsBidAdapter.json
index 78000e70c5a..83ed2d66351 100644
--- a/metadata/modules/exadsBidAdapter.json
+++ b/metadata/modules/exadsBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://a.native7.com/tcf/deviceStorage.php": {
- "timestamp": "2026-05-18T20:04:34.485Z",
+ "timestamp": "2026-06-15T17:39:24.532Z",
"disclosures": [
{
"identifier": "pn-zone-*",
@@ -10,20 +10,16 @@
"maxAgeSeconds": 3888000,
"cookieRefresh": false,
"purposes": [
- 1,
- 2,
- 4
+ 1
]
},
{
"identifier": "zone-cap-*",
"type": "cookie",
- "maxAgeSeconds": 21600,
+ "maxAgeSeconds": 86400,
"cookieRefresh": true,
"purposes": [
- 1,
- 2,
- 4
+ 1
]
},
{
@@ -32,14 +28,28 @@
"maxAgeSeconds": 86400,
"cookieRefresh": false,
"purposes": [
- 1,
- 2,
- 4
+ 1
]
}
]
}
},
+ "purposes": {
+ "1084": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/excoBidAdapter.json b/metadata/modules/excoBidAdapter.json
index 4a69b1275f8..7014e29ea33 100644
--- a/metadata/modules/excoBidAdapter.json
+++ b/metadata/modules/excoBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/experianRtdProvider.json b/metadata/modules/experianRtdProvider.json
index f7eb7b5356c..5c63957d403 100644
--- a/metadata/modules/experianRtdProvider.json
+++ b/metadata/modules/experianRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/fabrickIdSystem.json b/metadata/modules/fabrickIdSystem.json
index af900e1027c..efe90a6e022 100644
--- a/metadata/modules/fabrickIdSystem.json
+++ b/metadata/modules/fabrickIdSystem.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/fanBidAdapter.json b/metadata/modules/fanBidAdapter.json
index 017e7a019d4..c63fd48f2db 100644
--- a/metadata/modules/fanBidAdapter.json
+++ b/metadata/modules/fanBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/feedadBidAdapter.json b/metadata/modules/feedadBidAdapter.json
index 6c6e2f7d6f1..07bc60486cd 100644
--- a/metadata/modules/feedadBidAdapter.json
+++ b/metadata/modules/feedadBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://api.feedad.com/tcf-device-disclosures.json": {
- "timestamp": "2026-05-18T20:04:34.677Z",
+ "timestamp": "2026-06-15T17:39:24.810Z",
"disclosures": [
{
"identifier": "__fad_data",
@@ -36,6 +36,33 @@
]
}
},
+ "purposes": {
+ "781": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 5,
+ 6,
+ 8,
+ 9
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": [
+ 1,
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/ferioBidAdapter.json b/metadata/modules/ferioBidAdapter.json
new file mode 100644
index 00000000000..6701bd252a2
--- /dev/null
+++ b/metadata/modules/ferioBidAdapter.json
@@ -0,0 +1,21 @@
+{
+ "NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
+ "disclosures": {},
+ "purposes": {},
+ "components": [
+ {
+ "componentType": "bidder",
+ "componentName": "ferio",
+ "aliasOf": null,
+ "gvlid": null,
+ "disclosureURL": null
+ },
+ {
+ "componentType": "bidder",
+ "componentName": "myfeature",
+ "aliasOf": "ferio",
+ "gvlid": null,
+ "disclosureURL": null
+ }
+ ]
+}
\ No newline at end of file
diff --git a/metadata/modules/finativeBidAdapter.json b/metadata/modules/finativeBidAdapter.json
index 99ec9cb9ae8..d01b9b47dd4 100644
--- a/metadata/modules/finativeBidAdapter.json
+++ b/metadata/modules/finativeBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/fintezaAnalyticsAdapter.json b/metadata/modules/fintezaAnalyticsAdapter.json
index 2e3bd8b78fe..b0c6a49f912 100644
--- a/metadata/modules/fintezaAnalyticsAdapter.json
+++ b/metadata/modules/fintezaAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/flippBidAdapter.json b/metadata/modules/flippBidAdapter.json
index 7ccd9710e52..58e37a48b34 100644
--- a/metadata/modules/flippBidAdapter.json
+++ b/metadata/modules/flippBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/floxisBidAdapter.json b/metadata/modules/floxisBidAdapter.json
index c58d76bc57a..13713d8c5f1 100644
--- a/metadata/modules/floxisBidAdapter.json
+++ b/metadata/modules/floxisBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/fluctBidAdapter.json b/metadata/modules/fluctBidAdapter.json
index 2abf3439bdb..d2ba52cb455 100644
--- a/metadata/modules/fluctBidAdapter.json
+++ b/metadata/modules/fluctBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/freepassBidAdapter.json b/metadata/modules/freepassBidAdapter.json
index dd65dbf7c02..7d776aba110 100644
--- a/metadata/modules/freepassBidAdapter.json
+++ b/metadata/modules/freepassBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/freepassIdSystem.json b/metadata/modules/freepassIdSystem.json
index 880129574ee..4ffb24f8d67 100644
--- a/metadata/modules/freepassIdSystem.json
+++ b/metadata/modules/freepassIdSystem.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/ftrackIdSystem.json b/metadata/modules/ftrackIdSystem.json
index 54974ce3b57..b3be1a7de54 100644
--- a/metadata/modules/ftrackIdSystem.json
+++ b/metadata/modules/ftrackIdSystem.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/fwsspBidAdapter.json b/metadata/modules/fwsspBidAdapter.json
index 3b11c0fafce..db5514f3dde 100644
--- a/metadata/modules/fwsspBidAdapter.json
+++ b/metadata/modules/fwsspBidAdapter.json
@@ -2,10 +2,29 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://iab.fwmrm.net/g/devicedisclosure.json": {
- "timestamp": "2026-05-18T20:04:34.919Z",
+ "timestamp": "2026-06-15T17:39:25.022Z",
"disclosures": []
}
},
+ "purposes": {
+ "285": {
+ "purposes": [
+ 1,
+ 2,
+ 4
+ ],
+ "legIntPurposes": [
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/gameraRtdProvider.json b/metadata/modules/gameraRtdProvider.json
index 2e1be18dd94..10ee33c734d 100644
--- a/metadata/modules/gameraRtdProvider.json
+++ b/metadata/modules/gameraRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/gammaBidAdapter.json b/metadata/modules/gammaBidAdapter.json
index 2ccba02bc58..3800efd98c7 100644
--- a/metadata/modules/gammaBidAdapter.json
+++ b/metadata/modules/gammaBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/gamoshiBidAdapter.json b/metadata/modules/gamoshiBidAdapter.json
index fa60af4c756..28ec046fa7a 100644
--- a/metadata/modules/gamoshiBidAdapter.json
+++ b/metadata/modules/gamoshiBidAdapter.json
@@ -2,10 +2,33 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://resources.gamoshi.io/disclosures-client-storage.json": {
- "timestamp": "2026-05-18T20:04:35.086Z",
+ "timestamp": "2026-06-15T17:39:25.956Z",
"disclosures": []
}
},
+ "purposes": {
+ "644": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/gemiusIdSystem.json b/metadata/modules/gemiusIdSystem.json
index cde7d0567dc..c80ff10ad83 100644
--- a/metadata/modules/gemiusIdSystem.json
+++ b/metadata/modules/gemiusIdSystem.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://gemius.com/media/documents/Gemius_SA_Vendor_Device_Storage.json": {
- "timestamp": "2026-05-18T20:04:35.172Z",
+ "timestamp": "2026-06-15T17:39:26.192Z",
"disclosures": [
{
"identifier": "__gsyncs_gdpr",
@@ -268,6 +268,23 @@
]
}
},
+ "purposes": {
+ "328": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/genericAnalyticsAdapter.json b/metadata/modules/genericAnalyticsAdapter.json
index 91b862b5997..9b836192538 100644
--- a/metadata/modules/genericAnalyticsAdapter.json
+++ b/metadata/modules/genericAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/geoedgeRtdProvider.json b/metadata/modules/geoedgeRtdProvider.json
index eb835c81886..b043eb7c224 100644
--- a/metadata/modules/geoedgeRtdProvider.json
+++ b/metadata/modules/geoedgeRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/geolocationRtdProvider.json b/metadata/modules/geolocationRtdProvider.json
index d55c073cb8b..986bd31c39b 100644
--- a/metadata/modules/geolocationRtdProvider.json
+++ b/metadata/modules/geolocationRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/getintentBidAdapter.json b/metadata/modules/getintentBidAdapter.json
index 06386b819d4..5ca5741c30a 100644
--- a/metadata/modules/getintentBidAdapter.json
+++ b/metadata/modules/getintentBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/gjirafaBidAdapter.json b/metadata/modules/gjirafaBidAdapter.json
index c2687b75491..b4568b4ecde 100644
--- a/metadata/modules/gjirafaBidAdapter.json
+++ b/metadata/modules/gjirafaBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/glomexBidAdapter.json b/metadata/modules/glomexBidAdapter.json
index 53cb5476e9d..49aa4ad7a0f 100644
--- a/metadata/modules/glomexBidAdapter.json
+++ b/metadata/modules/glomexBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://player.glomex.com/.well-known/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:35.173Z",
+ "timestamp": "2026-06-15T17:39:26.192Z",
"disclosures": [
{
"identifier": "glomexUser",
@@ -20,6 +20,15 @@
10
]
},
+ {
+ "identifier": "turboPlayerProfile",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1
+ ]
+ },
{
"identifier": "ET_EventCollector_SessionInstallationId",
"type": "web",
@@ -34,6 +43,32 @@
]
}
},
+ "purposes": {
+ "967": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 6,
+ 9
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 8,
+ 10,
+ 11
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8,
+ 10,
+ 11
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/gmosspBidAdapter.json b/metadata/modules/gmosspBidAdapter.json
index 6a7d8d19d0e..4189919440e 100644
--- a/metadata/modules/gmosspBidAdapter.json
+++ b/metadata/modules/gmosspBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/gnetBidAdapter.json b/metadata/modules/gnetBidAdapter.json
index f06016b2173..572ee7ac374 100644
--- a/metadata/modules/gnetBidAdapter.json
+++ b/metadata/modules/gnetBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/goadserverBidAdapter.json b/metadata/modules/goadserverBidAdapter.json
index fcbecacfb0d..a084292e772 100644
--- a/metadata/modules/goadserverBidAdapter.json
+++ b/metadata/modules/goadserverBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/goldbachBidAdapter.json b/metadata/modules/goldbachBidAdapter.json
index b9bf12de31a..81caf73184e 100644
--- a/metadata/modules/goldbachBidAdapter.json
+++ b/metadata/modules/goldbachBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://gb-next.ch/TcfGoldbachDeviceStorage.json": {
- "timestamp": "2026-05-18T20:04:35.530Z",
+ "timestamp": "2026-06-15T17:39:26.601Z",
"disclosures": [
{
"identifier": "dakt_2_session_id",
@@ -11,10 +11,9 @@
"cookieRefresh": true,
"purposes": [
1,
- 2,
3,
- 4,
- 7,
+ 5,
+ 6,
8,
9,
10
@@ -23,14 +22,13 @@
{
"identifier": "dakt_2_uuid_ts",
"type": "cookie",
- "maxAgeSeconds": 94670856,
- "cookieRefresh": false,
+ "maxAgeSeconds": 15552000,
+ "cookieRefresh": true,
"purposes": [
1,
- 2,
3,
- 4,
- 7,
+ 5,
+ 6,
8,
9,
10
@@ -39,8 +37,8 @@
{
"identifier": "dakt_2_version",
"type": "cookie",
- "maxAgeSeconds": 94670856,
- "cookieRefresh": false,
+ "maxAgeSeconds": 15552000,
+ "cookieRefresh": true,
"purposes": [
1
]
@@ -48,31 +46,46 @@
{
"identifier": "dakt_2_uuid",
"type": "cookie",
- "maxAgeSeconds": 94670856,
- "cookieRefresh": false,
+ "maxAgeSeconds": 15552000,
+ "cookieRefresh": true,
"purposes": [
1,
- 2,
3,
- 4,
- 7,
+ 5,
+ 6,
8,
9,
10
]
- },
- {
- "identifier": "dakt_2_dnt",
- "type": "cookie",
- "maxAgeSeconds": 31556952,
- "cookieRefresh": false,
- "purposes": [
- 1
- ]
}
]
}
},
+ "purposes": {
+ "580": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 8
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/goldfishAdsRtdProvider.json b/metadata/modules/goldfishAdsRtdProvider.json
index c0acee296e4..7efc8f37481 100644
--- a/metadata/modules/goldfishAdsRtdProvider.json
+++ b/metadata/modules/goldfishAdsRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/gravitoIdSystem.json b/metadata/modules/gravitoIdSystem.json
index 51c3a1659d3..f0e1d572539 100644
--- a/metadata/modules/gravitoIdSystem.json
+++ b/metadata/modules/gravitoIdSystem.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/greenbidsAnalyticsAdapter.json b/metadata/modules/greenbidsAnalyticsAdapter.json
index 4c26700e5e0..f85a6f7ff43 100644
--- a/metadata/modules/greenbidsAnalyticsAdapter.json
+++ b/metadata/modules/greenbidsAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/greenbidsBidAdapter.json b/metadata/modules/greenbidsBidAdapter.json
index 28bdff986be..9c73efb5487 100644
--- a/metadata/modules/greenbidsBidAdapter.json
+++ b/metadata/modules/greenbidsBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/greenbidsRtdProvider.json b/metadata/modules/greenbidsRtdProvider.json
index 3d377e9661d..45c06afc2b3 100644
--- a/metadata/modules/greenbidsRtdProvider.json
+++ b/metadata/modules/greenbidsRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/gridBidAdapter.json b/metadata/modules/gridBidAdapter.json
index 9cb0d2a521e..702487439c3 100644
--- a/metadata/modules/gridBidAdapter.json
+++ b/metadata/modules/gridBidAdapter.json
@@ -2,10 +2,25 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://www.themediagrid.com/devicestorage.json": {
- "timestamp": "2026-05-18T20:04:36.059Z",
+ "timestamp": "2026-06-15T17:39:27.178Z",
"disclosures": []
}
},
+ "purposes": {
+ "686": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/growadsBidAdapter.json b/metadata/modules/growadsBidAdapter.json
index 30f80c1f341..63d95a10499 100644
--- a/metadata/modules/growadsBidAdapter.json
+++ b/metadata/modules/growadsBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/growthCodeAnalyticsAdapter.json b/metadata/modules/growthCodeAnalyticsAdapter.json
index b75b0fd8c0d..30652957a1e 100644
--- a/metadata/modules/growthCodeAnalyticsAdapter.json
+++ b/metadata/modules/growthCodeAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/growthCodeIdSystem.json b/metadata/modules/growthCodeIdSystem.json
index e4bdce1366d..16846a12586 100644
--- a/metadata/modules/growthCodeIdSystem.json
+++ b/metadata/modules/growthCodeIdSystem.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/growthCodeRtdProvider.json b/metadata/modules/growthCodeRtdProvider.json
index 277d9ab2d54..79c58ba9720 100644
--- a/metadata/modules/growthCodeRtdProvider.json
+++ b/metadata/modules/growthCodeRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/gumgumBidAdapter.json b/metadata/modules/gumgumBidAdapter.json
index 3ccd10cc84e..3795b4b05a4 100644
--- a/metadata/modules/gumgumBidAdapter.json
+++ b/metadata/modules/gumgumBidAdapter.json
@@ -2,10 +2,27 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://marketing.gumgum.com/devicestoragedisclosures.json": {
- "timestamp": "2026-05-18T20:04:36.214Z",
+ "timestamp": "2026-06-15T17:39:27.682Z",
"disclosures": []
}
},
+ "purposes": {
+ "61": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [
+ 2,
+ 7
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/h12mediaBidAdapter.json b/metadata/modules/h12mediaBidAdapter.json
index f28bd6bb539..726d0435c7f 100644
--- a/metadata/modules/h12mediaBidAdapter.json
+++ b/metadata/modules/h12mediaBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/hadronAnalyticsAdapter.json b/metadata/modules/hadronAnalyticsAdapter.json
index b6fa5356e6d..b6bb813889b 100644
--- a/metadata/modules/hadronAnalyticsAdapter.json
+++ b/metadata/modules/hadronAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/hadronIdSystem.json b/metadata/modules/hadronIdSystem.json
index b488f0bac8d..8dd3f656b38 100644
--- a/metadata/modules/hadronIdSystem.json
+++ b/metadata/modules/hadronIdSystem.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://p.ad.gt/static/iab_tcf.json": {
- "timestamp": "2026-05-18T20:04:36.343Z",
+ "timestamp": "2026-06-15T17:39:27.967Z",
"disclosures": [
{
"identifier": "au/sid",
@@ -48,6 +48,22 @@
]
}
},
+ "purposes": {
+ "561": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/hadronRtdProvider.json b/metadata/modules/hadronRtdProvider.json
index 7e393823d70..8f8a068040f 100644
--- a/metadata/modules/hadronRtdProvider.json
+++ b/metadata/modules/hadronRtdProvider.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://p.ad.gt/static/iab_tcf.json": {
- "timestamp": "2026-05-18T20:04:36.468Z",
+ "timestamp": "2026-06-15T17:39:28.086Z",
"disclosures": [
{
"identifier": "au/sid",
@@ -48,6 +48,22 @@
]
}
},
+ "purposes": {
+ "561": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/haloadsBidAdapter.json b/metadata/modules/haloadsBidAdapter.json
index 6062fa52652..804b1921153 100644
--- a/metadata/modules/haloadsBidAdapter.json
+++ b/metadata/modules/haloadsBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/harionBidAdapter.json b/metadata/modules/harionBidAdapter.json
index d3a028259c0..23952a237f3 100644
--- a/metadata/modules/harionBidAdapter.json
+++ b/metadata/modules/harionBidAdapter.json
@@ -2,10 +2,26 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://markappmedia.site/vendor.json": {
- "timestamp": "2026-05-18T20:04:36.468Z",
+ "timestamp": "2026-06-15T17:39:28.086Z",
"disclosures": []
}
},
+ "purposes": {
+ "1406": {
+ "purposes": [
+ 1,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/holidBidAdapter.json b/metadata/modules/holidBidAdapter.json
index 9740e754cc5..31a132fc2fc 100644
--- a/metadata/modules/holidBidAdapter.json
+++ b/metadata/modules/holidBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://ads.holid.io/devicestorage.json": {
- "timestamp": "2026-05-18T20:04:36.931Z",
+ "timestamp": "2026-06-15T17:39:28.885Z",
"disclosures": [
{
"identifier": "uids",
@@ -19,6 +19,26 @@
]
}
},
+ "purposes": {
+ "1177": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/hubvisorAnalyticsAdapter.json b/metadata/modules/hubvisorAnalyticsAdapter.json
new file mode 100644
index 00000000000..f781de5a5e7
--- /dev/null
+++ b/metadata/modules/hubvisorAnalyticsAdapter.json
@@ -0,0 +1,12 @@
+{
+ "NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
+ "disclosures": {},
+ "purposes": {},
+ "components": [
+ {
+ "componentType": "analytics",
+ "componentName": "hubvisor",
+ "gvlid": null
+ }
+ ]
+}
\ No newline at end of file
diff --git a/metadata/modules/hubvisorBidAdapter.json b/metadata/modules/hubvisorBidAdapter.json
new file mode 100644
index 00000000000..5af4a7b50ab
--- /dev/null
+++ b/metadata/modules/hubvisorBidAdapter.json
@@ -0,0 +1,74 @@
+{
+ "NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
+ "disclosures": {
+ "https://cdn.hubvisor.io/assets/deviceStorage.json": {
+ "timestamp": "2026-06-15T17:39:29.329Z",
+ "disclosures": [
+ {
+ "identifier": "hbv:turbo-cmp",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1
+ ]
+ },
+ {
+ "identifier": "hbv:remote-configuration",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1
+ ]
+ },
+ {
+ "identifier": "hbv:dynamic-timeout",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1
+ ]
+ },
+ {
+ "identifier": "hbv:ttdid",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1
+ ]
+ },
+ {
+ "identifier": "hbv:client-context",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1
+ ]
+ }
+ ]
+ }
+ },
+ "purposes": {
+ "1112": {
+ "purposes": [
+ 1
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
+ "components": [
+ {
+ "componentType": "bidder",
+ "componentName": "hubvisor",
+ "aliasOf": null,
+ "gvlid": 1112,
+ "disclosureURL": "https://cdn.hubvisor.io/assets/deviceStorage.json"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/metadata/modules/humansecurityMalvDefenseRtdProvider.json b/metadata/modules/humansecurityMalvDefenseRtdProvider.json
index 98fec2f0fd9..45b983f9cbe 100644
--- a/metadata/modules/humansecurityMalvDefenseRtdProvider.json
+++ b/metadata/modules/humansecurityMalvDefenseRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/humansecurityRtdProvider.json b/metadata/modules/humansecurityRtdProvider.json
index 5e2c398f499..147f99759a8 100644
--- a/metadata/modules/humansecurityRtdProvider.json
+++ b/metadata/modules/humansecurityRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/hybridBidAdapter.json b/metadata/modules/hybridBidAdapter.json
index a4baa4aabf5..abcbe313af2 100644
--- a/metadata/modules/hybridBidAdapter.json
+++ b/metadata/modules/hybridBidAdapter.json
@@ -2,10 +2,33 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://st.hybrid.ai/policy/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:37.218Z",
+ "timestamp": "2026-06-15T17:39:29.681Z",
"disclosures": []
}
},
+ "purposes": {
+ "206": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [
+ 2
+ ],
+ "specialFeatures": [
+ 1,
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/hypelabBidAdapter.json b/metadata/modules/hypelabBidAdapter.json
index 36b95ee1ad2..6d5a45fe0a9 100644
--- a/metadata/modules/hypelabBidAdapter.json
+++ b/metadata/modules/hypelabBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/iasRtdProvider.json b/metadata/modules/iasRtdProvider.json
index 1df9cab11b2..7148dce33a4 100644
--- a/metadata/modules/iasRtdProvider.json
+++ b/metadata/modules/iasRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/id5AnalyticsAdapter.json b/metadata/modules/id5AnalyticsAdapter.json
index 40507d9eb00..f4d74402432 100644
--- a/metadata/modules/id5AnalyticsAdapter.json
+++ b/metadata/modules/id5AnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/id5IdSystem.json b/metadata/modules/id5IdSystem.json
index 5ee3f6220a1..21d46aea8c0 100644
--- a/metadata/modules/id5IdSystem.json
+++ b/metadata/modules/id5IdSystem.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://id5-sync.com/tcf/disclosures.json": {
- "timestamp": "2026-05-18T20:04:37.407Z",
+ "timestamp": "2026-06-15T17:39:30.031Z",
"disclosures": [
{
"identifier": "id5id",
@@ -248,6 +248,19 @@
]
}
},
+ "purposes": {
+ "131": {
+ "purposes": [
+ 1,
+ 3,
+ 5,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/identityLinkIdSystem.json b/metadata/modules/identityLinkIdSystem.json
index 5ea4e071abf..c5c7411f90b 100644
--- a/metadata/modules/identityLinkIdSystem.json
+++ b/metadata/modules/identityLinkIdSystem.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://tcf.ats.rlcdn.com/device-storage-disclosure.json": {
- "timestamp": "2026-05-18T20:04:37.744Z",
+ "timestamp": "2026-06-15T17:39:30.513Z",
"disclosures": [
{
"identifier": "_lr_retry_request",
@@ -115,6 +115,25 @@
]
}
},
+ "purposes": {
+ "97": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/idxBidAdapter.json b/metadata/modules/idxBidAdapter.json
index fb6c9f31b8e..d3a1313a9fe 100644
--- a/metadata/modules/idxBidAdapter.json
+++ b/metadata/modules/idxBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/idxIdSystem.json b/metadata/modules/idxIdSystem.json
index 0e3965dfad9..d92266d05de 100644
--- a/metadata/modules/idxIdSystem.json
+++ b/metadata/modules/idxIdSystem.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/illuminBidAdapter.json b/metadata/modules/illuminBidAdapter.json
index da0e50311e4..a396c63f7a6 100644
--- a/metadata/modules/illuminBidAdapter.json
+++ b/metadata/modules/illuminBidAdapter.json
@@ -2,10 +2,31 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://admanmedia.com/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:37.822Z",
+ "timestamp": "2026-06-15T17:39:30.562Z",
"disclosures": []
}
},
+ "purposes": {
+ "149": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [
+ 2
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/imAnalyticsAdapter.json b/metadata/modules/imAnalyticsAdapter.json
index 57de64bd1fc..1602fdb2652 100644
--- a/metadata/modules/imAnalyticsAdapter.json
+++ b/metadata/modules/imAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/imRtdProvider.json b/metadata/modules/imRtdProvider.json
index 4139f96274c..566e250d661 100644
--- a/metadata/modules/imRtdProvider.json
+++ b/metadata/modules/imRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/impactifyBidAdapter.json b/metadata/modules/impactifyBidAdapter.json
index bc6a46abe19..d40814f107b 100644
--- a/metadata/modules/impactifyBidAdapter.json
+++ b/metadata/modules/impactifyBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://ad.impactify.io/tcfvendors.json": {
- "timestamp": "2026-05-18T20:04:38.287Z",
+ "timestamp": "2026-06-15T17:39:31.013Z",
"disclosures": [
{
"identifier": "_im*",
@@ -17,6 +17,31 @@
]
}
},
+ "purposes": {
+ "606": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/improvedigitalBidAdapter.json b/metadata/modules/improvedigitalBidAdapter.json
index bad837b0964..6617a1e0ec9 100644
--- a/metadata/modules/improvedigitalBidAdapter.json
+++ b/metadata/modules/improvedigitalBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://sellers.improvedigital.com/tcf-cookies.json": {
- "timestamp": "2026-05-18T20:04:38.613Z",
+ "timestamp": "2026-06-15T17:39:31.471Z",
"disclosures": [
{
"identifier": "tuuid",
@@ -133,6 +133,29 @@
]
}
},
+ "purposes": {
+ "253": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 9
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/imuIdSystem.json b/metadata/modules/imuIdSystem.json
index 5b04170d7da..1ce36386dcb 100644
--- a/metadata/modules/imuIdSystem.json
+++ b/metadata/modules/imuIdSystem.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/incrementxBidAdapter.json b/metadata/modules/incrementxBidAdapter.json
index c46ce484c7b..7b3b9abba7a 100644
--- a/metadata/modules/incrementxBidAdapter.json
+++ b/metadata/modules/incrementxBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/inmobiBidAdapter.json b/metadata/modules/inmobiBidAdapter.json
index 54b44739a3e..ab32fbbd0d9 100644
--- a/metadata/modules/inmobiBidAdapter.json
+++ b/metadata/modules/inmobiBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://publisher.inmobi.com/public/disclosure.json": {
- "timestamp": "2026-05-18T20:04:38.613Z",
+ "timestamp": "2026-06-15T17:39:31.471Z",
"disclosures": [
{
"identifier": "iDSP_Cookie",
@@ -42,6 +42,29 @@
]
}
},
+ "purposes": {
+ "333": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1,
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/innityBidAdapter.json b/metadata/modules/innityBidAdapter.json
index 51500e6582f..482a57872b2 100644
--- a/metadata/modules/innityBidAdapter.json
+++ b/metadata/modules/innityBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/insticatorBidAdapter.json b/metadata/modules/insticatorBidAdapter.json
index 0c1af21681a..76d7d5d3f74 100644
--- a/metadata/modules/insticatorBidAdapter.json
+++ b/metadata/modules/insticatorBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.insticator.com/iab/device-storage-disclosure.json": {
- "timestamp": "2026-05-18T20:04:38.735Z",
+ "timestamp": "2026-06-15T17:39:31.725Z",
"disclosures": [
{
"identifier": "visitorGeo",
@@ -68,6 +68,35 @@
]
}
},
+ "purposes": {
+ "910": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/insuradsBidAdapter.json b/metadata/modules/insuradsBidAdapter.json
index 597fa99b02a..07de7238689 100644
--- a/metadata/modules/insuradsBidAdapter.json
+++ b/metadata/modules/insuradsBidAdapter.json
@@ -1,8 +1,8 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
- "https://www.insurads.com/tcf-vdsod.json": {
- "timestamp": "2026-05-18T20:04:39.072Z",
+ "https://labs.insurads.com/tcf-vdsod.json": {
+ "timestamp": "2026-06-15T17:39:32.113Z",
"disclosures": [
{
"identifier": "___iat_ses",
@@ -33,13 +33,29 @@
]
}
},
+ "purposes": {
+ "596": {
+ "purposes": [
+ 1,
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
"componentName": "insurads",
"aliasOf": null,
"gvlid": 596,
- "disclosureURL": "https://www.insurads.com/tcf-vdsod.json"
+ "disclosureURL": "https://labs.insurads.com/tcf-vdsod.json"
}
]
}
\ No newline at end of file
diff --git a/metadata/modules/insuradsRtdProvider.json b/metadata/modules/insuradsRtdProvider.json
index 45689e16f30..28484051d02 100644
--- a/metadata/modules/insuradsRtdProvider.json
+++ b/metadata/modules/insuradsRtdProvider.json
@@ -1,8 +1,8 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
- "https://www.insurads.com/tcf-vdsod.json": {
- "timestamp": "2026-05-18T20:04:39.546Z",
+ "https://labs.insurads.com/tcf-vdsod.json": {
+ "timestamp": "2026-06-15T17:39:32.301Z",
"disclosures": [
{
"identifier": "___iat_ses",
@@ -33,12 +33,28 @@
]
}
},
+ "purposes": {
+ "596": {
+ "purposes": [
+ 1,
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "rtd",
"componentName": "insuradsRtd",
"gvlid": 596,
- "disclosureURL": "https://www.insurads.com/tcf-vdsod.json"
+ "disclosureURL": "https://labs.insurads.com/tcf-vdsod.json"
}
]
}
\ No newline at end of file
diff --git a/metadata/modules/integr8BidAdapter.json b/metadata/modules/integr8BidAdapter.json
index 84199d3446d..23ecccb8185 100644
--- a/metadata/modules/integr8BidAdapter.json
+++ b/metadata/modules/integr8BidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/intentIqAnalyticsAdapter.json b/metadata/modules/intentIqAnalyticsAdapter.json
index 10122d938eb..99f37ac13c3 100644
--- a/metadata/modules/intentIqAnalyticsAdapter.json
+++ b/metadata/modules/intentIqAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/intentIqIdSystem.json b/metadata/modules/intentIqIdSystem.json
index 9b9a1b9f0c5..98fd0cfebe5 100644
--- a/metadata/modules/intentIqIdSystem.json
+++ b/metadata/modules/intentIqIdSystem.json
@@ -2,10 +2,31 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://agent.intentiq.com/GDPR/gdpr.json": {
- "timestamp": "2026-05-18T20:04:39.547Z",
+ "timestamp": "2026-06-15T17:39:32.301Z",
"disclosures": []
}
},
+ "purposes": {
+ "1323": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [
+ 2,
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/intenzeBidAdapter.json b/metadata/modules/intenzeBidAdapter.json
index 9734e2cc237..2726dba2f5c 100644
--- a/metadata/modules/intenzeBidAdapter.json
+++ b/metadata/modules/intenzeBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/interactiveOffersBidAdapter.json b/metadata/modules/interactiveOffersBidAdapter.json
index eef3197ae04..f344e55781c 100644
--- a/metadata/modules/interactiveOffersBidAdapter.json
+++ b/metadata/modules/interactiveOffersBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/invamiaBidAdapter.json b/metadata/modules/invamiaBidAdapter.json
index 3103fbdbc0c..26c226bfa1f 100644
--- a/metadata/modules/invamiaBidAdapter.json
+++ b/metadata/modules/invamiaBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/invibesBidAdapter.json b/metadata/modules/invibesBidAdapter.json
index 0f26dd63c52..71cfc044e03 100644
--- a/metadata/modules/invibesBidAdapter.json
+++ b/metadata/modules/invibesBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://tcf.invibes.com/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:39.747Z",
+ "timestamp": "2026-06-15T17:39:32.638Z",
"disclosures": [
{
"identifier": "ivvcap",
@@ -159,6 +159,29 @@
]
}
},
+ "purposes": {
+ "436": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 9
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 8,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8,
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/invisiblyAnalyticsAdapter.json b/metadata/modules/invisiblyAnalyticsAdapter.json
index 172c87e0f5b..7828b2c4d41 100644
--- a/metadata/modules/invisiblyAnalyticsAdapter.json
+++ b/metadata/modules/invisiblyAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/ipromBidAdapter.json b/metadata/modules/ipromBidAdapter.json
index cabb5cc61e5..87f5f8114e9 100644
--- a/metadata/modules/ipromBidAdapter.json
+++ b/metadata/modules/ipromBidAdapter.json
@@ -2,10 +2,33 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://core.iprom.net/info/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:40.233Z",
+ "timestamp": "2026-06-15T17:39:33.183Z",
"disclosures": []
}
},
+ "purposes": {
+ "811": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1,
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/iqxBidAdapter.json b/metadata/modules/iqxBidAdapter.json
index 7d247b6d698..44a81140581 100644
--- a/metadata/modules/iqxBidAdapter.json
+++ b/metadata/modules/iqxBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/iqzoneBidAdapter.json b/metadata/modules/iqzoneBidAdapter.json
index 3a67c35912c..173d274a10a 100644
--- a/metadata/modules/iqzoneBidAdapter.json
+++ b/metadata/modules/iqzoneBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/ivsBidAdapter.json b/metadata/modules/ivsBidAdapter.json
index dc55ba29251..3aebd4f69e5 100644
--- a/metadata/modules/ivsBidAdapter.json
+++ b/metadata/modules/ivsBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/ixBidAdapter.json b/metadata/modules/ixBidAdapter.json
index 10795079248..62e91cc49f0 100644
--- a/metadata/modules/ixBidAdapter.json
+++ b/metadata/modules/ixBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.indexexchange.com/device_storage_disclosure.json": {
- "timestamp": "2026-05-18T20:04:40.791Z",
+ "timestamp": "2026-06-15T17:39:33.855Z",
"disclosures": [
{
"identifier": "ix_features",
@@ -49,6 +49,26 @@
]
}
},
+ "purposes": {
+ "10": {
+ "purposes": [
+ 1,
+ 2,
+ 4,
+ 7,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/jixieBidAdapter.json b/metadata/modules/jixieBidAdapter.json
index a9aa5292e0f..32e49081bfc 100644
--- a/metadata/modules/jixieBidAdapter.json
+++ b/metadata/modules/jixieBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.jsdelivr.net/gh/prebid/Prebid.js/metadata/disclosures/modules/jixieBidAdapterDisclosure.json": {
- "timestamp": "2026-05-18T20:04:41.188Z",
+ "timestamp": "2026-06-15T17:39:34.187Z",
"disclosures": [
{
"identifier": "_jxx",
@@ -84,6 +84,7 @@
]
}
},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/jixieIdSystem.json b/metadata/modules/jixieIdSystem.json
index 048063ca475..f6510c7abe0 100644
--- a/metadata/modules/jixieIdSystem.json
+++ b/metadata/modules/jixieIdSystem.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.jsdelivr.net/gh/prebid/Prebid.js/metadata/disclosures/modules/jixieIdSystemDisclosure.json": {
- "timestamp": "2026-05-18T20:04:41.188Z",
+ "timestamp": "2026-06-15T17:39:34.188Z",
"disclosures": [
{
"identifier": "_jxx",
@@ -57,6 +57,7 @@
]
}
},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/justIdSystem.json b/metadata/modules/justIdSystem.json
index 29e9ff13dad..9bceb469033 100644
--- a/metadata/modules/justIdSystem.json
+++ b/metadata/modules/justIdSystem.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://audience-solutions.com/.well-known/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:41.189Z",
+ "timestamp": "2026-06-15T17:39:34.188Z",
"disclosures": [
{
"identifier": "__jtuid",
@@ -25,6 +25,27 @@
]
}
},
+ "purposes": {
+ "160": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/justpremiumBidAdapter.json b/metadata/modules/justpremiumBidAdapter.json
index 6e673c6c5e2..3613f49928d 100644
--- a/metadata/modules/justpremiumBidAdapter.json
+++ b/metadata/modules/justpremiumBidAdapter.json
@@ -2,10 +2,22 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.justpremium.com/devicestoragedisclosures.json": {
- "timestamp": "2026-05-18T20:04:41.869Z",
+ "timestamp": "2026-06-15T17:39:35.004Z",
"disclosures": []
}
},
+ "purposes": {
+ "62": {
+ "purposes": [
+ 1,
+ 2,
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/jwplayerBidAdapter.json b/metadata/modules/jwplayerBidAdapter.json
index d97d4b1c1d5..3e45b1224ef 100644
--- a/metadata/modules/jwplayerBidAdapter.json
+++ b/metadata/modules/jwplayerBidAdapter.json
@@ -2,8 +2,120 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://www.jwplayer.com/devicestorage.json": {
- "timestamp": "2026-05-18T20:04:42.288Z",
- "disclosures": []
+ "timestamp": "2026-06-15T17:39:35.575Z",
+ "disclosures": [
+ {
+ "identifier": "jwplayer.volume",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "purposes": [
+ 1
+ ],
+ "description": "Stores the user's preferred volume level (0–100) in browser localStorage so it can be restored the next time the player loads on this device."
+ },
+ {
+ "identifier": "jwplayer.mute",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "purposes": [
+ 1
+ ],
+ "description": "Stores the user's mute preference (true/false) in browser localStorage so it can be restored the next time the player loads on this device."
+ },
+ {
+ "identifier": "jwplayer.captionLabel",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "purposes": [
+ 1
+ ],
+ "description": "Stores the label of the user's selected closed-caption track in browser localStorage so the same caption language is pre-selected on future visits."
+ },
+ {
+ "identifier": "jwplayer.captions",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "purposes": [
+ 1
+ ],
+ "description": "Stores the user's caption style preferences (font, size, color, etc.) as a JSON object in browser localStorage so custom styling is preserved across sessions."
+ },
+ {
+ "identifier": "jwplayer.bandwidthEstimate",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "purposes": [
+ 1
+ ],
+ "description": "Stores a numeric estimate of the user's available network bandwidth in browser localStorage to improve initial adaptive-bitrate quality selection on the next page load, avoiding unnecessary buffering."
+ },
+ {
+ "identifier": "jwplayer.bitrateSelection",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "purposes": [
+ 1
+ ],
+ "description": "Stores the user's manually selected video bitrate in browser localStorage so the same bitrate is pre-selected when the player next loads on this device."
+ },
+ {
+ "identifier": "jwplayer.qualityLabel",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "purposes": [
+ 1
+ ],
+ "description": "Stores the user's manually selected video quality label (e.g. '1080p') in browser localStorage so the same quality level is pre-selected on future visits."
+ },
+ {
+ "identifier": "jwplayer.enableShortcuts",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "purposes": [
+ 1
+ ],
+ "description": "Stores the user's keyboard shortcut preference (enabled/disabled) in browser localStorage so the setting is preserved across sessions."
+ },
+ {
+ "identifier": "jwplayerLocalId",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "purposes": [
+ 1
+ ],
+ "description": "Stores a randomly generated 12-character alphanumeric identifier in browser localStorage used to correlate analytics pings across page loads on the same device."
+ },
+ {
+ "identifier": "jwplayer.mediaIds",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "purposes": [
+ 1
+ ],
+ "description": "Stores a JSON object mapping recently viewed media IDs to their expiry timestamps in browser localStorage to avoid re-surfacing content the user has already watched."
+ }
+ ]
+ }
+ },
+ "purposes": {
+ "1046": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 2
+ ]
}
},
"components": [
diff --git a/metadata/modules/jwplayerRtdProvider.json b/metadata/modules/jwplayerRtdProvider.json
index a924245c581..247dccfc912 100644
--- a/metadata/modules/jwplayerRtdProvider.json
+++ b/metadata/modules/jwplayerRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/kargoAnalyticsAdapter.json b/metadata/modules/kargoAnalyticsAdapter.json
index 89a29c21999..a62460784f0 100644
--- a/metadata/modules/kargoAnalyticsAdapter.json
+++ b/metadata/modules/kargoAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/kargoBidAdapter.json b/metadata/modules/kargoBidAdapter.json
index f7df17ffa6e..0232d870b71 100644
--- a/metadata/modules/kargoBidAdapter.json
+++ b/metadata/modules/kargoBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://storage.cloud.kargo.com/device_storage_disclosure.json": {
- "timestamp": "2026-05-18T20:04:42.664Z",
+ "timestamp": "2026-06-15T17:39:36.260Z",
"disclosures": [
{
"identifier": "krg_crb",
@@ -36,6 +36,22 @@
]
}
},
+ "purposes": {
+ "972": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/kimberliteBidAdapter.json b/metadata/modules/kimberliteBidAdapter.json
index 2390e10fa1d..da33a265079 100644
--- a/metadata/modules/kimberliteBidAdapter.json
+++ b/metadata/modules/kimberliteBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/kinessoIdSystem.json b/metadata/modules/kinessoIdSystem.json
index 9a7719f22e2..2221e3c27b1 100644
--- a/metadata/modules/kinessoIdSystem.json
+++ b/metadata/modules/kinessoIdSystem.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/kiviadsBidAdapter.json b/metadata/modules/kiviadsBidAdapter.json
index a1b73cb3275..7ccc6af5936 100644
--- a/metadata/modules/kiviadsBidAdapter.json
+++ b/metadata/modules/kiviadsBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/koblerBidAdapter.json b/metadata/modules/koblerBidAdapter.json
index f942422acbe..fee1988b24e 100644
--- a/metadata/modules/koblerBidAdapter.json
+++ b/metadata/modules/koblerBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/krushmediaBidAdapter.json b/metadata/modules/krushmediaBidAdapter.json
index 96352c242d6..bca2febf9bf 100644
--- a/metadata/modules/krushmediaBidAdapter.json
+++ b/metadata/modules/krushmediaBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/kubientBidAdapter.json b/metadata/modules/kubientBidAdapter.json
index eabc6e2fd80..cabee93937b 100644
--- a/metadata/modules/kubientBidAdapter.json
+++ b/metadata/modules/kubientBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/kueezRtbBidAdapter.json b/metadata/modules/kueezRtbBidAdapter.json
index c6d1cbe667a..f1e6a07d924 100644
--- a/metadata/modules/kueezRtbBidAdapter.json
+++ b/metadata/modules/kueezRtbBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://en.kueez.com/tcf.json": {
- "timestamp": "2026-05-18T20:04:42.860Z",
+ "timestamp": "2026-06-15T17:39:36.479Z",
"disclosures": [
{
"identifier": "ck48wz12sqj7",
@@ -77,6 +77,25 @@
]
}
},
+ "purposes": {
+ "1165": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7
+ ],
+ "legIntPurposes": [
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/lane4BidAdapter.json b/metadata/modules/lane4BidAdapter.json
index d9f268a4e31..74090a12fd6 100644
--- a/metadata/modules/lane4BidAdapter.json
+++ b/metadata/modules/lane4BidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/lassoBidAdapter.json b/metadata/modules/lassoBidAdapter.json
index 6380660d7ca..daaaab166bc 100644
--- a/metadata/modules/lassoBidAdapter.json
+++ b/metadata/modules/lassoBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/leagueMBidAdapter.json b/metadata/modules/leagueMBidAdapter.json
index f4b02875bbb..f4ef325c50f 100644
--- a/metadata/modules/leagueMBidAdapter.json
+++ b/metadata/modules/leagueMBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/lemmaDigitalBidAdapter.json b/metadata/modules/lemmaDigitalBidAdapter.json
index 38ea096d9dd..c0f6575558b 100644
--- a/metadata/modules/lemmaDigitalBidAdapter.json
+++ b/metadata/modules/lemmaDigitalBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/lifestreetBidAdapter.json b/metadata/modules/lifestreetBidAdapter.json
index 041662d82fa..6c13b54f981 100644
--- a/metadata/modules/lifestreetBidAdapter.json
+++ b/metadata/modules/lifestreetBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/limelightDigitalBidAdapter.json b/metadata/modules/limelightDigitalBidAdapter.json
index 689fe69ba43..70388ac2d76 100644
--- a/metadata/modules/limelightDigitalBidAdapter.json
+++ b/metadata/modules/limelightDigitalBidAdapter.json
@@ -2,14 +2,57 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://policy.iion.io/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:42.946Z",
+ "timestamp": "2026-06-15T17:39:36.659Z",
"disclosures": []
},
"https://orangeclickmedia.com/device_storage_disclosure.json": {
- "timestamp": "2026-05-18T20:04:43.167Z",
+ "timestamp": "2026-06-15T17:39:36.783Z",
"disclosures": []
}
},
+ "purposes": {
+ "1148": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 8,
+ 9,
+ 11
+ ],
+ "legIntPurposes": [
+ 10
+ ],
+ "flexiblePurposes": [
+ 8
+ ],
+ "specialFeatures": []
+ },
+ "1358": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "specialFeatures": [
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/liveIntentAnalyticsAdapter.json b/metadata/modules/liveIntentAnalyticsAdapter.json
index e8043f9ae7c..f7c6ad26150 100644
--- a/metadata/modules/liveIntentAnalyticsAdapter.json
+++ b/metadata/modules/liveIntentAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/liveIntentIdSystem.json b/metadata/modules/liveIntentIdSystem.json
index 3960d2e5281..62eb1967f9a 100644
--- a/metadata/modules/liveIntentIdSystem.json
+++ b/metadata/modules/liveIntentIdSystem.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://b-code.liadm.com/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:43.168Z",
+ "timestamp": "2026-06-15T17:39:36.927Z",
"disclosures": [
{
"identifier": "_lc2_fpi",
@@ -173,6 +173,18 @@
]
}
},
+ "purposes": {
+ "148": {
+ "purposes": [
+ 1,
+ 2,
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/liveIntentRtdProvider.json b/metadata/modules/liveIntentRtdProvider.json
index f9590c9a5b1..d9904e9e009 100644
--- a/metadata/modules/liveIntentRtdProvider.json
+++ b/metadata/modules/liveIntentRtdProvider.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://b-code.liadm.com/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:43.276Z",
+ "timestamp": "2026-06-15T17:39:37.063Z",
"disclosures": [
{
"identifier": "_lc2_fpi",
@@ -173,6 +173,18 @@
]
}
},
+ "purposes": {
+ "148": {
+ "purposes": [
+ 1,
+ 2,
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/livewrappedAnalyticsAdapter.json b/metadata/modules/livewrappedAnalyticsAdapter.json
index 2190e7465de..8c399362515 100644
--- a/metadata/modules/livewrappedAnalyticsAdapter.json
+++ b/metadata/modules/livewrappedAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/livewrappedBidAdapter.json b/metadata/modules/livewrappedBidAdapter.json
index 77bb9ca92f3..cc42e924d1e 100644
--- a/metadata/modules/livewrappedBidAdapter.json
+++ b/metadata/modules/livewrappedBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://content.lwadm.com/deviceStorageDisclosure.json": {
- "timestamp": "2026-05-18T20:04:43.277Z",
+ "timestamp": "2026-06-15T17:39:37.063Z",
"disclosures": [
{
"cookieRefresh": false,
@@ -43,6 +43,23 @@
]
}
},
+ "purposes": {
+ "919": {
+ "purposes": [
+ 1,
+ 10
+ ],
+ "legIntPurposes": [
+ 2,
+ 7
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/lkqdBidAdapter.json b/metadata/modules/lkqdBidAdapter.json
index ae90fcb82b4..a1db1947690 100644
--- a/metadata/modules/lkqdBidAdapter.json
+++ b/metadata/modules/lkqdBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/lm_kiviadsBidAdapter.json b/metadata/modules/lm_kiviadsBidAdapter.json
index a9e3d6a074a..eefe44742a8 100644
--- a/metadata/modules/lm_kiviadsBidAdapter.json
+++ b/metadata/modules/lm_kiviadsBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/lmpIdSystem.json b/metadata/modules/lmpIdSystem.json
index 1a59c9bee6d..c098bf9f052 100644
--- a/metadata/modules/lmpIdSystem.json
+++ b/metadata/modules/lmpIdSystem.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/locIdSystem.json b/metadata/modules/locIdSystem.json
index 87e8fc03475..79a1b5fa0b6 100644
--- a/metadata/modules/locIdSystem.json
+++ b/metadata/modules/locIdSystem.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/lockerdomeBidAdapter.json b/metadata/modules/lockerdomeBidAdapter.json
index 21a1ab40f47..f4f8c163221 100644
--- a/metadata/modules/lockerdomeBidAdapter.json
+++ b/metadata/modules/lockerdomeBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/lockrAIMIdSystem.json b/metadata/modules/lockrAIMIdSystem.json
index f7ea79371db..10d06943809 100644
--- a/metadata/modules/lockrAIMIdSystem.json
+++ b/metadata/modules/lockrAIMIdSystem.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/loganBidAdapter.json b/metadata/modules/loganBidAdapter.json
index 2a3e8bd80e2..8efbb0ba6a3 100644
--- a/metadata/modules/loganBidAdapter.json
+++ b/metadata/modules/loganBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/logicadBidAdapter.json b/metadata/modules/logicadBidAdapter.json
index 6315c6f43ea..0a11cf2fec8 100644
--- a/metadata/modules/logicadBidAdapter.json
+++ b/metadata/modules/logicadBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/loglyBidAdapter.json b/metadata/modules/loglyBidAdapter.json
index bd00192e2a4..c8504a535e0 100644
--- a/metadata/modules/loglyBidAdapter.json
+++ b/metadata/modules/loglyBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/loopmeBidAdapter.json b/metadata/modules/loopmeBidAdapter.json
index 9a264c291ad..440d64f471d 100644
--- a/metadata/modules/loopmeBidAdapter.json
+++ b/metadata/modules/loopmeBidAdapter.json
@@ -2,10 +2,29 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://co.loopme.com/deviceStorageDisclosure.json": {
- "timestamp": "2026-05-18T20:04:43.475Z",
+ "timestamp": "2026-06-15T17:39:37.698Z",
"disclosures": []
}
},
+ "purposes": {
+ "109": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1,
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/lotamePanoramaIdSystem.json b/metadata/modules/lotamePanoramaIdSystem.json
index 3333a3e728e..6701872b774 100644
--- a/metadata/modules/lotamePanoramaIdSystem.json
+++ b/metadata/modules/lotamePanoramaIdSystem.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://tags.crwdcntrl.net/privacy/tcf-purposes.json": {
- "timestamp": "2026-05-18T20:04:43.661Z",
+ "timestamp": "2026-06-15T17:39:38.814Z",
"disclosures": [
{
"identifier": "_cc_id",
@@ -221,6 +221,26 @@
]
}
},
+ "purposes": {
+ "95": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/loyalBidAdapter.json b/metadata/modules/loyalBidAdapter.json
index 6ceaaf6c42f..90d978dcc81 100644
--- a/metadata/modules/loyalBidAdapter.json
+++ b/metadata/modules/loyalBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/luceadBidAdapter.json b/metadata/modules/luceadBidAdapter.json
index 1e0ed3b7453..e70232833a9 100644
--- a/metadata/modules/luceadBidAdapter.json
+++ b/metadata/modules/luceadBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/lunamediahbBidAdapter.json b/metadata/modules/lunamediahbBidAdapter.json
index dff1335b034..0eb773078ed 100644
--- a/metadata/modules/lunamediahbBidAdapter.json
+++ b/metadata/modules/lunamediahbBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/luponmediaBidAdapter.json b/metadata/modules/luponmediaBidAdapter.json
index e51589d41ec..76acd8e4f43 100644
--- a/metadata/modules/luponmediaBidAdapter.json
+++ b/metadata/modules/luponmediaBidAdapter.json
@@ -2,10 +2,38 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://luponmedia.com/vendor_device_storage.json": {
- "timestamp": "2026-05-18T20:04:43.743Z",
+ "timestamp": "2026-06-15T17:39:39.095Z",
"disclosures": []
}
},
+ "purposes": {
+ "1132": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "specialFeatures": [
+ 1,
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/mabidderBidAdapter.json b/metadata/modules/mabidderBidAdapter.json
index 60a4eca6f90..abde16e7dfe 100644
--- a/metadata/modules/mabidderBidAdapter.json
+++ b/metadata/modules/mabidderBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/madsenseBidAdapter.json b/metadata/modules/madsenseBidAdapter.json
index c18b0d7bef9..2d9ec7b4872 100644
--- a/metadata/modules/madsenseBidAdapter.json
+++ b/metadata/modules/madsenseBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/madvertiseBidAdapter.json b/metadata/modules/madvertiseBidAdapter.json
index c196931704c..6464f47ccdf 100644
--- a/metadata/modules/madvertiseBidAdapter.json
+++ b/metadata/modules/madvertiseBidAdapter.json
@@ -2,10 +2,29 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://adserver.bluestack.app/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:44.331Z",
+ "timestamp": "2026-06-15T17:39:39.775Z",
"disclosures": []
}
},
+ "purposes": {
+ "153": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1,
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/magicbidBidAdapter.json b/metadata/modules/magicbidBidAdapter.json
new file mode 100644
index 00000000000..af6af52e4d3
--- /dev/null
+++ b/metadata/modules/magicbidBidAdapter.json
@@ -0,0 +1,14 @@
+{
+ "NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
+ "disclosures": {},
+ "purposes": {},
+ "components": [
+ {
+ "componentType": "bidder",
+ "componentName": "magicbid",
+ "aliasOf": null,
+ "gvlid": null,
+ "disclosureURL": null
+ }
+ ]
+}
\ No newline at end of file
diff --git a/metadata/modules/magniteAnalyticsAdapter.json b/metadata/modules/magniteAnalyticsAdapter.json
index 3a8ec985911..8092f1df833 100644
--- a/metadata/modules/magniteAnalyticsAdapter.json
+++ b/metadata/modules/magniteAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/magniteBidAdapter.json b/metadata/modules/magniteBidAdapter.json
index 86d006ff117..e0c3a410397 100644
--- a/metadata/modules/magniteBidAdapter.json
+++ b/metadata/modules/magniteBidAdapter.json
@@ -2,10 +2,33 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://gdpr.rubiconproject.com/dvplus/devicestoragedisclosure.json": {
- "timestamp": "2026-05-18T20:04:44.847Z",
+ "timestamp": "2026-06-15T17:39:40.425Z",
"disclosures": []
}
},
+ "purposes": {
+ "52": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": [
+ 1,
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/malltvAnalyticsAdapter.json b/metadata/modules/malltvAnalyticsAdapter.json
index 84f2fcbe6b9..758a80bd9ed 100644
--- a/metadata/modules/malltvAnalyticsAdapter.json
+++ b/metadata/modules/malltvAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/malltvBidAdapter.json b/metadata/modules/malltvBidAdapter.json
index 90875da57d2..15cde636de8 100644
--- a/metadata/modules/malltvBidAdapter.json
+++ b/metadata/modules/malltvBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/mantisBidAdapter.json b/metadata/modules/mantisBidAdapter.json
index cfcbcbfa59d..bd55c87110d 100644
--- a/metadata/modules/mantisBidAdapter.json
+++ b/metadata/modules/mantisBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/marsmediaBidAdapter.json b/metadata/modules/marsmediaBidAdapter.json
index 0edd353d60d..520e8b4f6f4 100644
--- a/metadata/modules/marsmediaBidAdapter.json
+++ b/metadata/modules/marsmediaBidAdapter.json
@@ -2,10 +2,20 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://mars.media/apis/tcf-v2.json": {
- "timestamp": "2026-05-18T20:04:45.083Z",
+ "timestamp": "2026-06-15T17:39:40.807Z",
"disclosures": []
}
},
+ "purposes": {
+ "776": {
+ "purposes": [
+ 2
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/mathildeadsBidAdapter.json b/metadata/modules/mathildeadsBidAdapter.json
index 38e7830419a..2dda742971a 100644
--- a/metadata/modules/mathildeadsBidAdapter.json
+++ b/metadata/modules/mathildeadsBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/matterfullBidAdapter.json b/metadata/modules/matterfullBidAdapter.json
new file mode 100644
index 00000000000..7333990e352
--- /dev/null
+++ b/metadata/modules/matterfullBidAdapter.json
@@ -0,0 +1,14 @@
+{
+ "NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
+ "disclosures": {},
+ "purposes": {},
+ "components": [
+ {
+ "componentType": "bidder",
+ "componentName": "matterfull",
+ "aliasOf": null,
+ "gvlid": null,
+ "disclosureURL": null
+ }
+ ]
+}
\ No newline at end of file
diff --git a/metadata/modules/mediaConsortiumBidAdapter.json b/metadata/modules/mediaConsortiumBidAdapter.json
index d2ba34484d1..2eecf4fa7dd 100644
--- a/metadata/modules/mediaConsortiumBidAdapter.json
+++ b/metadata/modules/mediaConsortiumBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.hubvisor.io/assets/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:45.226Z",
+ "timestamp": "2026-06-15T17:39:41.065Z",
"disclosures": [
{
"identifier": "hbv:turbo-cmp",
@@ -52,6 +52,16 @@
]
}
},
+ "purposes": {
+ "1112": {
+ "purposes": [
+ 1
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/mediabramaBidAdapter.json b/metadata/modules/mediabramaBidAdapter.json
index 0037bc9e8d3..0730f34ec28 100644
--- a/metadata/modules/mediabramaBidAdapter.json
+++ b/metadata/modules/mediabramaBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/mediaeyesBidAdapter.json b/metadata/modules/mediaeyesBidAdapter.json
index 51ee478fa49..20270f40a85 100644
--- a/metadata/modules/mediaeyesBidAdapter.json
+++ b/metadata/modules/mediaeyesBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/mediafilterRtdProvider.json b/metadata/modules/mediafilterRtdProvider.json
index b004566f20d..d6a09757a60 100644
--- a/metadata/modules/mediafilterRtdProvider.json
+++ b/metadata/modules/mediafilterRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/mediaforceBidAdapter.json b/metadata/modules/mediaforceBidAdapter.json
index 28a1d6cedd3..1f1b31056ec 100644
--- a/metadata/modules/mediaforceBidAdapter.json
+++ b/metadata/modules/mediaforceBidAdapter.json
@@ -2,10 +2,30 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://comparisons.org/privacy.json": {
- "timestamp": "2026-05-18T20:04:45.677Z",
+ "timestamp": "2026-06-15T17:39:41.066Z",
"disclosures": []
}
},
+ "purposes": {
+ "671": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9
+ ],
+ "legIntPurposes": [
+ 2,
+ 10
+ ],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/mediafuseBidAdapter.json b/metadata/modules/mediafuseBidAdapter.json
index d44f560b0d8..c02e094939e 100644
--- a/metadata/modules/mediafuseBidAdapter.json
+++ b/metadata/modules/mediafuseBidAdapter.json
@@ -2,10 +2,32 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://acdn.adnxs.com/gvl/1d/xandrdevicestoragedisclosures.json": {
- "timestamp": "2026-05-18T20:04:45.946Z",
+ "timestamp": "2026-06-15T17:39:41.354Z",
"disclosures": []
}
},
+ "purposes": {
+ "32": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/mediagoBidAdapter.json b/metadata/modules/mediagoBidAdapter.json
index e2381dbb50b..a8507f80c72 100644
--- a/metadata/modules/mediagoBidAdapter.json
+++ b/metadata/modules/mediagoBidAdapter.json
@@ -2,10 +2,26 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.mediago.io/js/tcf.json": {
- "timestamp": "2026-05-18T20:04:45.946Z",
+ "timestamp": "2026-06-15T17:39:41.355Z",
"disclosures": []
}
},
+ "purposes": {
+ "1020": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/mediaimpactBidAdapter.json b/metadata/modules/mediaimpactBidAdapter.json
index 8b3b30c8cc5..f680a9c83c1 100644
--- a/metadata/modules/mediaimpactBidAdapter.json
+++ b/metadata/modules/mediaimpactBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/mediakeysBidAdapter.json b/metadata/modules/mediakeysBidAdapter.json
index 687932634ac..361b4db40d3 100644
--- a/metadata/modules/mediakeysBidAdapter.json
+++ b/metadata/modules/mediakeysBidAdapter.json
@@ -2,10 +2,27 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://s3.eu-west-3.amazonaws.com/adserving.resourcekeys.com/deviceStorageDisclosure.json": {
- "timestamp": "2026-05-18T20:04:46.082Z",
+ "timestamp": "2026-06-15T17:39:41.466Z",
"disclosures": []
}
},
+ "purposes": {
+ "498": {
+ "purposes": [
+ 1,
+ 2,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/medianetAnalyticsAdapter.json b/metadata/modules/medianetAnalyticsAdapter.json
index af974640059..4b9535bf91f 100644
--- a/metadata/modules/medianetAnalyticsAdapter.json
+++ b/metadata/modules/medianetAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/medianetBidAdapter.json b/metadata/modules/medianetBidAdapter.json
index bbe82bcfb10..e9b92f22bf8 100644
--- a/metadata/modules/medianetBidAdapter.json
+++ b/metadata/modules/medianetBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://www.media.net/tcfv2/gvl/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:46.455Z",
+ "timestamp": "2026-06-15T17:39:41.913Z",
"disclosures": [
{
"identifier": "_mNExInsl",
@@ -246,7 +246,7 @@
]
},
"https://trustedstack.com/tcf/gvl/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:46.565Z",
+ "timestamp": "2026-06-15T17:39:42.577Z",
"disclosures": [
{
"identifier": "usp_status",
@@ -262,6 +262,43 @@
]
}
},
+ "purposes": {
+ "142": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "specialFeatures": []
+ },
+ "1288": {
+ "purposes": [
+ 1,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/medianetRtdProvider.json b/metadata/modules/medianetRtdProvider.json
index 4a198feed0f..6e3c4d1d409 100644
--- a/metadata/modules/medianetRtdProvider.json
+++ b/metadata/modules/medianetRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/mediasniperBidAdapter.json b/metadata/modules/mediasniperBidAdapter.json
index 10e1fc2a2fa..0bbb2e7fade 100644
--- a/metadata/modules/mediasniperBidAdapter.json
+++ b/metadata/modules/mediasniperBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/mediasquareBidAdapter.json b/metadata/modules/mediasquareBidAdapter.json
index 0d89fa4d263..f2fab87569e 100644
--- a/metadata/modules/mediasquareBidAdapter.json
+++ b/metadata/modules/mediasquareBidAdapter.json
@@ -2,10 +2,21 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://mediasquare.fr/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:46.648Z",
+ "timestamp": "2026-06-15T17:39:42.803Z",
"disclosures": []
}
},
+ "purposes": {
+ "791": {
+ "purposes": [
+ 1,
+ 2
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/merkleIdSystem.json b/metadata/modules/merkleIdSystem.json
index cc32ff4c32c..d69f3a37301 100644
--- a/metadata/modules/merkleIdSystem.json
+++ b/metadata/modules/merkleIdSystem.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/mgidBidAdapter.json b/metadata/modules/mgidBidAdapter.json
index d669f0b4de2..23ff184bea1 100644
--- a/metadata/modules/mgidBidAdapter.json
+++ b/metadata/modules/mgidBidAdapter.json
@@ -2,8 +2,93 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://www.mgid.com/assets/devicestorage.json": {
- "timestamp": "2026-05-18T20:04:47.376Z",
- "disclosures": []
+ "timestamp": "2026-06-15T17:39:43.325Z",
+ "disclosures": [
+ {
+ "identifier": "_mgPbSessionId",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1,
+ 7,
+ 9
+ ]
+ },
+ {
+ "identifier": "_mgPbSessionPagesNumber",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1,
+ 7,
+ 9
+ ]
+ },
+ {
+ "identifier": "_mgPbSessionsTimeList",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1,
+ 7,
+ 9
+ ]
+ },
+ {
+ "identifier": "_mgPbViewrate",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1,
+ 7
+ ]
+ },
+ {
+ "identifier": "mgMuidn",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10
+ ]
+ }
+ ]
+ }
+ },
+ "purposes": {
+ "358": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": []
}
},
"components": [
diff --git a/metadata/modules/mgidRtdProvider.json b/metadata/modules/mgidRtdProvider.json
index 25b048dddc3..3578ab1c3f4 100644
--- a/metadata/modules/mgidRtdProvider.json
+++ b/metadata/modules/mgidRtdProvider.json
@@ -2,8 +2,93 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://www.mgid.com/assets/devicestorage.json": {
- "timestamp": "2026-05-18T20:04:47.596Z",
- "disclosures": []
+ "timestamp": "2026-06-15T17:39:43.450Z",
+ "disclosures": [
+ {
+ "identifier": "_mgPbSessionId",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1,
+ 7,
+ 9
+ ]
+ },
+ {
+ "identifier": "_mgPbSessionPagesNumber",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1,
+ 7,
+ 9
+ ]
+ },
+ {
+ "identifier": "_mgPbSessionsTimeList",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1,
+ 7,
+ 9
+ ]
+ },
+ {
+ "identifier": "_mgPbViewrate",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1,
+ 7
+ ]
+ },
+ {
+ "identifier": "mgMuidn",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10
+ ]
+ }
+ ]
+ }
+ },
+ "purposes": {
+ "358": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": []
}
},
"components": [
diff --git a/metadata/modules/mgidXBidAdapter.json b/metadata/modules/mgidXBidAdapter.json
index 42f7c5835af..2e7c922d26b 100644
--- a/metadata/modules/mgidXBidAdapter.json
+++ b/metadata/modules/mgidXBidAdapter.json
@@ -2,8 +2,93 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://www.mgid.com/assets/devicestorage.json": {
- "timestamp": "2026-05-18T20:04:47.596Z",
- "disclosures": []
+ "timestamp": "2026-06-15T17:39:43.450Z",
+ "disclosures": [
+ {
+ "identifier": "_mgPbSessionId",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1,
+ 7,
+ 9
+ ]
+ },
+ {
+ "identifier": "_mgPbSessionPagesNumber",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1,
+ 7,
+ 9
+ ]
+ },
+ {
+ "identifier": "_mgPbSessionsTimeList",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1,
+ 7,
+ 9
+ ]
+ },
+ {
+ "identifier": "_mgPbViewrate",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1,
+ 7
+ ]
+ },
+ {
+ "identifier": "mgMuidn",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10
+ ]
+ }
+ ]
+ }
+ },
+ "purposes": {
+ "358": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": []
}
},
"components": [
diff --git a/metadata/modules/michaoBidAdapter.json b/metadata/modules/michaoBidAdapter.json
index ad4738bd330..b9548baf8d6 100644
--- a/metadata/modules/michaoBidAdapter.json
+++ b/metadata/modules/michaoBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/microadBidAdapter.json b/metadata/modules/microadBidAdapter.json
index dadbbe5dfe4..15fb4590e0a 100644
--- a/metadata/modules/microadBidAdapter.json
+++ b/metadata/modules/microadBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/mileBidAdapter.json b/metadata/modules/mileBidAdapter.json
index ba3e8b683fc..567f2a069a7 100644
--- a/metadata/modules/mileBidAdapter.json
+++ b/metadata/modules/mileBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/mileRtdProvider.json b/metadata/modules/mileRtdProvider.json
index e4420a295c5..03d79c236a6 100644
--- a/metadata/modules/mileRtdProvider.json
+++ b/metadata/modules/mileRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/minutemediaBidAdapter.json b/metadata/modules/minutemediaBidAdapter.json
index 3238b564e92..685a39a87bd 100644
--- a/metadata/modules/minutemediaBidAdapter.json
+++ b/metadata/modules/minutemediaBidAdapter.json
@@ -2,10 +2,31 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://disclosures.mmctsvc.com/device-storage.json": {
- "timestamp": "2026-05-18T20:04:47.597Z",
+ "timestamp": "2026-06-15T17:39:43.450Z",
"disclosures": []
}
},
+ "purposes": {
+ "918": {
+ "purposes": [
+ 1,
+ 2,
+ 5,
+ 6
+ ],
+ "legIntPurposes": [
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "flexiblePurposes": [
+ 2
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/missenaBidAdapter.json b/metadata/modules/missenaBidAdapter.json
index eb2dfa05443..6511111ecb4 100644
--- a/metadata/modules/missenaBidAdapter.json
+++ b/metadata/modules/missenaBidAdapter.json
@@ -2,10 +2,26 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://ad.missena.io/iab.json": {
- "timestamp": "2026-05-18T20:04:47.729Z",
+ "timestamp": "2026-06-15T17:39:43.572Z",
"disclosures": []
}
},
+ "purposes": {
+ "687": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/mobfoxpbBidAdapter.json b/metadata/modules/mobfoxpbBidAdapter.json
index 4c25483443b..b3a41a22c88 100644
--- a/metadata/modules/mobfoxpbBidAdapter.json
+++ b/metadata/modules/mobfoxpbBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/mobianRtdProvider.json b/metadata/modules/mobianRtdProvider.json
index 8a81da9d6f9..0cd7fd42e56 100644
--- a/metadata/modules/mobianRtdProvider.json
+++ b/metadata/modules/mobianRtdProvider.json
@@ -2,10 +2,20 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://js.outcomes.net/tcf.json": {
- "timestamp": "2026-05-18T20:04:48.017Z",
+ "timestamp": "2026-06-15T17:39:43.956Z",
"disclosures": []
}
},
+ "purposes": {
+ "1348": {
+ "purposes": [
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/mobilefuseBidAdapter.json b/metadata/modules/mobilefuseBidAdapter.json
index 5ad02f2fdbe..4fc69271645 100644
--- a/metadata/modules/mobilefuseBidAdapter.json
+++ b/metadata/modules/mobilefuseBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/mobkoiAnalyticsAdapter.json b/metadata/modules/mobkoiAnalyticsAdapter.json
index 41547550cbd..ca4f8b5f04f 100644
--- a/metadata/modules/mobkoiAnalyticsAdapter.json
+++ b/metadata/modules/mobkoiAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/mobkoiBidAdapter.json b/metadata/modules/mobkoiBidAdapter.json
index b6179ab8583..4eb39f706f3 100644
--- a/metadata/modules/mobkoiBidAdapter.json
+++ b/metadata/modules/mobkoiBidAdapter.json
@@ -2,10 +2,23 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.maximus.mobkoi.com/tcf/deviceStorageDisclosure.json": {
- "timestamp": "2026-05-18T20:04:48.329Z",
+ "timestamp": "2026-06-15T17:39:44.322Z",
"disclosures": []
}
},
+ "purposes": {
+ "898": {
+ "purposes": [
+ 1,
+ 2,
+ 7,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/mobkoiIdSystem.json b/metadata/modules/mobkoiIdSystem.json
index a3f33404559..5b57bef97a5 100644
--- a/metadata/modules/mobkoiIdSystem.json
+++ b/metadata/modules/mobkoiIdSystem.json
@@ -2,10 +2,23 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.maximus.mobkoi.com/tcf/deviceStorageDisclosure.json": {
- "timestamp": "2026-05-18T20:04:48.701Z",
+ "timestamp": "2026-06-15T17:39:44.431Z",
"disclosures": []
}
},
+ "purposes": {
+ "898": {
+ "purposes": [
+ 1,
+ 2,
+ 7,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/movingupBidAdapter.json b/metadata/modules/movingupBidAdapter.json
index 8ad3fcc76f5..c9e84f204d1 100644
--- a/metadata/modules/movingupBidAdapter.json
+++ b/metadata/modules/movingupBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/msftBidAdapter.json b/metadata/modules/msftBidAdapter.json
index 291e42349af..de8601c875b 100644
--- a/metadata/modules/msftBidAdapter.json
+++ b/metadata/modules/msftBidAdapter.json
@@ -2,10 +2,32 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://acdn.adnxs.com/gvl/1d/xandrdevicestoragedisclosures.json": {
- "timestamp": "2026-05-18T20:04:48.701Z",
+ "timestamp": "2026-06-15T17:39:44.432Z",
"disclosures": []
}
},
+ "purposes": {
+ "32": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
@@ -13,6 +35,20 @@
"aliasOf": null,
"gvlid": 32,
"disclosureURL": "https://acdn.adnxs.com/gvl/1d/xandrdevicestoragedisclosures.json"
+ },
+ {
+ "componentType": "bidder",
+ "componentName": "oftmedia",
+ "aliasOf": "msft",
+ "gvlid": 32,
+ "disclosureURL": "https://acdn.adnxs.com/gvl/1d/xandrdevicestoragedisclosures.json"
+ },
+ {
+ "componentType": "bidder",
+ "componentName": "msftstaila",
+ "aliasOf": "msft",
+ "gvlid": 32,
+ "disclosureURL": "https://acdn.adnxs.com/gvl/1d/xandrdevicestoragedisclosures.json"
}
]
}
\ No newline at end of file
diff --git a/metadata/modules/mtcBidAdapter.json b/metadata/modules/mtcBidAdapter.json
index fb175544e63..90cad9ab5a0 100644
--- a/metadata/modules/mtcBidAdapter.json
+++ b/metadata/modules/mtcBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/mwOpenLinkIdSystem.json b/metadata/modules/mwOpenLinkIdSystem.json
index d138e555c96..8cb80f2dba6 100644
--- a/metadata/modules/mwOpenLinkIdSystem.json
+++ b/metadata/modules/mwOpenLinkIdSystem.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/my6senseBidAdapter.json b/metadata/modules/my6senseBidAdapter.json
index 25457451e98..da5ef18bda7 100644
--- a/metadata/modules/my6senseBidAdapter.json
+++ b/metadata/modules/my6senseBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/mycodemediaBidAdapter.json b/metadata/modules/mycodemediaBidAdapter.json
index 6fdf70e5b1f..4a1822c137d 100644
--- a/metadata/modules/mycodemediaBidAdapter.json
+++ b/metadata/modules/mycodemediaBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/mygaruIdSystem.json b/metadata/modules/mygaruIdSystem.json
index af8246c0ccc..2374f457890 100644
--- a/metadata/modules/mygaruIdSystem.json
+++ b/metadata/modules/mygaruIdSystem.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/mytargetBidAdapter.json b/metadata/modules/mytargetBidAdapter.json
index abe7501341a..29c30ad7074 100644
--- a/metadata/modules/mytargetBidAdapter.json
+++ b/metadata/modules/mytargetBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/nativeryBidAdapter.json b/metadata/modules/nativeryBidAdapter.json
index ab5294f8636..66058f4bb7a 100644
--- a/metadata/modules/nativeryBidAdapter.json
+++ b/metadata/modules/nativeryBidAdapter.json
@@ -2,10 +2,24 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdnimg.nativery.com/widget/js/deviceStorageDisclosure.json": {
- "timestamp": "2026-05-18T20:04:48.702Z",
+ "timestamp": "2026-06-15T17:39:44.433Z",
"disclosures": []
}
},
+ "purposes": {
+ "1133": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/nativoBidAdapter.json b/metadata/modules/nativoBidAdapter.json
index df30f220781..fc9f9b71b41 100644
--- a/metadata/modules/nativoBidAdapter.json
+++ b/metadata/modules/nativoBidAdapter.json
@@ -2,10 +2,27 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://iab.nativo.com/tcf-disclosures.json": {
- "timestamp": "2026-05-18T20:04:49.201Z",
+ "timestamp": "2026-06-15T17:39:44.944Z",
"disclosures": []
}
},
+ "purposes": {
+ "263": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/naveggIdSystem.json b/metadata/modules/naveggIdSystem.json
index d3594beccf8..86ebcb35096 100644
--- a/metadata/modules/naveggIdSystem.json
+++ b/metadata/modules/naveggIdSystem.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/netIdSystem.json b/metadata/modules/netIdSystem.json
index d0f489fa809..e07e244598a 100644
--- a/metadata/modules/netIdSystem.json
+++ b/metadata/modules/netIdSystem.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/neuwoRtdProvider.json b/metadata/modules/neuwoRtdProvider.json
index 192b90186c2..b1845bede9b 100644
--- a/metadata/modules/neuwoRtdProvider.json
+++ b/metadata/modules/neuwoRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/newspassidBidAdapter.json b/metadata/modules/newspassidBidAdapter.json
index 46fac8088dd..fd9cd859e10 100644
--- a/metadata/modules/newspassidBidAdapter.json
+++ b/metadata/modules/newspassidBidAdapter.json
@@ -1,18 +1,42 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
- "https://www.aditude.com/storageaccess.json": {
- "timestamp": "2026-05-18T20:04:49.386Z",
+ "https://cdn-prod.aditude.com/storageaccess.json": {
+ "timestamp": "2026-06-15T17:39:45.121Z",
"disclosures": []
}
},
+ "purposes": {
+ "1317": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
"componentName": "newspassid",
"aliasOf": null,
"gvlid": 1317,
- "disclosureURL": "https://www.aditude.com/storageaccess.json"
+ "disclosureURL": "https://cdn-prod.aditude.com/storageaccess.json"
}
]
}
\ No newline at end of file
diff --git a/metadata/modules/nextMillenniumBidAdapter.json b/metadata/modules/nextMillenniumBidAdapter.json
index 0c63ac6b502..59a82cd799f 100644
--- a/metadata/modules/nextMillenniumBidAdapter.json
+++ b/metadata/modules/nextMillenniumBidAdapter.json
@@ -2,10 +2,24 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://nextmillennium.io/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:49.387Z",
+ "timestamp": "2026-06-15T17:39:45.121Z",
"disclosures": []
}
},
+ "purposes": {
+ "1060": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/nextrollBidAdapter.json b/metadata/modules/nextrollBidAdapter.json
index e0679fc63a4..b00f4e03142 100644
--- a/metadata/modules/nextrollBidAdapter.json
+++ b/metadata/modules/nextrollBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://s.adroll.com/shares/device_storage.json": {
- "timestamp": "2026-05-18T20:04:49.670Z",
+ "timestamp": "2026-06-15T17:39:45.430Z",
"disclosures": [
{
"identifier": "__adroll_fpc",
@@ -92,6 +92,24 @@
]
}
},
+ "purposes": {
+ "130": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/nexverseBidAdapter.json b/metadata/modules/nexverseBidAdapter.json
index cf19ed74603..24a33ee5c98 100644
--- a/metadata/modules/nexverseBidAdapter.json
+++ b/metadata/modules/nexverseBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/nexx360BidAdapter.json b/metadata/modules/nexx360BidAdapter.json
index f34dd5e0e4b..cc2d172a5a1 100644
--- a/metadata/modules/nexx360BidAdapter.json
+++ b/metadata/modules/nexx360BidAdapter.json
@@ -2,19 +2,19 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://fast.nexx360.io/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:52.030Z",
+ "timestamp": "2026-06-15T17:39:47.866Z",
"disclosures": []
},
"https://static.first-id.fr/tcf/cookie.json": {
- "timestamp": "2026-05-18T20:04:50.117Z",
+ "timestamp": "2026-06-15T17:39:45.628Z",
"disclosures": []
},
"https://i.plug.it/banners/js/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:50.670Z",
+ "timestamp": "2026-06-15T17:39:45.769Z",
"disclosures": []
},
"https://player.glomex.com/.well-known/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:51.376Z",
+ "timestamp": "2026-06-15T17:39:46.819Z",
"disclosures": [
{
"identifier": "glomexUser",
@@ -32,6 +32,15 @@
10
]
},
+ {
+ "identifier": "turboPlayerProfile",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1
+ ]
+ },
{
"identifier": "ET_EventCollector_SessionInstallationId",
"type": "web",
@@ -46,7 +55,7 @@
]
},
"https://gdpr.pubx.ai/devicestoragedisclosure.json": {
- "timestamp": "2026-05-18T20:04:51.376Z",
+ "timestamp": "2026-06-15T17:39:46.819Z",
"disclosures": [
{
"identifier": "pubx:defaults",
@@ -60,9 +69,148 @@
}
]
},
- "https://yieldbird.com/devicestorage.json": {
- "timestamp": "2026-05-18T20:04:51.556Z",
- "disclosures": []
+ "https://yieldbird.com/device-storage-disclosure.json": {
+ "timestamp": "2026-06-15T17:39:47.137Z",
+ "disclosures": [
+ {
+ "identifier": "pm_utm_*",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1,
+ 7,
+ 9,
+ 10
+ ],
+ "specialPurposes": [],
+ "description": "First-party web storage used by Yieldbird PrebidManager to persist UTM campaign parameters for operational analytics, advertising performance measurement, audience statistics and service improvement."
+ },
+ {
+ "identifier": "yb_ab_test",
+ "type": "cookie",
+ "maxAgeSeconds": 604800,
+ "cookieRefresh": false,
+ "purposes": [
+ 1,
+ 7,
+ 9,
+ 10
+ ],
+ "specialPurposes": [],
+ "description": "Cookie used by Yieldbird QW wrapper to assign and persist A/B test participation for advertising performance measurement, audience statistics and service improvement."
+ },
+ {
+ "identifier": "yb_ab_test",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1,
+ 7,
+ 9,
+ 10
+ ],
+ "specialPurposes": [],
+ "description": "Session storage used by Yieldbird QW wrapper to assign and persist A/B test participation for advertising performance measurement, audience statistics and service improvement."
+ }
+ ]
+ }
+ },
+ "purposes": {
+ "965": {
+ "purposes": [
+ 1
+ ],
+ "legIntPurposes": [
+ 10
+ ],
+ "flexiblePurposes": [
+ 10
+ ],
+ "specialFeatures": []
+ },
+ "967": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 6,
+ 9
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 8,
+ 10,
+ 11
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8,
+ 10,
+ 11
+ ],
+ "specialFeatures": []
+ },
+ "1068": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ },
+ "1178": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 2
+ ]
+ },
+ "1253": {
+ "purposes": [
+ 1,
+ 2
+ ],
+ "legIntPurposes": [
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ },
+ "1485": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
}
},
"components": [
@@ -176,7 +324,7 @@
"componentName": "ybidder",
"aliasOf": "nexx360",
"gvlid": 1253,
- "disclosureURL": "https://yieldbird.com/devicestorage.json"
+ "disclosureURL": "https://yieldbird.com/device-storage-disclosure.json"
},
{
"componentType": "bidder",
diff --git a/metadata/modules/nobidAnalyticsAdapter.json b/metadata/modules/nobidAnalyticsAdapter.json
index 53046516795..097eebb4c6b 100644
--- a/metadata/modules/nobidAnalyticsAdapter.json
+++ b/metadata/modules/nobidAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/nobidBidAdapter.json b/metadata/modules/nobidBidAdapter.json
index 5c859e4933b..448dd238507 100644
--- a/metadata/modules/nobidBidAdapter.json
+++ b/metadata/modules/nobidBidAdapter.json
@@ -2,10 +2,23 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://public.servenobid.com/gdpr_tcf/vendor_device_storage_operational_disclosures.json": {
- "timestamp": "2026-05-18T20:04:52.031Z",
+ "timestamp": "2026-06-15T17:39:47.866Z",
"disclosures": []
}
},
+ "purposes": {
+ "816": {
+ "purposes": [
+ 1,
+ 2,
+ 7,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/nodalsAiRtdProvider.json b/metadata/modules/nodalsAiRtdProvider.json
index c81c6776035..159169e6687 100644
--- a/metadata/modules/nodalsAiRtdProvider.json
+++ b/metadata/modules/nodalsAiRtdProvider.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://static.nodals.ai/vendor.json": {
- "timestamp": "2026-05-18T20:04:52.089Z",
+ "timestamp": "2026-06-15T17:39:47.921Z",
"disclosures": [
{
"identifier": "localStorage",
@@ -19,6 +19,20 @@
]
}
},
+ "purposes": {
+ "1360": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/novatiqIdSystem.json b/metadata/modules/novatiqIdSystem.json
index 7f8750bda69..2bd7b94a2ad 100644
--- a/metadata/modules/novatiqIdSystem.json
+++ b/metadata/modules/novatiqIdSystem.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://novatiq.com/privacy/iab/novatiq.json": {
- "timestamp": "2026-05-18T20:04:52.595Z",
+ "timestamp": "2026-06-15T17:39:48.095Z",
"disclosures": [
{
"identifier": "novatiq",
@@ -18,6 +18,18 @@
]
}
},
+ "purposes": {
+ "1119": {
+ "purposes": [
+ 1,
+ 7,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/ntvagentsBidAdapter.json b/metadata/modules/ntvagentsBidAdapter.json
index dda35e32a9b..413db390fb5 100644
--- a/metadata/modules/ntvagentsBidAdapter.json
+++ b/metadata/modules/ntvagentsBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/nubaBidAdapter.json b/metadata/modules/nubaBidAdapter.json
index 1ee19306146..08368d34fd5 100644
--- a/metadata/modules/nubaBidAdapter.json
+++ b/metadata/modules/nubaBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/oftmediaRtdProvider.json b/metadata/modules/oftmediaRtdProvider.json
index 2fb8627ad60..461dae835f5 100644
--- a/metadata/modules/oftmediaRtdProvider.json
+++ b/metadata/modules/oftmediaRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/oguryBidAdapter.json b/metadata/modules/oguryBidAdapter.json
index 1034032f066..42385611b02 100644
--- a/metadata/modules/oguryBidAdapter.json
+++ b/metadata/modules/oguryBidAdapter.json
@@ -2,10 +2,26 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://privacy.ogury.co/disclosure.json": {
- "timestamp": "2026-05-18T20:04:53.133Z",
+ "timestamp": "2026-06-15T17:39:48.765Z",
"disclosures": []
}
},
+ "purposes": {
+ "31": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/omnidexBidAdapter.json b/metadata/modules/omnidexBidAdapter.json
index f2730838e2a..0ad750e041d 100644
--- a/metadata/modules/omnidexBidAdapter.json
+++ b/metadata/modules/omnidexBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://www.omni-dex.io/devicestorage.json": {
- "timestamp": "2026-05-18T20:04:53.335Z",
+ "timestamp": "2026-06-15T17:39:49.188Z",
"disclosures": [
{
"identifier": "ck48wz12sqj7",
@@ -77,6 +77,25 @@
]
}
},
+ "purposes": {
+ "1463": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/omsBidAdapter.json b/metadata/modules/omsBidAdapter.json
index a712234d07f..dc9e3a68fd5 100644
--- a/metadata/modules/omsBidAdapter.json
+++ b/metadata/modules/omsBidAdapter.json
@@ -2,10 +2,24 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.marphezis.com/tcf-vendor-disclosures.json": {
- "timestamp": "2026-05-18T20:04:53.407Z",
+ "timestamp": "2026-06-15T17:39:49.302Z",
"disclosures": []
}
},
+ "purposes": {
+ "883": {
+ "purposes": [],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/oneKeyIdSystem.json b/metadata/modules/oneKeyIdSystem.json
index 0ac005ca6c0..f318fec7b02 100644
--- a/metadata/modules/oneKeyIdSystem.json
+++ b/metadata/modules/oneKeyIdSystem.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/oneKeyRtdProvider.json b/metadata/modules/oneKeyRtdProvider.json
index 437edfd3f43..67f054c7e13 100644
--- a/metadata/modules/oneKeyRtdProvider.json
+++ b/metadata/modules/oneKeyRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/onetagBidAdapter.json b/metadata/modules/onetagBidAdapter.json
index a5f868f9de2..0450ba51948 100644
--- a/metadata/modules/onetagBidAdapter.json
+++ b/metadata/modules/onetagBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://onetag-cdn.com/privacy/tcf_storage.json": {
- "timestamp": "2026-05-18T20:04:53.407Z",
+ "timestamp": "2026-06-15T17:39:49.303Z",
"disclosures": [
{
"identifier": "onetag_sid",
@@ -20,6 +20,27 @@
]
}
},
+ "purposes": {
+ "241": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [
+ 2,
+ 7
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/onomagicBidAdapter.json b/metadata/modules/onomagicBidAdapter.json
index 5d2f0c4cb31..86dd80eaf37 100644
--- a/metadata/modules/onomagicBidAdapter.json
+++ b/metadata/modules/onomagicBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/ooloAnalyticsAdapter.json b/metadata/modules/ooloAnalyticsAdapter.json
index c4d5e7ac853..0ac4e531365 100644
--- a/metadata/modules/ooloAnalyticsAdapter.json
+++ b/metadata/modules/ooloAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/opaMarketplaceBidAdapter.json b/metadata/modules/opaMarketplaceBidAdapter.json
index ecf55c03f45..72ca57af3ed 100644
--- a/metadata/modules/opaMarketplaceBidAdapter.json
+++ b/metadata/modules/opaMarketplaceBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/open8BidAdapter.json b/metadata/modules/open8BidAdapter.json
index 90db84d2462..aeab9dffc2d 100644
--- a/metadata/modules/open8BidAdapter.json
+++ b/metadata/modules/open8BidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/openPairIdSystem.json b/metadata/modules/openPairIdSystem.json
index dfe5580badf..449136a36dd 100644
--- a/metadata/modules/openPairIdSystem.json
+++ b/metadata/modules/openPairIdSystem.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/openwebBidAdapter.json b/metadata/modules/openwebBidAdapter.json
index 781adfee6e7..4e7b497f879 100644
--- a/metadata/modules/openwebBidAdapter.json
+++ b/metadata/modules/openwebBidAdapter.json
@@ -2,10 +2,30 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://spotim-prd-static-assets.s3.amazonaws.com/iab/device-storage.json": {
- "timestamp": "2026-05-18T20:04:53.833Z",
+ "timestamp": "2026-06-15T17:39:49.786Z",
"disclosures": []
}
},
+ "purposes": {
+ "280": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/openxBidAdapter.json b/metadata/modules/openxBidAdapter.json
index 47337691f99..dd6df2c6e3e 100644
--- a/metadata/modules/openxBidAdapter.json
+++ b/metadata/modules/openxBidAdapter.json
@@ -2,10 +2,30 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://www.openx.com/device-storage.json": {
- "timestamp": "2026-05-18T20:04:53.960Z",
+ "timestamp": "2026-06-15T17:39:50.050Z",
"disclosures": []
}
},
+ "purposes": {
+ "69": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 7,
+ 10,
+ 11
+ ],
+ "legIntPurposes": [
+ 2
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/operaadsBidAdapter.json b/metadata/modules/operaadsBidAdapter.json
index 3e317979b7f..9f39fe2a361 100644
--- a/metadata/modules/operaadsBidAdapter.json
+++ b/metadata/modules/operaadsBidAdapter.json
@@ -2,10 +2,30 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://res.adx.opera.com/dsd.json": {
- "timestamp": "2026-05-18T20:04:54.100Z",
+ "timestamp": "2026-06-15T17:39:50.508Z",
"disclosures": []
}
},
+ "purposes": {
+ "1135": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6
+ ],
+ "legIntPurposes": [
+ 7,
+ 8
+ ],
+ "flexiblePurposes": [
+ 2
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/operaadsIdSystem.json b/metadata/modules/operaadsIdSystem.json
index 0e1f4a3a4c5..cb2079257dc 100644
--- a/metadata/modules/operaadsIdSystem.json
+++ b/metadata/modules/operaadsIdSystem.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/oprxBidAdapter.json b/metadata/modules/oprxBidAdapter.json
index 8131b520f88..1065a99e29b 100644
--- a/metadata/modules/oprxBidAdapter.json
+++ b/metadata/modules/oprxBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/opscoBidAdapter.json b/metadata/modules/opscoBidAdapter.json
index 5a13b69035b..2a146f4e1d0 100644
--- a/metadata/modules/opscoBidAdapter.json
+++ b/metadata/modules/opscoBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/optableRtdProvider.json b/metadata/modules/optableRtdProvider.json
index 34ee0f1b3cd..d3763e9faae 100644
--- a/metadata/modules/optableRtdProvider.json
+++ b/metadata/modules/optableRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/optidigitalBidAdapter.json b/metadata/modules/optidigitalBidAdapter.json
index c715c02f3ac..21377cb33a9 100644
--- a/metadata/modules/optidigitalBidAdapter.json
+++ b/metadata/modules/optidigitalBidAdapter.json
@@ -2,10 +2,28 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://scripts.opti-digital.com/deviceStorageDisclosure.json": {
- "timestamp": "2026-05-18T20:04:54.239Z",
+ "timestamp": "2026-06-15T17:39:50.646Z",
"disclosures": []
}
},
+ "purposes": {
+ "915": {
+ "purposes": [
+ 1
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/optimeraRtdProvider.json b/metadata/modules/optimeraRtdProvider.json
index 62d5d1c3aa6..6ceb9011748 100644
--- a/metadata/modules/optimeraRtdProvider.json
+++ b/metadata/modules/optimeraRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/optimonAnalyticsAdapter.json b/metadata/modules/optimonAnalyticsAdapter.json
index b7cb643c969..331418ec184 100644
--- a/metadata/modules/optimonAnalyticsAdapter.json
+++ b/metadata/modules/optimonAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/optoutBidAdapter.json b/metadata/modules/optoutBidAdapter.json
index e038888f368..cc2e1a3bd42 100644
--- a/metadata/modules/optoutBidAdapter.json
+++ b/metadata/modules/optoutBidAdapter.json
@@ -2,10 +2,33 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://adserving.optoutadvertising.com/dsd": {
- "timestamp": "2026-05-18T20:04:54.364Z",
+ "timestamp": "2026-06-15T17:39:50.743Z",
"disclosures": []
}
},
+ "purposes": {
+ "227": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/orakiBidAdapter.json b/metadata/modules/orakiBidAdapter.json
index d013a2f0d16..83c5166febd 100644
--- a/metadata/modules/orakiBidAdapter.json
+++ b/metadata/modules/orakiBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/orbidderBidAdapter.json b/metadata/modules/orbidderBidAdapter.json
index ed951db46f2..b59bfae580c 100644
--- a/metadata/modules/orbidderBidAdapter.json
+++ b/metadata/modules/orbidderBidAdapter.json
@@ -2,10 +2,33 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://orbidder.otto.de/disclosure/dsd.json": {
- "timestamp": "2026-05-18T20:04:54.800Z",
+ "timestamp": "2026-06-15T17:39:51.216Z",
"disclosures": []
}
},
+ "purposes": {
+ "559": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 7,
+ 9,
+ 10
+ ],
+ "flexiblePurposes": [
+ 7,
+ 9,
+ 10
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/orbitsoftBidAdapter.json b/metadata/modules/orbitsoftBidAdapter.json
index 4859ce12a99..31a8547a55c 100644
--- a/metadata/modules/orbitsoftBidAdapter.json
+++ b/metadata/modules/orbitsoftBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/otmBidAdapter.json b/metadata/modules/otmBidAdapter.json
index 0d280e1c6d4..f714f3ff4ba 100644
--- a/metadata/modules/otmBidAdapter.json
+++ b/metadata/modules/otmBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/outbrainBidAdapter.json b/metadata/modules/outbrainBidAdapter.json
index bbc298c701b..8026cd00de8 100644
--- a/metadata/modules/outbrainBidAdapter.json
+++ b/metadata/modules/outbrainBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://www.outbrain.com/privacy/wp-json/privacy/v2/devicestorage.json": {
- "timestamp": "2026-05-18T20:04:55.185Z",
+ "timestamp": "2026-06-15T17:39:51.680Z",
"disclosures": [
{
"identifier": "dicbo_id",
@@ -19,6 +19,28 @@
]
}
},
+ "purposes": {
+ "164": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/overtoneRtdProvider.json b/metadata/modules/overtoneRtdProvider.json
index 5f6f27c2d19..322345ca1fb 100644
--- a/metadata/modules/overtoneRtdProvider.json
+++ b/metadata/modules/overtoneRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/ownadxBidAdapter.json b/metadata/modules/ownadxBidAdapter.json
index 16987e2ba02..2cc18409f7c 100644
--- a/metadata/modules/ownadxBidAdapter.json
+++ b/metadata/modules/ownadxBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/oxxionAnalyticsAdapter.json b/metadata/modules/oxxionAnalyticsAdapter.json
index d2e6bc3d692..5581165a81e 100644
--- a/metadata/modules/oxxionAnalyticsAdapter.json
+++ b/metadata/modules/oxxionAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/oxxionRtdProvider.json b/metadata/modules/oxxionRtdProvider.json
index 678dae3a7f0..8f1d86a8ded 100644
--- a/metadata/modules/oxxionRtdProvider.json
+++ b/metadata/modules/oxxionRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/ozoneBidAdapter.json b/metadata/modules/ozoneBidAdapter.json
index 1ac102c60e8..82630651067 100644
--- a/metadata/modules/ozoneBidAdapter.json
+++ b/metadata/modules/ozoneBidAdapter.json
@@ -2,10 +2,30 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://prebid.the-ozone-project.com/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:55.269Z",
+ "timestamp": "2026-06-15T17:39:52.019Z",
"disclosures": []
}
},
+ "purposes": {
+ "524": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/padsquadBidAdapter.json b/metadata/modules/padsquadBidAdapter.json
index 1f6cbb46357..e299a2ef0c3 100644
--- a/metadata/modules/padsquadBidAdapter.json
+++ b/metadata/modules/padsquadBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/pairIdSystem.json b/metadata/modules/pairIdSystem.json
index 45c93beaa6c..87c630c97f8 100644
--- a/metadata/modules/pairIdSystem.json
+++ b/metadata/modules/pairIdSystem.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://www.gstatic.com/iabtcf/deviceStorageDisclosure.json": {
- "timestamp": "2026-05-18T20:04:55.497Z",
+ "timestamp": "2026-06-15T17:39:52.277Z",
"disclosures": [
{
"identifier": "__gads",
@@ -410,6 +410,28 @@
]
}
},
+ "purposes": {
+ "755": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/pangleBidAdapter.json b/metadata/modules/pangleBidAdapter.json
index 4de50503bb9..8a036bf9f50 100644
--- a/metadata/modules/pangleBidAdapter.json
+++ b/metadata/modules/pangleBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/panxoBidAdapter.json b/metadata/modules/panxoBidAdapter.json
index ab327d4978e..9afbb18252c 100644
--- a/metadata/modules/panxoBidAdapter.json
+++ b/metadata/modules/panxoBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.panxo.ai/tcf/device-storage.json": {
- "timestamp": "2026-05-18T20:04:55.700Z",
+ "timestamp": "2026-06-15T17:39:52.358Z",
"disclosures": [
{
"identifier": "panxo_uid",
@@ -34,6 +34,31 @@
]
}
},
+ "purposes": {
+ "1527": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 5,
+ 6,
+ 8,
+ 11
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 9
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/panxoRtdProvider.json b/metadata/modules/panxoRtdProvider.json
index 5ad682b104d..45252b3bf3b 100644
--- a/metadata/modules/panxoRtdProvider.json
+++ b/metadata/modules/panxoRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/performaxBidAdapter.json b/metadata/modules/performaxBidAdapter.json
index 4a109f5e0ae..cc15a1f124d 100644
--- a/metadata/modules/performaxBidAdapter.json
+++ b/metadata/modules/performaxBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://www.performax.cz/device_storage.json": {
- "timestamp": "2026-05-18T20:04:55.894Z",
+ "timestamp": "2026-06-15T17:39:52.657Z",
"disclosures": [
{
"identifier": "px2uid",
@@ -15,6 +15,23 @@
]
}
},
+ "purposes": {
+ "732": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/permutiveIdentityManagerIdSystem.json b/metadata/modules/permutiveIdentityManagerIdSystem.json
index b0000cbe630..0a209af2cfa 100644
--- a/metadata/modules/permutiveIdentityManagerIdSystem.json
+++ b/metadata/modules/permutiveIdentityManagerIdSystem.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://assets.permutive.app/tcf/tcf.json": {
- "timestamp": "2026-05-18T20:04:56.471Z",
+ "timestamp": "2026-06-15T17:39:53.537Z",
"disclosures": [
{
"identifier": "_pdfps",
@@ -274,6 +274,7 @@
]
}
},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/permutiveRtdProvider.json b/metadata/modules/permutiveRtdProvider.json
index 37586efd5be..f6f770973a8 100644
--- a/metadata/modules/permutiveRtdProvider.json
+++ b/metadata/modules/permutiveRtdProvider.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://assets.permutive.app/tcf/tcf.json": {
- "timestamp": "2026-05-18T20:04:56.684Z",
+ "timestamp": "2026-06-15T17:39:53.848Z",
"disclosures": [
{
"identifier": "_pdfps",
@@ -274,6 +274,7 @@
]
}
},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/pgamdirectAnalyticsAdapter.json b/metadata/modules/pgamdirectAnalyticsAdapter.json
index c0842f59831..f39e7c2e62d 100644
--- a/metadata/modules/pgamdirectAnalyticsAdapter.json
+++ b/metadata/modules/pgamdirectAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/pgamdirectBidAdapter.json b/metadata/modules/pgamdirectBidAdapter.json
index f28865ccd57..beadf9a9ad4 100644
--- a/metadata/modules/pgamdirectBidAdapter.json
+++ b/metadata/modules/pgamdirectBidAdapter.json
@@ -2,10 +2,30 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://www.pgammedia.com/devicestorage.json": {
- "timestamp": "2026-05-18T20:04:56.685Z",
+ "timestamp": "2026-06-15T17:39:53.848Z",
"disclosures": []
}
},
+ "purposes": {
+ "1353": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/pgamsspBidAdapter.json b/metadata/modules/pgamsspBidAdapter.json
index 29237763d3b..320c7de7cfd 100644
--- a/metadata/modules/pgamsspBidAdapter.json
+++ b/metadata/modules/pgamsspBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/pianoDmpAnalyticsAdapter.json b/metadata/modules/pianoDmpAnalyticsAdapter.json
index 85e3e12caa6..0ed8c3a0aa2 100644
--- a/metadata/modules/pianoDmpAnalyticsAdapter.json
+++ b/metadata/modules/pianoDmpAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/pigeoonBidAdapter.json b/metadata/modules/pigeoonBidAdapter.json
index 99dda2a611b..e38eadb892f 100644
--- a/metadata/modules/pigeoonBidAdapter.json
+++ b/metadata/modules/pigeoonBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/pilotxBidAdapter.json b/metadata/modules/pilotxBidAdapter.json
index eec144974b5..1990be30e86 100644
--- a/metadata/modules/pilotxBidAdapter.json
+++ b/metadata/modules/pilotxBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/pinkLionBidAdapter.json b/metadata/modules/pinkLionBidAdapter.json
index 64bab5cbeb2..7f16e4cc059 100644
--- a/metadata/modules/pinkLionBidAdapter.json
+++ b/metadata/modules/pinkLionBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/pixfutureBidAdapter.json b/metadata/modules/pixfutureBidAdapter.json
index f7600419c14..0b96a754646 100644
--- a/metadata/modules/pixfutureBidAdapter.json
+++ b/metadata/modules/pixfutureBidAdapter.json
@@ -2,10 +2,26 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://www.pixfuture.com/vendor-disclosures.json": {
- "timestamp": "2026-05-18T20:04:56.799Z",
+ "timestamp": "2026-06-15T17:39:54.036Z",
"disclosures": []
}
},
+ "purposes": {
+ "839": {
+ "purposes": [
+ 1,
+ 2,
+ 7,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1,
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/playdigoBidAdapter.json b/metadata/modules/playdigoBidAdapter.json
index cda4b372796..74e96de2f36 100644
--- a/metadata/modules/playdigoBidAdapter.json
+++ b/metadata/modules/playdigoBidAdapter.json
@@ -2,10 +2,23 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://playdigo.com/file.json": {
- "timestamp": "2026-05-18T20:04:56.966Z",
+ "timestamp": "2026-06-15T17:39:54.227Z",
"disclosures": []
}
},
+ "purposes": {
+ "1302": {
+ "purposes": [
+ 1,
+ 2,
+ 7,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/playstreamBidAdapter.json b/metadata/modules/playstreamBidAdapter.json
index 67fd4f3c0e3..d6f112f6d29 100644
--- a/metadata/modules/playstreamBidAdapter.json
+++ b/metadata/modules/playstreamBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/prebid-core.json b/metadata/modules/prebid-core.json
index 59af0e979fe..498716e9dc2 100644
--- a/metadata/modules/prebid-core.json
+++ b/metadata/modules/prebid-core.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.jsdelivr.net/gh/prebid/Prebid.js/metadata/disclosures/prebid/probes.json": {
- "timestamp": "2026-05-18T20:03:46.492Z",
+ "timestamp": "2026-06-15T17:38:44.234Z",
"disclosures": [
{
"identifier": "_rdc*",
@@ -23,7 +23,7 @@
]
},
"https://cdn.jsdelivr.net/gh/prebid/Prebid.js/metadata/disclosures/prebid/debugging.json": {
- "timestamp": "2026-05-18T20:03:46.492Z",
+ "timestamp": "2026-06-15T17:38:44.234Z",
"disclosures": [
{
"identifier": "__*_debugging__",
@@ -35,6 +35,7 @@
]
}
},
+ "purposes": {},
"components": [
{
"componentType": "prebid",
diff --git a/metadata/modules/prebidServerBidAdapter.json b/metadata/modules/prebidServerBidAdapter.json
index 0638d1c4501..da099a2144c 100644
--- a/metadata/modules/prebidServerBidAdapter.json
+++ b/metadata/modules/prebidServerBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/precisoBidAdapter.json b/metadata/modules/precisoBidAdapter.json
index a516d7492b8..7f281a2fa6c 100644
--- a/metadata/modules/precisoBidAdapter.json
+++ b/metadata/modules/precisoBidAdapter.json
@@ -2,10 +2,10 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://preciso.net/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:57.218Z",
+ "timestamp": "2026-06-15T17:39:54.364Z",
"disclosures": [
{
- "identifier": "XXXXX_viewnew",
+ "identifier": "_pre|XXXXX",
"type": "cookie",
"maxAgeSeconds": 2592000,
"cookieRefresh": false,
@@ -31,7 +31,7 @@
]
},
{
- "identifier": "XXXXX_productnew_",
+ "identifier": "XXXXX_viewnew",
"type": "cookie",
"maxAgeSeconds": 2592000,
"cookieRefresh": false,
@@ -44,9 +44,9 @@
]
},
{
- "identifier": "fingerprint",
+ "identifier": "XXXXX_productnew_",
"type": "cookie",
- "maxAgeSeconds": 31104000,
+ "maxAgeSeconds": 2592000,
"cookieRefresh": false,
"purposes": [
1,
@@ -57,24 +57,20 @@
]
},
{
- "identifier": "_lgc|XXXXX_view",
- "type": "web",
- "maxAgeSeconds": null,
+ "identifier": "fingerprint",
+ "type": "cookie",
+ "maxAgeSeconds": 31104000,
"cookieRefresh": false,
"purposes": [
1,
3,
4,
5,
- 6,
- 7,
- 8,
- 9,
- 10
+ 6
]
},
{
- "identifier": "_lgc|XXXXX_conversion",
+ "identifier": "_pre|usrid15",
"type": "web",
"maxAgeSeconds": null,
"cookieRefresh": false,
@@ -91,7 +87,7 @@
]
},
{
- "identifier": "_lgc|XXXXX_fingerprint",
+ "identifier": "_pre|XXXXX",
"type": "web",
"maxAgeSeconds": null,
"cookieRefresh": false,
@@ -110,6 +106,26 @@
]
}
},
+ "purposes": {
+ "874": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/prismaBidAdapter.json b/metadata/modules/prismaBidAdapter.json
index e109f5071b2..4e5e793a45d 100644
--- a/metadata/modules/prismaBidAdapter.json
+++ b/metadata/modules/prismaBidAdapter.json
@@ -2,10 +2,24 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://fast.nexx360.io/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:57.570Z",
+ "timestamp": "2026-06-15T17:39:54.841Z",
"disclosures": []
}
},
+ "purposes": {
+ "965": {
+ "purposes": [
+ 1
+ ],
+ "legIntPurposes": [
+ 10
+ ],
+ "flexiblePurposes": [
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/programmaticXBidAdapter.json b/metadata/modules/programmaticXBidAdapter.json
index 262980003fc..13907276b2b 100644
--- a/metadata/modules/programmaticXBidAdapter.json
+++ b/metadata/modules/programmaticXBidAdapter.json
@@ -2,10 +2,24 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://progrtb.com/tcf-vendor-disclosures.json": {
- "timestamp": "2026-05-18T20:04:57.570Z",
+ "timestamp": "2026-06-15T17:39:54.841Z",
"disclosures": []
}
},
+ "purposes": {
+ "1344": {
+ "purposes": [],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/programmaticaBidAdapter.json b/metadata/modules/programmaticaBidAdapter.json
index 2226a89e03a..04448bc2dc4 100644
--- a/metadata/modules/programmaticaBidAdapter.json
+++ b/metadata/modules/programmaticaBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/proxistoreBidAdapter.json b/metadata/modules/proxistoreBidAdapter.json
index df90835373e..be1ee4bfc6e 100644
--- a/metadata/modules/proxistoreBidAdapter.json
+++ b/metadata/modules/proxistoreBidAdapter.json
@@ -2,10 +2,31 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://abs.proxistore.com/assets/json/proxistore_device_storage_disclosure.json": {
- "timestamp": "2026-05-18T20:04:57.809Z",
+ "timestamp": "2026-06-15T17:39:55.194Z",
"disclosures": []
}
},
+ "purposes": {
+ "418": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [
+ 2
+ ],
+ "flexiblePurposes": [
+ 2
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/pstudioBidAdapter.json b/metadata/modules/pstudioBidAdapter.json
index 28f48b1054e..4d49cf72165 100644
--- a/metadata/modules/pstudioBidAdapter.json
+++ b/metadata/modules/pstudioBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/pubCircleBidAdapter.json b/metadata/modules/pubCircleBidAdapter.json
index 650099f73fa..6b84280c6f5 100644
--- a/metadata/modules/pubCircleBidAdapter.json
+++ b/metadata/modules/pubCircleBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/pubProvidedIdSystem.json b/metadata/modules/pubProvidedIdSystem.json
index 23a8f180280..9074b016680 100644
--- a/metadata/modules/pubProvidedIdSystem.json
+++ b/metadata/modules/pubProvidedIdSystem.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/pubgeniusBidAdapter.json b/metadata/modules/pubgeniusBidAdapter.json
index a7e8d6fa90e..e785cec22ad 100644
--- a/metadata/modules/pubgeniusBidAdapter.json
+++ b/metadata/modules/pubgeniusBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/publicGoodBidAdapter.json b/metadata/modules/publicGoodBidAdapter.json
index a492629c705..f4a915cf8f7 100644
--- a/metadata/modules/publicGoodBidAdapter.json
+++ b/metadata/modules/publicGoodBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/publinkIdSystem.json b/metadata/modules/publinkIdSystem.json
index 84ec35adad3..a3967f9ffa8 100644
--- a/metadata/modules/publinkIdSystem.json
+++ b/metadata/modules/publinkIdSystem.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://s-usweb.dotomi.com/assets/js/taggy-js/2.18.13/device_storage_disclosure.json": {
- "timestamp": "2026-05-18T20:04:58.663Z",
+ "timestamp": "2026-06-15T17:39:56.214Z",
"disclosures": [
{
"identifier": "dtm_status",
@@ -579,6 +579,26 @@
]
}
},
+ "purposes": {
+ "24": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/publirBidAdapter.json b/metadata/modules/publirBidAdapter.json
index 3647acc5629..ecf6ddc755d 100644
--- a/metadata/modules/publirBidAdapter.json
+++ b/metadata/modules/publirBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/pubmaticAnalyticsAdapter.json b/metadata/modules/pubmaticAnalyticsAdapter.json
index 47efb5b7317..bc95817a4aa 100644
--- a/metadata/modules/pubmaticAnalyticsAdapter.json
+++ b/metadata/modules/pubmaticAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/pubmaticBidAdapter.json b/metadata/modules/pubmaticBidAdapter.json
index 4ff92ce98b8..b897037efb2 100644
--- a/metadata/modules/pubmaticBidAdapter.json
+++ b/metadata/modules/pubmaticBidAdapter.json
@@ -2,10 +2,34 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.pubmatic.com/devicestorage.json": {
- "timestamp": "2026-05-18T20:04:58.664Z",
+ "timestamp": "2026-06-15T17:39:56.214Z",
"disclosures": []
}
},
+ "purposes": {
+ "76": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/pubmaticIdSystem.json b/metadata/modules/pubmaticIdSystem.json
index 07b714f6990..ebf06f60671 100644
--- a/metadata/modules/pubmaticIdSystem.json
+++ b/metadata/modules/pubmaticIdSystem.json
@@ -2,10 +2,34 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.pubmatic.com/devicestorage.json": {
- "timestamp": "2026-05-18T20:04:58.880Z",
+ "timestamp": "2026-06-15T17:39:56.313Z",
"disclosures": []
}
},
+ "purposes": {
+ "76": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/pubmaticRtdProvider.json b/metadata/modules/pubmaticRtdProvider.json
index a2042bad84a..31743cddf0c 100644
--- a/metadata/modules/pubmaticRtdProvider.json
+++ b/metadata/modules/pubmaticRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/pubperfAnalyticsAdapter.json b/metadata/modules/pubperfAnalyticsAdapter.json
index 43ed6768049..615079f15c9 100644
--- a/metadata/modules/pubperfAnalyticsAdapter.json
+++ b/metadata/modules/pubperfAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/pubriseBidAdapter.json b/metadata/modules/pubriseBidAdapter.json
index b6c5ffdbbe8..33dd28cd459 100644
--- a/metadata/modules/pubriseBidAdapter.json
+++ b/metadata/modules/pubriseBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/pubstackAnalyticsAdapter.json b/metadata/modules/pubstackAnalyticsAdapter.json
index d34d4998cec..ab2db69e705 100644
--- a/metadata/modules/pubstackAnalyticsAdapter.json
+++ b/metadata/modules/pubstackAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/pubstackBidAdapter.json b/metadata/modules/pubstackBidAdapter.json
index 1ebd7c9fa12..c6d060ebbb3 100644
--- a/metadata/modules/pubstackBidAdapter.json
+++ b/metadata/modules/pubstackBidAdapter.json
@@ -2,10 +2,27 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.pbstck.com/privacy_policies/device_storage_disclosures.json": {
- "timestamp": "2026-05-18T20:04:58.969Z",
+ "timestamp": "2026-06-15T17:39:56.396Z",
"disclosures": []
}
},
+ "purposes": {
+ "1408": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/pubwiseAnalyticsAdapter.json b/metadata/modules/pubwiseAnalyticsAdapter.json
index 7086bbf6173..1ba0e2837b6 100644
--- a/metadata/modules/pubwiseAnalyticsAdapter.json
+++ b/metadata/modules/pubwiseAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/pubxBidAdapter.json b/metadata/modules/pubxBidAdapter.json
index fa73ef4e88c..69d4a6bb160 100644
--- a/metadata/modules/pubxBidAdapter.json
+++ b/metadata/modules/pubxBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/pubxaiAnalyticsAdapter.json b/metadata/modules/pubxaiAnalyticsAdapter.json
index dbc8f8c585a..9397db89009 100644
--- a/metadata/modules/pubxaiAnalyticsAdapter.json
+++ b/metadata/modules/pubxaiAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/pubxaiRtdProvider.json b/metadata/modules/pubxaiRtdProvider.json
index ae85971baa5..4f7a3f67b20 100644
--- a/metadata/modules/pubxaiRtdProvider.json
+++ b/metadata/modules/pubxaiRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/pulsepointAnalyticsAdapter.json b/metadata/modules/pulsepointAnalyticsAdapter.json
index 95d0492a683..75185143ad8 100644
--- a/metadata/modules/pulsepointAnalyticsAdapter.json
+++ b/metadata/modules/pulsepointAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/pulsepointBidAdapter.json b/metadata/modules/pulsepointBidAdapter.json
index a6279f67d6f..53e1f0aa5b9 100644
--- a/metadata/modules/pulsepointBidAdapter.json
+++ b/metadata/modules/pulsepointBidAdapter.json
@@ -2,10 +2,26 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://bh.contextweb.com/tcf/vendorInfo.json": {
- "timestamp": "2026-05-18T20:04:58.970Z",
+ "timestamp": "2026-06-15T17:39:56.397Z",
"disclosures": []
}
},
+ "purposes": {
+ "81": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/pwbidBidAdapter.json b/metadata/modules/pwbidBidAdapter.json
index 474e954a58c..d38f9c02782 100644
--- a/metadata/modules/pwbidBidAdapter.json
+++ b/metadata/modules/pwbidBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/pxyzBidAdapter.json b/metadata/modules/pxyzBidAdapter.json
index 3ebc8302485..81b15bcfa79 100644
--- a/metadata/modules/pxyzBidAdapter.json
+++ b/metadata/modules/pxyzBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/qortexRtdProvider.json b/metadata/modules/qortexRtdProvider.json
index 6cc4afcd3ea..c121e23c392 100644
--- a/metadata/modules/qortexRtdProvider.json
+++ b/metadata/modules/qortexRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/qtBidAdapter.json b/metadata/modules/qtBidAdapter.json
index c4ef3fd1146..b9d191c87fc 100644
--- a/metadata/modules/qtBidAdapter.json
+++ b/metadata/modules/qtBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/qwarryBidAdapter.json b/metadata/modules/qwarryBidAdapter.json
index fd1e946aef9..9b2b13d13f5 100644
--- a/metadata/modules/qwarryBidAdapter.json
+++ b/metadata/modules/qwarryBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/r2b2AnalyticsAdapter.json b/metadata/modules/r2b2AnalyticsAdapter.json
index ffdc1af383f..064dc4951fb 100644
--- a/metadata/modules/r2b2AnalyticsAdapter.json
+++ b/metadata/modules/r2b2AnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/r2b2BidAdapter.json b/metadata/modules/r2b2BidAdapter.json
index f98783fd527..41859514814 100644
--- a/metadata/modules/r2b2BidAdapter.json
+++ b/metadata/modules/r2b2BidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://delivery.r2b2.io/cookie_disclosure": {
- "timestamp": "2026-05-18T20:04:59.361Z",
+ "timestamp": "2026-06-15T17:39:56.842Z",
"disclosures": [
{
"identifier": "AdTrack-hide-*",
@@ -222,6 +222,19 @@
]
}
},
+ "purposes": {
+ "1235": {
+ "purposes": [
+ 1,
+ 2,
+ 7,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/rakutenBidAdapter.json b/metadata/modules/rakutenBidAdapter.json
index 1443d0471c3..6cb7ff904a2 100644
--- a/metadata/modules/rakutenBidAdapter.json
+++ b/metadata/modules/rakutenBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/raveltechRtdProvider.json b/metadata/modules/raveltechRtdProvider.json
index e307bbf2adf..ae739456b1b 100644
--- a/metadata/modules/raveltechRtdProvider.json
+++ b/metadata/modules/raveltechRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/raynRtdProvider.json b/metadata/modules/raynRtdProvider.json
index da2b55ad69d..7472c8685d0 100644
--- a/metadata/modules/raynRtdProvider.json
+++ b/metadata/modules/raynRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/readpeakBidAdapter.json b/metadata/modules/readpeakBidAdapter.json
index 7d083b81f34..ab863a47bd2 100644
--- a/metadata/modules/readpeakBidAdapter.json
+++ b/metadata/modules/readpeakBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://static.readpeak.com/tcf/deviceStorage.json": {
- "timestamp": "2026-05-18T20:04:59.850Z",
+ "timestamp": "2026-06-15T17:39:57.446Z",
"disclosures": [
{
"identifier": "rp_uidfp",
@@ -24,6 +24,31 @@
]
}
},
+ "purposes": {
+ "290": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 5,
+ 6,
+ 11
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 8,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8,
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/realryBidAdapter.json b/metadata/modules/realryBidAdapter.json
new file mode 100644
index 00000000000..f6aba3057fd
--- /dev/null
+++ b/metadata/modules/realryBidAdapter.json
@@ -0,0 +1,14 @@
+{
+ "NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
+ "disclosures": {},
+ "purposes": {},
+ "components": [
+ {
+ "componentType": "bidder",
+ "componentName": "realry",
+ "aliasOf": null,
+ "gvlid": null,
+ "disclosureURL": null
+ }
+ ]
+}
\ No newline at end of file
diff --git a/metadata/modules/reconciliationRtdProvider.json b/metadata/modules/reconciliationRtdProvider.json
index 7d1863f855c..3e9d4978cc6 100644
--- a/metadata/modules/reconciliationRtdProvider.json
+++ b/metadata/modules/reconciliationRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/rediadsBidAdapter.json b/metadata/modules/rediadsBidAdapter.json
index d4b86f61b10..bab586cc5ce 100644
--- a/metadata/modules/rediadsBidAdapter.json
+++ b/metadata/modules/rediadsBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/rediadsIdSystem.json b/metadata/modules/rediadsIdSystem.json
index b4918ddd890..c231b31e9f3 100644
--- a/metadata/modules/rediadsIdSystem.json
+++ b/metadata/modules/rediadsIdSystem.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/redtramBidAdapter.json b/metadata/modules/redtramBidAdapter.json
index 199f99f042a..d5d97030381 100644
--- a/metadata/modules/redtramBidAdapter.json
+++ b/metadata/modules/redtramBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/reklamupBidAdapter.json b/metadata/modules/reklamupBidAdapter.json
index 1b59b509ecb..cbd089dbd27 100644
--- a/metadata/modules/reklamupBidAdapter.json
+++ b/metadata/modules/reklamupBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/relaidoBidAdapter.json b/metadata/modules/relaidoBidAdapter.json
index a878f021b24..0a5d9e152c6 100644
--- a/metadata/modules/relaidoBidAdapter.json
+++ b/metadata/modules/relaidoBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/relayBidAdapter.json b/metadata/modules/relayBidAdapter.json
index 55e26007078..67c88ab7bb0 100644
--- a/metadata/modules/relayBidAdapter.json
+++ b/metadata/modules/relayBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/relevadRtdProvider.json b/metadata/modules/relevadRtdProvider.json
index acdbeaa8323..427884499c4 100644
--- a/metadata/modules/relevadRtdProvider.json
+++ b/metadata/modules/relevadRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/relevantAnalyticsAdapter.json b/metadata/modules/relevantAnalyticsAdapter.json
index 3b53e6f9320..fae5f9afe3b 100644
--- a/metadata/modules/relevantAnalyticsAdapter.json
+++ b/metadata/modules/relevantAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/relevantdigitalBidAdapter.json b/metadata/modules/relevantdigitalBidAdapter.json
index f33a847e81e..2b95e023fe4 100644
--- a/metadata/modules/relevantdigitalBidAdapter.json
+++ b/metadata/modules/relevantdigitalBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.relevant-digital.com/resources/deviceStorage.json": {
- "timestamp": "2026-05-18T20:05:00.109Z",
+ "timestamp": "2026-06-15T17:39:57.716Z",
"disclosures": [
{
"identifier": "_rlvData",
@@ -22,6 +22,24 @@
]
}
},
+ "purposes": {
+ "1100": {
+ "purposes": [
+ 1
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/relevatehealthBidAdapter.json b/metadata/modules/relevatehealthBidAdapter.json
index ff73f93c1af..0121266b05f 100644
--- a/metadata/modules/relevatehealthBidAdapter.json
+++ b/metadata/modules/relevatehealthBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/resetdigitalBidAdapter.json b/metadata/modules/resetdigitalBidAdapter.json
index e7d5a2a8c35..65e5cc74b13 100644
--- a/metadata/modules/resetdigitalBidAdapter.json
+++ b/metadata/modules/resetdigitalBidAdapter.json
@@ -2,10 +2,39 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://resetdigital.co/GDPR-TCF.json": {
- "timestamp": "2026-05-18T20:05:00.273Z",
+ "timestamp": "2026-06-15T17:39:58.007Z",
"disclosures": []
}
},
+ "purposes": {
+ "1162": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 5,
+ 6
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "specialFeatures": [
+ 1,
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/responsiveAdsBidAdapter.json b/metadata/modules/responsiveAdsBidAdapter.json
index e62f5312c53..2bfabdace99 100644
--- a/metadata/modules/responsiveAdsBidAdapter.json
+++ b/metadata/modules/responsiveAdsBidAdapter.json
@@ -2,10 +2,28 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://publish.responsiveads.com/tcf/tcf-v2.json": {
- "timestamp": "2026-05-18T20:05:00.433Z",
+ "timestamp": "2026-06-15T17:39:58.265Z",
"disclosures": []
}
},
+ "purposes": {
+ "1189": {
+ "purposes": [
+ 7,
+ 10
+ ],
+ "legIntPurposes": [
+ 2
+ ],
+ "flexiblePurposes": [
+ 7,
+ 10
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/retailspotBidAdapter.json b/metadata/modules/retailspotBidAdapter.json
index 04f501e9b71..dfc42b92d79 100644
--- a/metadata/modules/retailspotBidAdapter.json
+++ b/metadata/modules/retailspotBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/revantageBidAdapter.json b/metadata/modules/revantageBidAdapter.json
index 90e20a1728f..c1013a6ae99 100644
--- a/metadata/modules/revantageBidAdapter.json
+++ b/metadata/modules/revantageBidAdapter.json
@@ -2,10 +2,23 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://revantage.io/.well-known/tcf-device-storage.json": {
- "timestamp": "2026-05-18T20:05:00.635Z",
+ "timestamp": "2026-06-15T17:39:58.464Z",
"disclosures": []
}
},
+ "purposes": {
+ "1588": {
+ "purposes": [],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
@@ -13,6 +26,13 @@
"aliasOf": null,
"gvlid": 1588,
"disclosureURL": "https://revantage.io/.well-known/tcf-device-storage.json"
+ },
+ {
+ "componentType": "bidder",
+ "componentName": "revbidortb",
+ "aliasOf": "revantage",
+ "gvlid": null,
+ "disclosureURL": null
}
]
}
\ No newline at end of file
diff --git a/metadata/modules/revcontentBidAdapter.json b/metadata/modules/revcontentBidAdapter.json
index 9bb7fe57996..d6824dcbd39 100644
--- a/metadata/modules/revcontentBidAdapter.json
+++ b/metadata/modules/revcontentBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://sothebys.revcontent.com/static/device_storage.json": {
- "timestamp": "2026-05-18T20:05:01.079Z",
+ "timestamp": "2026-06-15T17:39:59.141Z",
"disclosures": [
{
"identifier": "__ID",
@@ -26,6 +26,26 @@
]
}
},
+ "purposes": {
+ "203": {
+ "purposes": [
+ 1
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 8,
+ 10,
+ 11
+ ],
+ "flexiblePurposes": [
+ 2
+ ],
+ "specialFeatures": [
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/revealonBidAdapter.json b/metadata/modules/revealonBidAdapter.json
index 10df5a3e8c2..83b404be30b 100644
--- a/metadata/modules/revealonBidAdapter.json
+++ b/metadata/modules/revealonBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/revnewBidAdapter.json b/metadata/modules/revnewBidAdapter.json
index 7008c6c4996..2082b2f984b 100644
--- a/metadata/modules/revnewBidAdapter.json
+++ b/metadata/modules/revnewBidAdapter.json
@@ -2,10 +2,18 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://mediafuse.com/deviceStorage.json": {
- "timestamp": "2026-05-18T20:05:01.304Z",
+ "timestamp": "2026-06-15T17:39:59.304Z",
"disclosures": []
}
},
+ "purposes": {
+ "1468": {
+ "purposes": [],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/rewardedInterestIdSystem.json b/metadata/modules/rewardedInterestIdSystem.json
index 34198a66d6c..7ab3500d343 100644
--- a/metadata/modules/rewardedInterestIdSystem.json
+++ b/metadata/modules/rewardedInterestIdSystem.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/rhythmoneBidAdapter.json b/metadata/modules/rhythmoneBidAdapter.json
index e532fcc040a..57d9f0d94c0 100644
--- a/metadata/modules/rhythmoneBidAdapter.json
+++ b/metadata/modules/rhythmoneBidAdapter.json
@@ -2,10 +2,31 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://video.unrulymedia.com/deviceStorageDisclosure.json": {
- "timestamp": "2026-05-18T20:05:01.509Z",
+ "timestamp": "2026-06-15T17:39:59.615Z",
"disclosures": []
}
},
+ "purposes": {
+ "36": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 7,
+ 9,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 9
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/richaudienceBidAdapter.json b/metadata/modules/richaudienceBidAdapter.json
index a7eb6d4c408..ee30cb1067a 100644
--- a/metadata/modules/richaudienceBidAdapter.json
+++ b/metadata/modules/richaudienceBidAdapter.json
@@ -2,10 +2,26 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdnj.richaudience.com/52a26ab9400b2a9f5aabfa20acf3196g.json": {
- "timestamp": "2026-05-18T20:05:01.865Z",
+ "timestamp": "2026-06-15T17:40:00.226Z",
"disclosures": []
}
},
+ "purposes": {
+ "108": {
+ "purposes": [
+ 1,
+ 2,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/riseBidAdapter.json b/metadata/modules/riseBidAdapter.json
index 3be52dbca86..4eaddcf401a 100644
--- a/metadata/modules/riseBidAdapter.json
+++ b/metadata/modules/riseBidAdapter.json
@@ -2,14 +2,48 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://d2pm7iglz0b6eq.cloudfront.net/RiseDeviceStorage.json": {
- "timestamp": "2026-05-18T20:05:02.031Z",
+ "timestamp": "2026-06-15T17:40:00.530Z",
"disclosures": []
},
"https://spotim-prd-static-assets.s3.amazonaws.com/iab/device-storage.json": {
- "timestamp": "2026-05-18T20:05:02.031Z",
+ "timestamp": "2026-06-15T17:40:00.530Z",
"disclosures": []
}
},
+ "purposes": {
+ "280": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": []
+ },
+ "1043": {
+ "purposes": [
+ 1
+ ],
+ "legIntPurposes": [
+ 2,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/risemediatechBidAdapter.json b/metadata/modules/risemediatechBidAdapter.json
index 8aa3fd6a56d..5bcd0f60a51 100644
--- a/metadata/modules/risemediatechBidAdapter.json
+++ b/metadata/modules/risemediatechBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/rivrAnalyticsAdapter.json b/metadata/modules/rivrAnalyticsAdapter.json
index e9727a46519..6b6247829aa 100644
--- a/metadata/modules/rivrAnalyticsAdapter.json
+++ b/metadata/modules/rivrAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/rixengineBidAdapter.json b/metadata/modules/rixengineBidAdapter.json
index 0c0902b4711..6ffea4420de 100644
--- a/metadata/modules/rixengineBidAdapter.json
+++ b/metadata/modules/rixengineBidAdapter.json
@@ -2,10 +2,27 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://www.algorix.co/gdpr-disclosure.json": {
- "timestamp": "2026-05-18T20:05:02.032Z",
+ "timestamp": "2026-06-15T17:40:00.531Z",
"disclosures": []
}
},
+ "purposes": {
+ "1176": {
+ "purposes": [
+ 1,
+ 7
+ ],
+ "legIntPurposes": [
+ 2,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/robustAppsBidAdapter.json b/metadata/modules/robustAppsBidAdapter.json
index 4cccfc56713..c3ba1bb1beb 100644
--- a/metadata/modules/robustAppsBidAdapter.json
+++ b/metadata/modules/robustAppsBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/robustaBidAdapter.json b/metadata/modules/robustaBidAdapter.json
index 0e01b2d0cc1..c51bf716a08 100644
--- a/metadata/modules/robustaBidAdapter.json
+++ b/metadata/modules/robustaBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/rocketlabBidAdapter.json b/metadata/modules/rocketlabBidAdapter.json
index dd981b4e3a2..f2ea7cb0598 100644
--- a/metadata/modules/rocketlabBidAdapter.json
+++ b/metadata/modules/rocketlabBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/roxotAnalyticsAdapter.json b/metadata/modules/roxotAnalyticsAdapter.json
index 51247479078..1ab8eff8b6d 100644
--- a/metadata/modules/roxotAnalyticsAdapter.json
+++ b/metadata/modules/roxotAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/rtbhouseBidAdapter.json b/metadata/modules/rtbhouseBidAdapter.json
index 9db2d1c2511..455e125e30b 100644
--- a/metadata/modules/rtbhouseBidAdapter.json
+++ b/metadata/modules/rtbhouseBidAdapter.json
@@ -2,11 +2,12 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://www.rtbhouse.com/DeviceStorage.json": {
- "timestamp": "2026-05-18T20:05:02.125Z",
+ "timestamp": "2026-06-15T17:40:00.867Z",
"disclosures": [
{
"identifier": "_rtbh.*",
"type": "web",
+ "maxAgeSeconds": null,
"purposes": [
1,
2,
@@ -15,11 +16,132 @@
7,
9,
10
+ ],
+ "specialPurposes": [
+ 1,
+ 2,
+ 3
+ ]
+ },
+ {
+ "identifier": "__rtbh.lid",
+ "type": "cookie",
+ "maxAgeSeconds": 31536000,
+ "cookieRefresh": true,
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "specialPurposes": [
+ 1,
+ 2,
+ 3
+ ]
+ },
+ {
+ "identifier": "__rtbh.uid",
+ "type": "cookie",
+ "maxAgeSeconds": 31536000,
+ "cookieRefresh": true,
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "specialPurposes": [
+ 1,
+ 2,
+ 3
+ ]
+ },
+ {
+ "identifier": "__rtbh.aid",
+ "type": "cookie",
+ "maxAgeSeconds": 31536000,
+ "cookieRefresh": true,
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "specialPurposes": [
+ 1,
+ 2,
+ 3
+ ]
+ },
+ {
+ "identifier": "__rtbh.sid",
+ "type": "cookie",
+ "maxAgeSeconds": 31536000,
+ "cookieRefresh": true,
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "specialPurposes": [
+ 1,
+ 2,
+ 3
+ ]
+ },
+ {
+ "identifier": "__rtbh.eid",
+ "type": "cookie",
+ "maxAgeSeconds": 31536000,
+ "cookieRefresh": true,
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "specialPurposes": [
+ 1,
+ 2,
+ 3
]
}
]
}
},
+ "purposes": {
+ "16": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/rtbsapeBidAdapter.json b/metadata/modules/rtbsapeBidAdapter.json
index 0d3dbf82bd1..2b4d791bae4 100644
--- a/metadata/modules/rtbsapeBidAdapter.json
+++ b/metadata/modules/rtbsapeBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/rubiconBidAdapter.json b/metadata/modules/rubiconBidAdapter.json
index 1f2f2a432f1..17ab4e23041 100644
--- a/metadata/modules/rubiconBidAdapter.json
+++ b/metadata/modules/rubiconBidAdapter.json
@@ -2,10 +2,33 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://gdpr.rubiconproject.com/dvplus/devicestoragedisclosure.json": {
- "timestamp": "2026-05-18T20:05:02.416Z",
+ "timestamp": "2026-06-15T17:40:01.091Z",
"disclosures": []
}
},
+ "purposes": {
+ "52": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": [
+ 1,
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/rumbleBidAdapter.json b/metadata/modules/rumbleBidAdapter.json
index 05b1ed34730..47016a18ec9 100644
--- a/metadata/modules/rumbleBidAdapter.json
+++ b/metadata/modules/rumbleBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/scaleableAnalyticsAdapter.json b/metadata/modules/scaleableAnalyticsAdapter.json
index 893190ad6af..7e65e864ce1 100644
--- a/metadata/modules/scaleableAnalyticsAdapter.json
+++ b/metadata/modules/scaleableAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/scaliburBidAdapter.json b/metadata/modules/scaliburBidAdapter.json
index 79503e353d3..a45d3c92a0b 100644
--- a/metadata/modules/scaliburBidAdapter.json
+++ b/metadata/modules/scaliburBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://legal.overwolf.com/docs/overwolf/website/deviceStorageDisclosure.json": {
- "timestamp": "2026-05-18T20:05:02.417Z",
+ "timestamp": "2026-06-15T17:40:01.091Z",
"disclosures": [
{
"identifier": "scluid",
@@ -23,6 +23,31 @@
]
}
},
+ "purposes": {
+ "1471": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "specialFeatures": [
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/scatteredBidAdapter.json b/metadata/modules/scatteredBidAdapter.json
index ef05a8579df..bb5c5192feb 100644
--- a/metadata/modules/scatteredBidAdapter.json
+++ b/metadata/modules/scatteredBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/scope3RtdProvider.json b/metadata/modules/scope3RtdProvider.json
index bb50ae1b92b..6ccab58ccc8 100644
--- a/metadata/modules/scope3RtdProvider.json
+++ b/metadata/modules/scope3RtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/screencoreBidAdapter.json b/metadata/modules/screencoreBidAdapter.json
index f03c922076b..5977300e9f8 100644
--- a/metadata/modules/screencoreBidAdapter.json
+++ b/metadata/modules/screencoreBidAdapter.json
@@ -2,10 +2,26 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://screencore.io/tcf.json": {
- "timestamp": "2026-05-18T20:05:02.553Z",
+ "timestamp": "2026-06-15T17:40:01.201Z",
"disclosures": []
}
},
+ "purposes": {
+ "1473": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/seedingAllianceBidAdapter.json b/metadata/modules/seedingAllianceBidAdapter.json
index bb3ed98fb2b..ad4a44a84ae 100644
--- a/metadata/modules/seedingAllianceBidAdapter.json
+++ b/metadata/modules/seedingAllianceBidAdapter.json
@@ -2,10 +2,38 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://s.nativendo.de/cdn/asset/tcf/purpose-specific-storage-and-access-information.json": {
- "timestamp": "2026-05-18T20:05:02.694Z",
+ "timestamp": "2026-06-15T17:40:01.509Z",
"disclosures": []
}
},
+ "purposes": {
+ "371": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 5,
+ 6
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/seedtagBidAdapter.json b/metadata/modules/seedtagBidAdapter.json
index e6aeca74a9f..55a64576c66 100644
--- a/metadata/modules/seedtagBidAdapter.json
+++ b/metadata/modules/seedtagBidAdapter.json
@@ -2,10 +2,28 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://tcf.seedtag.com/vendor.json": {
- "timestamp": "2026-05-18T20:05:02.983Z",
+ "timestamp": "2026-06-15T17:40:01.658Z",
"disclosures": []
}
},
+ "purposes": {
+ "157": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/selectmediaBidAdapter.json b/metadata/modules/selectmediaBidAdapter.json
index 66493baa533..c7fee9f8f4a 100644
--- a/metadata/modules/selectmediaBidAdapter.json
+++ b/metadata/modules/selectmediaBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://www.selectmedia.asia/gdpr/devicestorage.json": {
- "timestamp": "2026-05-18T20:05:02.983Z",
+ "timestamp": "2026-06-15T17:40:01.659Z",
"disclosures": [
{
"identifier": "waterFallCacheAnsKey_*",
@@ -77,6 +77,17 @@
]
}
},
+ "purposes": {
+ "775": {
+ "purposes": [
+ 1,
+ 2
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/semantiqRtdProvider.json b/metadata/modules/semantiqRtdProvider.json
index 5b3e16f4a31..68768b101e8 100644
--- a/metadata/modules/semantiqRtdProvider.json
+++ b/metadata/modules/semantiqRtdProvider.json
@@ -2,10 +2,32 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://audienzz.com/device_storage_disclosure_vendor_783.json": {
- "timestamp": "2026-05-18T20:05:03.182Z",
+ "timestamp": "2026-06-15T17:40:01.955Z",
"disclosures": []
}
},
+ "purposes": {
+ "783": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/setupadBidAdapter.json b/metadata/modules/setupadBidAdapter.json
index 274481b7cfc..dd8c8998b19 100644
--- a/metadata/modules/setupadBidAdapter.json
+++ b/metadata/modules/setupadBidAdapter.json
@@ -2,10 +2,33 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cookies.stpd.cloud/disclosures.json": {
- "timestamp": "2026-05-18T20:05:03.533Z",
+ "timestamp": "2026-06-15T17:40:02.339Z",
"disclosures": null
}
},
+ "purposes": {
+ "1241": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1,
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/sevioBidAdapter.json b/metadata/modules/sevioBidAdapter.json
index 4e862215c45..9561b1b73f2 100644
--- a/metadata/modules/sevioBidAdapter.json
+++ b/metadata/modules/sevioBidAdapter.json
@@ -2,10 +2,30 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://sevio.com/tcf.json": {
- "timestamp": "2026-05-18T20:05:03.580Z",
+ "timestamp": "2026-06-15T17:40:02.421Z",
"disclosures": []
}
},
+ "purposes": {
+ "1393": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 5,
+ 6,
+ 11
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 8,
+ 9
+ ],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/sharedIdSystem.json b/metadata/modules/sharedIdSystem.json
index 6d9954b0057..e9f6d5fc9c3 100644
--- a/metadata/modules/sharedIdSystem.json
+++ b/metadata/modules/sharedIdSystem.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.jsdelivr.net/gh/prebid/Prebid.js/metadata/disclosures/prebid/sharedId-optout.json": {
- "timestamp": "2026-05-18T20:05:03.820Z",
+ "timestamp": "2026-06-15T17:40:02.679Z",
"disclosures": [
{
"identifier": "_pubcid_optout",
@@ -24,6 +24,7 @@
]
}
},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/sharethroughAnalyticsAdapter.json b/metadata/modules/sharethroughAnalyticsAdapter.json
index 606d12abddb..f558625dd18 100644
--- a/metadata/modules/sharethroughAnalyticsAdapter.json
+++ b/metadata/modules/sharethroughAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/sharethroughBidAdapter.json b/metadata/modules/sharethroughBidAdapter.json
index a9544194bd7..5e66203e3ea 100644
--- a/metadata/modules/sharethroughBidAdapter.json
+++ b/metadata/modules/sharethroughBidAdapter.json
@@ -2,10 +2,27 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://assets.sharethrough.com/gvl.json": {
- "timestamp": "2026-05-18T20:05:03.821Z",
+ "timestamp": "2026-06-15T17:40:02.680Z",
"disclosures": []
}
},
+ "purposes": {
+ "80": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/shinezBidAdapter.json b/metadata/modules/shinezBidAdapter.json
index 90308ec5e97..daee44daf60 100644
--- a/metadata/modules/shinezBidAdapter.json
+++ b/metadata/modules/shinezBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/shinezRtbBidAdapter.json b/metadata/modules/shinezRtbBidAdapter.json
index 758b93fd8fe..0386e51e343 100644
--- a/metadata/modules/shinezRtbBidAdapter.json
+++ b/metadata/modules/shinezRtbBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/showheroes-bsBidAdapter.json b/metadata/modules/showheroes-bsBidAdapter.json
index 02f27cc5fb4..fa166ec254a 100644
--- a/metadata/modules/showheroes-bsBidAdapter.json
+++ b/metadata/modules/showheroes-bsBidAdapter.json
@@ -2,10 +2,32 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://static-origin.showheroes.com/gvl_storage_disclosure.json": {
- "timestamp": "2026-05-18T20:05:04.068Z",
+ "timestamp": "2026-06-15T17:40:02.888Z",
"disclosures": []
}
},
+ "purposes": {
+ "111": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 8
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/showheroesBidAdapter.json b/metadata/modules/showheroesBidAdapter.json
index 4d3ae1aa1fa..387696591a9 100644
--- a/metadata/modules/showheroesBidAdapter.json
+++ b/metadata/modules/showheroesBidAdapter.json
@@ -2,10 +2,32 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://static-origin.showheroes.com/gvl_storage_disclosure.json": {
- "timestamp": "2026-05-18T20:05:04.646Z",
+ "timestamp": "2026-06-15T17:40:03.680Z",
"disclosures": []
}
},
+ "purposes": {
+ "111": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 8
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/silvermobBidAdapter.json b/metadata/modules/silvermobBidAdapter.json
index 02e34cecc12..63b8d798c0d 100644
--- a/metadata/modules/silvermobBidAdapter.json
+++ b/metadata/modules/silvermobBidAdapter.json
@@ -2,10 +2,27 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://silvermob.com/deviceStorageDisclosure.json": {
- "timestamp": "2026-05-18T20:05:04.646Z",
+ "timestamp": "2026-06-15T17:40:03.680Z",
"disclosures": []
}
},
+ "purposes": {
+ "1058": {
+ "purposes": [
+ 2,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/silverpushBidAdapter.json b/metadata/modules/silverpushBidAdapter.json
index 9c122816564..560792f0018 100644
--- a/metadata/modules/silverpushBidAdapter.json
+++ b/metadata/modules/silverpushBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/sirdataRtdProvider.json b/metadata/modules/sirdataRtdProvider.json
index 1ff1e2ad107..92623578205 100644
--- a/metadata/modules/sirdataRtdProvider.json
+++ b/metadata/modules/sirdataRtdProvider.json
@@ -2,10 +2,36 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.sirdata.eu/sirdata_device_storage_disclosure.json": {
- "timestamp": "2026-05-18T20:05:04.908Z",
+ "timestamp": "2026-06-15T17:40:03.904Z",
"disclosures": []
}
},
+ "purposes": {
+ "53": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 5,
+ 6,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 8,
+ 11
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8,
+ 11
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/slimcutBidAdapter.json b/metadata/modules/slimcutBidAdapter.json
index 914f7829cea..eaa1557984e 100644
--- a/metadata/modules/slimcutBidAdapter.json
+++ b/metadata/modules/slimcutBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/smaatoBidAdapter.json b/metadata/modules/smaatoBidAdapter.json
index 211deb903c5..5a04db54714 100644
--- a/metadata/modules/smaatoBidAdapter.json
+++ b/metadata/modules/smaatoBidAdapter.json
@@ -2,10 +2,28 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://resources.smaato.com/hubfs/Smaato/IAB/deviceStorage.json": {
- "timestamp": "2026-05-18T20:05:05.346Z",
+ "timestamp": "2026-06-15T17:40:04.565Z",
"disclosures": []
}
},
+ "purposes": {
+ "82": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/smartadserverBidAdapter.json b/metadata/modules/smartadserverBidAdapter.json
index 548ea873327..e6f5c7796a0 100644
--- a/metadata/modules/smartadserverBidAdapter.json
+++ b/metadata/modules/smartadserverBidAdapter.json
@@ -2,10 +2,27 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://apps.smartadserver.com/device-storage-disclosures/equativDeviceStorageDisclosures.json": {
- "timestamp": "2026-05-18T20:05:05.571Z",
+ "timestamp": "2026-06-15T17:40:04.755Z",
"disclosures": []
}
},
+ "purposes": {
+ "45": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/smarthubBidAdapter.json b/metadata/modules/smarthubBidAdapter.json
index 8dae767ac87..2ce07a5995d 100644
--- a/metadata/modules/smarthubBidAdapter.json
+++ b/metadata/modules/smarthubBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
@@ -99,6 +100,13 @@
"aliasOf": "smarthub",
"gvlid": null,
"disclosureURL": null
+ },
+ {
+ "componentType": "bidder",
+ "componentName": "stackup",
+ "aliasOf": "smarthub",
+ "gvlid": null,
+ "disclosureURL": null
}
]
}
\ No newline at end of file
diff --git a/metadata/modules/smarticoBidAdapter.json b/metadata/modules/smarticoBidAdapter.json
index 6890661e7dc..c2128962e57 100644
--- a/metadata/modules/smarticoBidAdapter.json
+++ b/metadata/modules/smarticoBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/smartxBidAdapter.json b/metadata/modules/smartxBidAdapter.json
index f2434f3b9a9..09cd9a375ac 100644
--- a/metadata/modules/smartxBidAdapter.json
+++ b/metadata/modules/smartxBidAdapter.json
@@ -2,10 +2,29 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.smartclip.net/iab/deviceStorageDisclosure.json": {
- "timestamp": "2026-05-18T20:05:05.572Z",
+ "timestamp": "2026-06-15T17:40:04.755Z",
"disclosures": []
}
},
+ "purposes": {
+ "115": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/smartyadsAnalyticsAdapter.json b/metadata/modules/smartyadsAnalyticsAdapter.json
index 610464707e6..e24ab19a5b5 100644
--- a/metadata/modules/smartyadsAnalyticsAdapter.json
+++ b/metadata/modules/smartyadsAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/smartyadsBidAdapter.json b/metadata/modules/smartyadsBidAdapter.json
index 377112b163c..3331ff4cdf5 100644
--- a/metadata/modules/smartyadsBidAdapter.json
+++ b/metadata/modules/smartyadsBidAdapter.json
@@ -2,10 +2,26 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://smartyads.com/tcf.json": {
- "timestamp": "2026-05-18T20:05:05.782Z",
+ "timestamp": "2026-06-15T17:40:05.375Z",
"disclosures": []
}
},
+ "purposes": {
+ "534": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/smartytechBidAdapter.json b/metadata/modules/smartytechBidAdapter.json
index 6bd5749a72b..e4c4b902688 100644
--- a/metadata/modules/smartytechBidAdapter.json
+++ b/metadata/modules/smartytechBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/smilewantedBidAdapter.json b/metadata/modules/smilewantedBidAdapter.json
index f1120c7293d..252c7305108 100644
--- a/metadata/modules/smilewantedBidAdapter.json
+++ b/metadata/modules/smilewantedBidAdapter.json
@@ -2,10 +2,29 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://smilewanted.com/vendor-device-storage-disclosures.json": {
- "timestamp": "2026-05-18T20:05:06.006Z",
+ "timestamp": "2026-06-15T17:40:05.635Z",
"disclosures": []
}
},
+ "purposes": {
+ "639": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/smootBidAdapter.json b/metadata/modules/smootBidAdapter.json
index d065ad2c042..97bcd0b735e 100644
--- a/metadata/modules/smootBidAdapter.json
+++ b/metadata/modules/smootBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/snigelBidAdapter.json b/metadata/modules/snigelBidAdapter.json
index 4a024cf4ef3..44f9bbbe8de 100644
--- a/metadata/modules/snigelBidAdapter.json
+++ b/metadata/modules/snigelBidAdapter.json
@@ -2,10 +2,31 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.snigelweb.com/gvl/deviceStorageDisclosure.json": {
- "timestamp": "2026-05-18T20:05:06.521Z",
+ "timestamp": "2026-06-15T17:40:05.889Z",
"disclosures": []
}
},
+ "purposes": {
+ "1076": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/sonaradsBidAdapter.json b/metadata/modules/sonaradsBidAdapter.json
index 0f7918c64ff..006aa7807ee 100644
--- a/metadata/modules/sonaradsBidAdapter.json
+++ b/metadata/modules/sonaradsBidAdapter.json
@@ -2,10 +2,27 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://bridgeupp.com/device-storage-disclosure.json": {
- "timestamp": "2026-05-18T20:05:06.559Z",
+ "timestamp": "2026-06-15T17:40:05.981Z",
"disclosures": []
}
},
+ "purposes": {
+ "1300": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/sonobiBidAdapter.json b/metadata/modules/sonobiBidAdapter.json
index af7c3d9a30d..eaa9f26f4eb 100644
--- a/metadata/modules/sonobiBidAdapter.json
+++ b/metadata/modules/sonobiBidAdapter.json
@@ -2,10 +2,27 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://sonobi.com/tcf2-device-storage-disclosure.json": {
- "timestamp": "2026-05-18T20:05:06.981Z",
+ "timestamp": "2026-06-11T01:05:40.930Z",
"disclosures": []
}
},
+ "purposes": {
+ "104": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 7,
+ 8,
+ 10
+ ],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/sovrnBidAdapter.json b/metadata/modules/sovrnBidAdapter.json
index 7243c860556..d0d458638eb 100644
--- a/metadata/modules/sovrnBidAdapter.json
+++ b/metadata/modules/sovrnBidAdapter.json
@@ -2,10 +2,26 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.sovrn.com/tcf-cookie-disclosure/disclosure.json": {
- "timestamp": "2026-05-18T20:05:07.248Z",
+ "timestamp": "2026-06-15T17:40:06.868Z",
"disclosures": []
}
},
+ "purposes": {
+ "13": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 5,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/sparteoBidAdapter.json b/metadata/modules/sparteoBidAdapter.json
index d84337629d4..27cf2e67716 100644
--- a/metadata/modules/sparteoBidAdapter.json
+++ b/metadata/modules/sparteoBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://bid.bricks-co.com/.well-known/deviceStorage.json": {
- "timestamp": "2026-05-18T20:05:07.418Z",
+ "timestamp": "2026-06-15T17:40:06.970Z",
"disclosures": [
{
"identifier": "fastCMP-addtlConsent",
@@ -28,6 +28,34 @@
]
}
},
+ "purposes": {
+ "1028": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 5,
+ 6
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/ssmasBidAdapter.json b/metadata/modules/ssmasBidAdapter.json
index 40fa2de9948..124c6c96913 100644
--- a/metadata/modules/ssmasBidAdapter.json
+++ b/metadata/modules/ssmasBidAdapter.json
@@ -2,8 +2,308 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://semseoymas.com/iab.json": {
- "timestamp": "2026-05-18T20:05:07.777Z",
- "disclosures": null
+ "timestamp": "2026-06-15T17:40:07.444Z",
+ "disclosures": [
+ {
+ "identifier": "ssmuuid",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1,
+ 7,
+ 9
+ ],
+ "description": "Unique cross-session user ID used as Publisher Provided ID (PPID) in GAM (setPublisherProvidedId) and for Prebid audience targeting. Written on publisher properties. Upgraded when a higher-quality signal (auth/hash/fingerprint) becomes available. Processed under Purpose 1, Purpose 7 and Purpose 9."
+ },
+ {
+ "identifier": "ssmUUID",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1,
+ 7
+ ],
+ "description": "UUID sent to analytics.ssmas.com as a user identifier field (pd). Also used as GAM PPID in minSmartTag.js. Persistent, never refreshed."
+ },
+ {
+ "identifier": "ssmHashId",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1,
+ 9
+ ],
+ "description": "SHA-256 hash of the authenticated user email. Used for user matching with Criteo via Prebid. Requires Purpose 1 and Purpose 9 consent before writing. Refreshed on re-authentication events."
+ },
+ {
+ "identifier": "ssmFP1",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1
+ ],
+ "description": "FingerprintJS Pro device-scanning signal exposed via window.ssmasfp1. Fallback identifier for ssmuuid when no auth/hash signal is available. Vendor declares Special Feature 2 in its GVL registration. Written only when Purpose 1 and Special Feature 2 opt-in are present."
+ },
+ {
+ "identifier": "ssmFP2",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1
+ ],
+ "description": "HTML5 Canvas fingerprint (SHA-256) device-scanning signal exposed via window.ssmasfp2. Secondary fallback identifier. Vendor declares Special Feature 2 in its GVL registration. Written only when Purpose 1 and Special Feature 2 opt-in are present."
+ },
+ {
+ "identifier": "ssmNewFP",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1
+ ],
+ "description": "ClientJS-based device fingerprint (new variant). Additional fallback signal for cross-session identification. Vendor declares Special Feature 2 in its GVL registration. Written only when Purpose 1 and Special Feature 2 opt-in are present."
+ },
+ {
+ "identifier": "ssmGeo",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1,
+ 2
+ ],
+ "description": "User country ISO code used for geographic ad targeting rules. Country-level only (NOT precise geolocation, NOT Special Feature 1). Persistent; overwritten on each page view on Freepik properties."
+ },
+ {
+ "identifier": "ssm",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 7
+ ],
+ "description": "SmartTag internal state and audience profile (JSON container in localStorage; sessionStorage mirror under the same key holds session-scoped fields). Stores sessions, pageViewTotal, UserType, statuses, subStatuses, microfunnel, freeDown, lastDownload, viewsCp, rule_u{id} (persistent) / rule_s{id} (session) frequency counters, zoom flag, countEmpty, prebidEmpty, refreshads, fsga/fsga_sg audience segments. Refreshed on each SmartTag execution."
+ },
+ {
+ "identifier": "ssmRew:*",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 7
+ ],
+ "specialPurposes": [
+ 2
+ ],
+ "description": "Rewarded ad frequency cap per scope key (global or adunit). Window configurable in hours or resets at midnight. Refreshed while user remains in frequency window. Identifier uses scopeKey suffix — wildcard covers all dynamic scope variants."
+ },
+ {
+ "identifier": "cookie_choice_pay",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [],
+ "optOut": false,
+ "description": "Stores the Stripe payment consent-or-pay state. Persistent on disk; logical TTL of config.expiration * 24h. Operational/contractual — not subject to TCF consent. No TCF purpose assigned."
+ },
+ {
+ "identifier": "universal_uid",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1,
+ 7
+ ],
+ "description": "Universal cross-publisher user ID managed by SSM. Persistent, not refreshed. Used for cross-site audience identification and analytics."
+ },
+ {
+ "identifier": "ssmSessionId",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1,
+ 7
+ ],
+ "description": "Session-scoped identifier for correlating impressions, clicks and bid events in analytics. Cleared when tab/browser closes. Not refreshed."
+ },
+ {
+ "identifier": "ssmRenderedIds",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [],
+ "specialPurposes": [
+ 2
+ ],
+ "description": "Set of ad slot IDs already rendered in this session. Prevents duplicate rendering in unfilled recovery flows. Session-scoped, refreshed as new slots render."
+ },
+ {
+ "identifier": "ssmI",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 7
+ ],
+ "specialPurposes": [
+ 2
+ ],
+ "description": "Interstitial frequency state at top-level sessionStorage. Records last interstitial show time and enforces a 24-hour display window. Session-scoped, refreshed on each interstitial event."
+ },
+ {
+ "identifier": "rewCountShown",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [],
+ "specialPurposes": [
+ 2
+ ],
+ "description": "Counter of rewarded ads shown in the current session. Session-scoped, incremented on each rewarded ad display. Enforces session-level frequency caps."
+ },
+ {
+ "identifier": "ssmGranted",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [],
+ "specialPurposes": [
+ 2
+ ],
+ "description": "Flag indicating the user has been granted access to premium content after completing a rewarded ad. Scoped to the browser tab lifetime. Operational."
+ },
+ {
+ "identifier": "ssmSessionTimeStamp",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 7
+ ],
+ "description": "Timestamp of session start used for interaction analytics. Session-scoped, refreshed at session initialization."
+ },
+ {
+ "identifier": "cid",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 1,
+ 7
+ ],
+ "description": "Publisher's Google Analytics Client ID (_ga/_gid) reused for first-party analytics correlation. Session-scoped, written once if not present."
+ },
+ {
+ "identifier": "pageView",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 7
+ ],
+ "description": "Accumulated page-view counter stored within the ssm sessionStorage scope. Refreshed on each SmartTag construction. Used for session-level analytics and frequency logic."
+ },
+ {
+ "identifier": "ssmGranted_*",
+ "type": "cookie",
+ "maxAgeSeconds": 3600,
+ "cookieRefresh": true,
+ "purposes": [],
+ "specialPurposes": [
+ 2
+ ],
+ "description": "Ad-unit-scoped grant cookie used in premiumContent with frequency='custom'. Cookie name includes the ad unit identifier as suffix. config.timegranted hours (default 1h sliding window). Wildcard used because the set of publisher domains is dynamic."
+ },
+ {
+ "identifier": "ssmPageCount",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 7
+ ],
+ "description": "Session page-view counter used by Analytics for session-level interaction metrics. Incremented on each in-session navigation event. Session-scoped."
+ },
+ {
+ "identifier": "ssmUserPageCount",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 7
+ ],
+ "description": "Cross-session page-view counter used by Analytics to measure long-term user engagement. Incremented on each in-session navigation event. Persistent."
+ },
+ {
+ "identifier": "utm_campaign",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 7
+ ],
+ "description": "UTM campaign parameter captured for campaign attribution. Written once per session when present in the URL."
+ },
+ {
+ "identifier": "utm_source",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 7
+ ],
+ "description": "UTM source parameter captured for campaign attribution. Written once per session when present in the URL."
+ },
+ {
+ "identifier": "utm_medium",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [
+ 7
+ ],
+ "description": "UTM medium parameter captured for campaign attribution. Written once per session when present in the URL."
+ },
+ {
+ "identifier": "ssmGranted:*",
+ "type": "web",
+ "maxAgeSeconds": null,
+ "cookieRefresh": false,
+ "purposes": [],
+ "specialPurposes": [
+ 2
+ ],
+ "description": "Path-scoped grant key used by the Jocsaracat rewarded pre-flow (sessionStorage). Identifier suffix is the URL pathname — wildcard covers all dynamic path variants. Session-scoped frequency cap. Operational/SP2."
+ }
+ ]
+ }
+ },
+ "purposes": {
+ "1183": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 2
+ ]
}
},
"components": [
diff --git a/metadata/modules/sspBCBidAdapter.json b/metadata/modules/sspBCBidAdapter.json
index 6464eeceda6..fa0d5b5cdbf 100644
--- a/metadata/modules/sspBCBidAdapter.json
+++ b/metadata/modules/sspBCBidAdapter.json
@@ -2,10 +2,36 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://ssp.wp.pl/deviceStorage.json": {
- "timestamp": "2026-05-18T20:05:08.552Z",
+ "timestamp": "2026-06-15T17:40:08.414Z",
"disclosures": []
}
},
+ "purposes": {
+ "676": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9
+ ],
+ "legIntPurposes": [
+ 10
+ ],
+ "flexiblePurposes": [
+ 7,
+ 8,
+ 9
+ ],
+ "specialFeatures": [
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/ssp_genieeBidAdapter.json b/metadata/modules/ssp_genieeBidAdapter.json
index 084e90274da..1ed4e90685f 100644
--- a/metadata/modules/ssp_genieeBidAdapter.json
+++ b/metadata/modules/ssp_genieeBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/stackadaptBidAdapter.json b/metadata/modules/stackadaptBidAdapter.json
index 21d87dc19f0..e9ddd395cb6 100644
--- a/metadata/modules/stackadaptBidAdapter.json
+++ b/metadata/modules/stackadaptBidAdapter.json
@@ -2,46 +2,40 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://s3.amazonaws.com/stackadapt_public/disclosures.json": {
- "timestamp": "2026-05-18T20:05:08.552Z",
+ "timestamp": "2026-06-15T17:40:08.414Z",
"disclosures": [
{
- "identifier": "sa-camp-*",
- "type": "cookie",
- "maxAgeSeconds": 7776000,
- "cookieRefresh": false,
- "purposes": [
- 1
- ]
- },
- {
- "identifier": "sa_aid_pv",
- "type": "cookie",
- "maxAgeSeconds": 3600,
- "cookieRefresh": false,
- "purposes": [
- 1
- ]
- },
- {
- "identifier": "sa_*_sid",
+ "identifier": "sa-user-id",
"type": "cookie",
- "maxAgeSeconds": 3600,
+ "maxAgeSeconds": 31536000,
"cookieRefresh": false,
"purposes": [
- 1
+ 1,
+ 3,
+ 4
+ ],
+ "specialPurposes": [
+ 1,
+ 2
]
},
{
- "identifier": "sa_*_adurl",
- "type": "cookie",
- "maxAgeSeconds": 3600,
+ "identifier": "sa-user-id",
+ "type": "web",
+ "maxAgeSeconds": null,
"cookieRefresh": false,
"purposes": [
- 1
+ 1,
+ 3,
+ 4
+ ],
+ "specialPurposes": [
+ 1,
+ 2
]
},
{
- "identifier": "sa-user-id",
+ "identifier": "sa-user-id-v2",
"type": "cookie",
"maxAgeSeconds": 31536000,
"cookieRefresh": false,
@@ -49,21 +43,29 @@
1,
3,
4
+ ],
+ "specialPurposes": [
+ 1,
+ 2
]
},
{
"identifier": "sa-user-id-v2",
- "type": "cookie",
- "maxAgeSeconds": 31536000,
+ "type": "web",
+ "maxAgeSeconds": null,
"cookieRefresh": false,
"purposes": [
1,
3,
4
+ ],
+ "specialPurposes": [
+ 1,
+ 2
]
},
{
- "identifier": "sa-user-id-v4",
+ "identifier": "sa-user-id-v3",
"type": "cookie",
"maxAgeSeconds": 31536000,
"cookieRefresh": false,
@@ -71,10 +73,14 @@
1,
3,
4
+ ],
+ "specialPurposes": [
+ 1,
+ 2
]
},
{
- "identifier": "sa-user-id",
+ "identifier": "sa-user-id-v3",
"type": "web",
"maxAgeSeconds": null,
"cookieRefresh": false,
@@ -82,17 +88,25 @@
1,
3,
4
+ ],
+ "specialPurposes": [
+ 1,
+ 2
]
},
{
- "identifier": "sa-user-id-v2",
- "type": "web",
- "maxAgeSeconds": null,
+ "identifier": "sa-user-id-v4",
+ "type": "cookie",
+ "maxAgeSeconds": 31536000,
"cookieRefresh": false,
"purposes": [
1,
3,
4
+ ],
+ "specialPurposes": [
+ 1,
+ 2
]
},
{
@@ -104,8 +118,22 @@
1,
3,
4
+ ],
+ "specialPurposes": [
+ 1,
+ 2
]
},
+ {
+ "identifier": "sa-camp-*",
+ "type": "cookie",
+ "maxAgeSeconds": 7776000,
+ "cookieRefresh": false,
+ "purposes": [
+ 1
+ ],
+ "specialPurposes": []
+ },
{
"identifier": "sa-camp-*",
"type": "web",
@@ -113,33 +141,71 @@
"cookieRefresh": false,
"purposes": [
1
- ]
+ ],
+ "specialPurposes": []
},
{
- "identifier": "sa-user-id-v3",
+ "identifier": "sa_aid_pv",
"type": "cookie",
- "maxAgeSeconds": 31536000,
+ "maxAgeSeconds": 3600,
"cookieRefresh": false,
"purposes": [
- 1,
- 3,
- 4
- ]
+ 1
+ ],
+ "specialPurposes": []
},
{
- "identifier": "sa-user-id-v3",
- "type": "web",
- "maxAgeSeconds": null,
+ "identifier": "sa_*_sid",
+ "type": "cookie",
+ "maxAgeSeconds": 3600,
"cookieRefresh": false,
"purposes": [
- 1,
- 3,
- 4
- ]
+ 1
+ ],
+ "specialPurposes": []
+ },
+ {
+ "identifier": "sa_*_adurl",
+ "type": "cookie",
+ "maxAgeSeconds": 3600,
+ "cookieRefresh": false,
+ "purposes": [
+ 1
+ ],
+ "specialPurposes": []
}
]
}
},
+ "purposes": {
+ "238": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 5,
+ 6
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8,
+ 11
+ ],
+ "specialFeatures": [
+ 1,
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/startioBidAdapter.json b/metadata/modules/startioBidAdapter.json
index a50e07b4eeb..6ef6e95f709 100644
--- a/metadata/modules/startioBidAdapter.json
+++ b/metadata/modules/startioBidAdapter.json
@@ -2,10 +2,32 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://info.startappservice.com/tcf/start.io_domains.json": {
- "timestamp": "2026-05-18T20:05:08.670Z",
+ "timestamp": "2026-06-15T17:40:08.627Z",
"disclosures": []
}
},
+ "purposes": {
+ "1216": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/startioIdSystem.json b/metadata/modules/startioIdSystem.json
index a6a30c69810..65e94852841 100644
--- a/metadata/modules/startioIdSystem.json
+++ b/metadata/modules/startioIdSystem.json
@@ -2,10 +2,32 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://info.startappservice.com/tcf/start.io_domains.json": {
- "timestamp": "2026-05-18T20:05:08.846Z",
+ "timestamp": "2026-06-15T17:40:08.718Z",
"disclosures": []
}
},
+ "purposes": {
+ "1216": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/stnBidAdapter.json b/metadata/modules/stnBidAdapter.json
index 9e02eb69a72..98a069984ca 100644
--- a/metadata/modules/stnBidAdapter.json
+++ b/metadata/modules/stnBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/stroeerCoreBidAdapter.json b/metadata/modules/stroeerCoreBidAdapter.json
index ee6f4865d86..ec6e4c8014e 100644
--- a/metadata/modules/stroeerCoreBidAdapter.json
+++ b/metadata/modules/stroeerCoreBidAdapter.json
@@ -2,10 +2,33 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://www.stroeer.de/StroeerSSP_deviceStorage.json": {
- "timestamp": "2026-05-18T20:05:08.846Z",
+ "timestamp": "2026-06-15T17:40:08.719Z",
"disclosures": []
}
},
+ "purposes": {
+ "136": {
+ "purposes": [
+ 1,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/stvBidAdapter.json b/metadata/modules/stvBidAdapter.json
index c2dad679ced..e83cbaaf2ea 100644
--- a/metadata/modules/stvBidAdapter.json
+++ b/metadata/modules/stvBidAdapter.json
@@ -2,10 +2,32 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://tcf.adtech.app/gen/deviceStorageDisclosure/stv.json": {
- "timestamp": "2026-05-18T20:05:09.401Z",
+ "timestamp": "2026-06-15T17:40:09.386Z",
"disclosures": []
}
},
+ "purposes": {
+ "134": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/sublimeBidAdapter.json b/metadata/modules/sublimeBidAdapter.json
index 4870309daf4..bb6c78267f4 100644
--- a/metadata/modules/sublimeBidAdapter.json
+++ b/metadata/modules/sublimeBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://gdpr.ayads.co/cookiepolicy.json": {
- "timestamp": "2026-05-18T20:05:10.213Z",
+ "timestamp": "2026-06-15T17:40:10.451Z",
"disclosures": [
{
"identifier": "dnt",
@@ -82,6 +82,22 @@
]
}
},
+ "purposes": {
+ "114": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/suimBidAdapter.json b/metadata/modules/suimBidAdapter.json
index f0f6a2e6aa0..6971c7921f5 100644
--- a/metadata/modules/suimBidAdapter.json
+++ b/metadata/modules/suimBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/symitriAnalyticsAdapter.json b/metadata/modules/symitriAnalyticsAdapter.json
index ff215d73bf8..f462128a4d5 100644
--- a/metadata/modules/symitriAnalyticsAdapter.json
+++ b/metadata/modules/symitriAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/symitriDapRtdProvider.json b/metadata/modules/symitriDapRtdProvider.json
index 2e78c2b534e..5416d4ed331 100644
--- a/metadata/modules/symitriDapRtdProvider.json
+++ b/metadata/modules/symitriDapRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/taboolaBidAdapter.json b/metadata/modules/taboolaBidAdapter.json
index b44ae0f73ca..153a06b5688 100644
--- a/metadata/modules/taboolaBidAdapter.json
+++ b/metadata/modules/taboolaBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://accessrequest.taboola.com/iab-tcf-v2-disclosure.json": {
- "timestamp": "2026-05-18T20:05:10.609Z",
+ "timestamp": "2026-06-15T17:40:11.004Z",
"disclosures": [
{
"identifier": "trc_cookie_storage",
@@ -486,6 +486,33 @@
]
}
},
+ "purposes": {
+ "42": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 10,
+ 11
+ ],
+ "legIntPurposes": [
+ 9
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8,
+ 10,
+ 11
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/taboolaIdSystem.json b/metadata/modules/taboolaIdSystem.json
index e451682e7f4..3943628b1f1 100644
--- a/metadata/modules/taboolaIdSystem.json
+++ b/metadata/modules/taboolaIdSystem.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://accessrequest.taboola.com/iab-tcf-v2-disclosure.json": {
- "timestamp": "2026-05-18T20:05:11.414Z",
+ "timestamp": "2026-06-15T17:40:12.005Z",
"disclosures": [
{
"identifier": "trc_cookie_storage",
@@ -486,6 +486,33 @@
]
}
},
+ "purposes": {
+ "42": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 10,
+ 11
+ ],
+ "legIntPurposes": [
+ 9
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8,
+ 10,
+ 11
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/tadvertisingBidAdapter.json b/metadata/modules/tadvertisingBidAdapter.json
index d9c4197b3df..d67f64d3ddc 100644
--- a/metadata/modules/tadvertisingBidAdapter.json
+++ b/metadata/modules/tadvertisingBidAdapter.json
@@ -2,10 +2,29 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://tcf.emetriq.de/deviceStorageDisclosure.json": {
- "timestamp": "2026-05-18T20:05:11.415Z",
+ "timestamp": "2026-06-15T17:40:12.006Z",
"disclosures": []
}
},
+ "purposes": {
+ "213": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/tagorasBidAdapter.json b/metadata/modules/tagorasBidAdapter.json
index 21be6297b1f..32f55abb250 100644
--- a/metadata/modules/tagorasBidAdapter.json
+++ b/metadata/modules/tagorasBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/talkadsBidAdapter.json b/metadata/modules/talkadsBidAdapter.json
index 05988f3c23e..68730dffc02 100644
--- a/metadata/modules/talkadsBidAdapter.json
+++ b/metadata/modules/talkadsBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/tapadIdSystem.json b/metadata/modules/tapadIdSystem.json
index 5e0e4464ed6..db7c1671509 100644
--- a/metadata/modules/tapadIdSystem.json
+++ b/metadata/modules/tapadIdSystem.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/tapnativeBidAdapter.json b/metadata/modules/tapnativeBidAdapter.json
index 3aef210fc05..f9312c473c1 100644
--- a/metadata/modules/tapnativeBidAdapter.json
+++ b/metadata/modules/tapnativeBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/tappxBidAdapter.json b/metadata/modules/tappxBidAdapter.json
index ef45418b7d2..877e7832429 100644
--- a/metadata/modules/tappxBidAdapter.json
+++ b/metadata/modules/tappxBidAdapter.json
@@ -2,10 +2,28 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://tappx.com/devicestorage.json": {
- "timestamp": "2026-05-18T20:05:11.853Z",
+ "timestamp": "2026-06-15T17:40:12.222Z",
"disclosures": []
}
},
+ "purposes": {
+ "628": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1,
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/targetVideoBidAdapter.json b/metadata/modules/targetVideoBidAdapter.json
index b45d2531a90..d0286866f43 100644
--- a/metadata/modules/targetVideoBidAdapter.json
+++ b/metadata/modules/targetVideoBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://target-video.com/vendors-device-storage-and-operational-disclosures.json": {
- "timestamp": "2026-05-18T20:05:12.093Z",
+ "timestamp": "2026-06-15T17:40:12.524Z",
"disclosures": [
{
"identifier": "brid_location",
@@ -112,6 +112,21 @@
]
}
},
+ "purposes": {
+ "786": {
+ "purposes": [
+ 1,
+ 2,
+ 4,
+ 7,
+ 8,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/teadsBidAdapter.json b/metadata/modules/teadsBidAdapter.json
index 2b9b81d1a24..cd0765f1ceb 100644
--- a/metadata/modules/teadsBidAdapter.json
+++ b/metadata/modules/teadsBidAdapter.json
@@ -2,10 +2,29 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://iab-cookie-disclosure.teads.tv/deviceStorage.json": {
- "timestamp": "2026-05-18T20:05:12.093Z",
+ "timestamp": "2026-06-15T17:40:12.525Z",
"disclosures": []
}
},
+ "purposes": {
+ "132": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [
+ 2
+ ],
+ "flexiblePurposes": [
+ 2
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/teadsIdSystem.json b/metadata/modules/teadsIdSystem.json
index 93b7a68ec97..f0089bbef02 100644
--- a/metadata/modules/teadsIdSystem.json
+++ b/metadata/modules/teadsIdSystem.json
@@ -2,10 +2,29 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://iab-cookie-disclosure.teads.tv/deviceStorage.json": {
- "timestamp": "2026-05-18T20:05:12.129Z",
+ "timestamp": "2026-06-15T17:40:12.580Z",
"disclosures": []
}
},
+ "purposes": {
+ "132": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [
+ 2
+ ],
+ "flexiblePurposes": [
+ 2
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/tealBidAdapter.json b/metadata/modules/tealBidAdapter.json
index ecbf29fedbe..deea982393e 100644
--- a/metadata/modules/tealBidAdapter.json
+++ b/metadata/modules/tealBidAdapter.json
@@ -2,10 +2,30 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://c.bids.ws/iab/disclosures.json": {
- "timestamp": "2026-05-18T20:05:12.129Z",
+ "timestamp": "2026-06-15T17:40:12.580Z",
"disclosures": []
}
},
+ "purposes": {
+ "1378": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/temedyaBidAdapter.json b/metadata/modules/temedyaBidAdapter.json
index 054d22d161a..c5bec77d1ad 100644
--- a/metadata/modules/temedyaBidAdapter.json
+++ b/metadata/modules/temedyaBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/teqBlazeDemoBidAdapter.json b/metadata/modules/teqBlazeDemoBidAdapter.json
index 34065f3468f..8632eaf10cf 100644
--- a/metadata/modules/teqBlazeDemoBidAdapter.json
+++ b/metadata/modules/teqBlazeDemoBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/teqBlazeSalesAgentBidAdapter.json b/metadata/modules/teqBlazeSalesAgentBidAdapter.json
index 2442df240d1..6eace824fbd 100644
--- a/metadata/modules/teqBlazeSalesAgentBidAdapter.json
+++ b/metadata/modules/teqBlazeSalesAgentBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/terceptAnalyticsAdapter.json b/metadata/modules/terceptAnalyticsAdapter.json
index 2255c515104..95adfa9c831 100644
--- a/metadata/modules/terceptAnalyticsAdapter.json
+++ b/metadata/modules/terceptAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/theAdxBidAdapter.json b/metadata/modules/theAdxBidAdapter.json
index 33d503c4f9d..e6c7efa0778 100644
--- a/metadata/modules/theAdxBidAdapter.json
+++ b/metadata/modules/theAdxBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/themoneytizerBidAdapter.json b/metadata/modules/themoneytizerBidAdapter.json
index fac15fb8f1e..720edc4bbeb 100644
--- a/metadata/modules/themoneytizerBidAdapter.json
+++ b/metadata/modules/themoneytizerBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/timeoutRtdProvider.json b/metadata/modules/timeoutRtdProvider.json
index 4d8a1a63e65..86f10be976f 100644
--- a/metadata/modules/timeoutRtdProvider.json
+++ b/metadata/modules/timeoutRtdProvider.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/tncIdSystem.json b/metadata/modules/tncIdSystem.json
index 67fca247da8..129f7cdfa60 100644
--- a/metadata/modules/tncIdSystem.json
+++ b/metadata/modules/tncIdSystem.json
@@ -2,10 +2,33 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://js.tncid.app/iab-tcf-device-storage-disclosure.json": {
- "timestamp": "2026-05-18T20:05:12.165Z",
+ "timestamp": "2026-06-15T17:40:12.661Z",
"disclosures": []
}
},
+ "purposes": {
+ "750": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1,
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/tne_catalystBidAdapter.json b/metadata/modules/tne_catalystBidAdapter.json
index 11e716a37f7..7b2a47608f0 100644
--- a/metadata/modules/tne_catalystBidAdapter.json
+++ b/metadata/modules/tne_catalystBidAdapter.json
@@ -2,10 +2,30 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://ads.thenexusengine.com/tcf-disclosure.json": {
- "timestamp": "2026-05-18T20:05:12.289Z",
+ "timestamp": "2026-06-15T17:40:12.756Z",
"disclosures": []
}
},
+ "purposes": {
+ "1494": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 11
+ ],
+ "legIntPurposes": [
+ 10
+ ],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1,
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/topicsFpdModule.json b/metadata/modules/topicsFpdModule.json
index 5c4dc63c5d8..9a017f99b1f 100644
--- a/metadata/modules/topicsFpdModule.json
+++ b/metadata/modules/topicsFpdModule.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.jsdelivr.net/gh/prebid/Prebid.js/metadata/disclosures/prebid/topicsFpdModule.json": {
- "timestamp": "2026-05-18T20:03:46.494Z",
+ "timestamp": "2026-06-15T17:38:44.238Z",
"disclosures": [
{
"identifier": "prebid:topics",
@@ -18,6 +18,7 @@
]
}
},
+ "purposes": {},
"components": [
{
"componentType": "prebid",
diff --git a/metadata/modules/toponBidAdapter.json b/metadata/modules/toponBidAdapter.json
index da8354313c5..b44e05de7a2 100644
--- a/metadata/modules/toponBidAdapter.json
+++ b/metadata/modules/toponBidAdapter.json
@@ -2,10 +2,28 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://mores.toponad.net/tcf/toponads_tcf_disclosure.json": {
- "timestamp": "2026-05-18T20:05:12.392Z",
+ "timestamp": "2026-06-15T17:40:12.928Z",
"disclosures": []
}
},
+ "purposes": {
+ "1305": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 11
+ ],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/tpmnBidAdapter.json b/metadata/modules/tpmnBidAdapter.json
index a0dbc82b406..4de6a9de649 100644
--- a/metadata/modules/tpmnBidAdapter.json
+++ b/metadata/modules/tpmnBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/trafficgateBidAdapter.json b/metadata/modules/trafficgateBidAdapter.json
index e63478cede3..05f0ccc67d3 100644
--- a/metadata/modules/trafficgateBidAdapter.json
+++ b/metadata/modules/trafficgateBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/trionBidAdapter.json b/metadata/modules/trionBidAdapter.json
index 9d5d4f7b393..09b155cc62f 100644
--- a/metadata/modules/trionBidAdapter.json
+++ b/metadata/modules/trionBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/tripleliftBidAdapter.json b/metadata/modules/tripleliftBidAdapter.json
index ce6e76c44f6..4588380601e 100644
--- a/metadata/modules/tripleliftBidAdapter.json
+++ b/metadata/modules/tripleliftBidAdapter.json
@@ -2,10 +2,34 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://triplelift.com/.well-known/deviceStorage.json": {
- "timestamp": "2026-05-18T20:05:12.677Z",
+ "timestamp": "2026-06-15T17:40:13.127Z",
"disclosures": []
}
},
+ "purposes": {
+ "28": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/truereachBidAdapter.json b/metadata/modules/truereachBidAdapter.json
index ce7067bea6a..7e89c9c1d09 100644
--- a/metadata/modules/truereachBidAdapter.json
+++ b/metadata/modules/truereachBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/trustxBidAdapter.json b/metadata/modules/trustxBidAdapter.json
index 5f4821f2f56..f595fdaa59f 100644
--- a/metadata/modules/trustxBidAdapter.json
+++ b/metadata/modules/trustxBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/ttdBidAdapter.json b/metadata/modules/ttdBidAdapter.json
index 9984dbe196d..194a1290936 100644
--- a/metadata/modules/ttdBidAdapter.json
+++ b/metadata/modules/ttdBidAdapter.json
@@ -2,10 +2,32 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://ttd-misc-public-assets.s3.us-west-2.amazonaws.com/deviceStorageDisclosureURL.json": {
- "timestamp": "2026-05-18T20:05:12.925Z",
+ "timestamp": "2026-06-15T17:40:13.405Z",
"disclosures": []
}
},
+ "purposes": {
+ "21": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/twistDigitalBidAdapter.json b/metadata/modules/twistDigitalBidAdapter.json
index 577737a60e7..f35314fddbf 100644
--- a/metadata/modules/twistDigitalBidAdapter.json
+++ b/metadata/modules/twistDigitalBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://twistdigital.net/iab.json": {
- "timestamp": "2026-05-18T20:05:12.925Z",
+ "timestamp": "2026-06-15T17:40:13.405Z",
"disclosures": [
{
"identifier": "vdzj1_{id}",
@@ -11,9 +11,7 @@
"cookieRefresh": false,
"purposes": [
3,
- 4,
- 5,
- 6
+ 4
]
},
{
@@ -23,14 +21,34 @@
"cookieRefresh": false,
"purposes": [
3,
- 4,
- 5,
- 6
+ 4
]
}
]
}
},
+ "purposes": {
+ "1292": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 9
+ ],
+ "legIntPurposes": [
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2
+ ],
+ "specialFeatures": [
+ 1,
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/ucfunnelAnalyticsAdapter.json b/metadata/modules/ucfunnelAnalyticsAdapter.json
index b6c4106bc8e..1dd4c41e018 100644
--- a/metadata/modules/ucfunnelAnalyticsAdapter.json
+++ b/metadata/modules/ucfunnelAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/ucfunnelBidAdapter.json b/metadata/modules/ucfunnelBidAdapter.json
index 940a8d8b81f..97df92e9a1f 100644
--- a/metadata/modules/ucfunnelBidAdapter.json
+++ b/metadata/modules/ucfunnelBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/uid2IdSystem.json b/metadata/modules/uid2IdSystem.json
index eda901ff5f1..8310f2824ea 100644
--- a/metadata/modules/uid2IdSystem.json
+++ b/metadata/modules/uid2IdSystem.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/underdogmediaBidAdapter.json b/metadata/modules/underdogmediaBidAdapter.json
index 4dd2f1f4bc6..212c27cb3ec 100644
--- a/metadata/modules/underdogmediaBidAdapter.json
+++ b/metadata/modules/underdogmediaBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://bid.underdog.media/deviceStorage.json": {
- "timestamp": "2026-05-18T20:05:13.055Z",
+ "timestamp": "2026-06-15T17:40:13.657Z",
"disclosures": [
{
"identifier": "udm_edge_floater_fcap",
@@ -57,6 +57,18 @@
]
}
},
+ "purposes": {
+ "159": {
+ "purposes": [
+ 1,
+ 2,
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/undertoneBidAdapter.json b/metadata/modules/undertoneBidAdapter.json
index d504c1b29c5..b7961e8365f 100644
--- a/metadata/modules/undertoneBidAdapter.json
+++ b/metadata/modules/undertoneBidAdapter.json
@@ -2,10 +2,31 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.undertone.com/js/deviceStorage.json": {
- "timestamp": "2026-05-18T20:05:13.182Z",
+ "timestamp": "2026-06-15T17:40:13.828Z",
"disclosures": []
}
},
+ "purposes": {
+ "677": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6
+ ],
+ "legIntPurposes": [
+ 7,
+ 9,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/unicornBidAdapter.json b/metadata/modules/unicornBidAdapter.json
index c330896ba3a..979b493c732 100644
--- a/metadata/modules/unicornBidAdapter.json
+++ b/metadata/modules/unicornBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/unifiedIdSystem.json b/metadata/modules/unifiedIdSystem.json
index 7f60d1d7bc4..02429f187d5 100644
--- a/metadata/modules/unifiedIdSystem.json
+++ b/metadata/modules/unifiedIdSystem.json
@@ -2,10 +2,32 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://ttd-misc-public-assets.s3.us-west-2.amazonaws.com/deviceStorageDisclosureURL.json": {
- "timestamp": "2026-05-18T20:05:13.377Z",
+ "timestamp": "2026-06-15T17:40:14.147Z",
"disclosures": []
}
},
+ "purposes": {
+ "21": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/uniquestAnalyticsAdapter.json b/metadata/modules/uniquestAnalyticsAdapter.json
index 49fb7687644..239042ba0a3 100644
--- a/metadata/modules/uniquestAnalyticsAdapter.json
+++ b/metadata/modules/uniquestAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/uniquestBidAdapter.json b/metadata/modules/uniquestBidAdapter.json
index 606f3a8e02a..07450fbe333 100644
--- a/metadata/modules/uniquestBidAdapter.json
+++ b/metadata/modules/uniquestBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/uniquest_widgetBidAdapter.json b/metadata/modules/uniquest_widgetBidAdapter.json
index 6caf1c1516d..083fc2adcc5 100644
--- a/metadata/modules/uniquest_widgetBidAdapter.json
+++ b/metadata/modules/uniquest_widgetBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/unrulyBidAdapter.json b/metadata/modules/unrulyBidAdapter.json
index 6cb9c3dc244..b96753c54bc 100644
--- a/metadata/modules/unrulyBidAdapter.json
+++ b/metadata/modules/unrulyBidAdapter.json
@@ -2,10 +2,31 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://video.unrulymedia.com/deviceStorageDisclosure.json": {
- "timestamp": "2026-05-18T20:05:13.377Z",
+ "timestamp": "2026-06-15T17:40:14.147Z",
"disclosures": []
}
},
+ "purposes": {
+ "36": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 7,
+ 9,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 9
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/userId.json b/metadata/modules/userId.json
index e3c61b494e3..1e2ca3da43e 100644
--- a/metadata/modules/userId.json
+++ b/metadata/modules/userId.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.jsdelivr.net/gh/prebid/Prebid.js/metadata/disclosures/prebid/userId-optout.json": {
- "timestamp": "2026-05-18T20:03:46.496Z",
+ "timestamp": "2026-06-15T17:38:44.239Z",
"disclosures": [
{
"identifier": "_pbjs_id_optout",
@@ -19,6 +19,7 @@
]
}
},
+ "purposes": {},
"components": [
{
"componentType": "prebid",
diff --git a/metadata/modules/utiqIdSystem.json b/metadata/modules/utiqIdSystem.json
index 30ee56a92bf..ca4083c5679 100644
--- a/metadata/modules/utiqIdSystem.json
+++ b/metadata/modules/utiqIdSystem.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.jsdelivr.net/gh/prebid/Prebid.js/metadata/disclosures/modules/utiqDeviceStorageDisclosure.json": {
- "timestamp": "2026-05-18T20:05:13.377Z",
+ "timestamp": "2026-06-15T17:40:14.148Z",
"disclosures": [
{
"identifier": "utiqPass",
@@ -21,6 +21,7 @@
]
}
},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/utiqMtpIdSystem.json b/metadata/modules/utiqMtpIdSystem.json
index cf0f62097f5..662dc3165c0 100644
--- a/metadata/modules/utiqMtpIdSystem.json
+++ b/metadata/modules/utiqMtpIdSystem.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.jsdelivr.net/gh/prebid/Prebid.js/metadata/disclosures/modules/utiqDeviceStorageDisclosure.json": {
- "timestamp": "2026-05-18T20:05:13.379Z",
+ "timestamp": "2026-06-15T17:40:14.148Z",
"disclosures": [
{
"identifier": "utiqPass",
@@ -21,6 +21,7 @@
]
}
},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/validationFpdModule.json b/metadata/modules/validationFpdModule.json
index aae9cb79190..74cf5c5d042 100644
--- a/metadata/modules/validationFpdModule.json
+++ b/metadata/modules/validationFpdModule.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.jsdelivr.net/gh/prebid/Prebid.js/metadata/disclosures/prebid/sharedId-optout.json": {
- "timestamp": "2026-05-18T20:03:46.495Z",
+ "timestamp": "2026-06-15T17:38:44.239Z",
"disclosures": [
{
"identifier": "_pubcid_optout",
@@ -24,6 +24,7 @@
]
}
},
+ "purposes": {},
"components": [
{
"componentType": "prebid",
diff --git a/metadata/modules/valuadBidAdapter.json b/metadata/modules/valuadBidAdapter.json
index 77c0033cbe2..04fb244dfcf 100644
--- a/metadata/modules/valuadBidAdapter.json
+++ b/metadata/modules/valuadBidAdapter.json
@@ -2,10 +2,21 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.valuad.cloud/tcfdevice.json": {
- "timestamp": "2026-05-18T20:05:13.379Z",
+ "timestamp": "2026-06-15T17:40:14.148Z",
"disclosures": []
}
},
+ "purposes": {
+ "1478": {
+ "purposes": [
+ 1,
+ 2
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/vdoaiBidAdapter.json b/metadata/modules/vdoaiBidAdapter.json
index bd923c9d36e..e5e92e9920b 100644
--- a/metadata/modules/vdoaiBidAdapter.json
+++ b/metadata/modules/vdoaiBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/ventesBidAdapter.json b/metadata/modules/ventesBidAdapter.json
index 9f4d8112fb2..687005ead5b 100644
--- a/metadata/modules/ventesBidAdapter.json
+++ b/metadata/modules/ventesBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/verbenBidAdapter.json b/metadata/modules/verbenBidAdapter.json
index 47a939ac97a..593e62d6381 100644
--- a/metadata/modules/verbenBidAdapter.json
+++ b/metadata/modules/verbenBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/viantBidAdapter.json b/metadata/modules/viantBidAdapter.json
index a593d3a248c..21677236ee0 100644
--- a/metadata/modules/viantBidAdapter.json
+++ b/metadata/modules/viantBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/vibrantmediaBidAdapter.json b/metadata/modules/vibrantmediaBidAdapter.json
index 44294fc8f60..180306f4204 100644
--- a/metadata/modules/vibrantmediaBidAdapter.json
+++ b/metadata/modules/vibrantmediaBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/vidazooBidAdapter.json b/metadata/modules/vidazooBidAdapter.json
index 56815c4f7f8..e75803ef757 100644
--- a/metadata/modules/vidazooBidAdapter.json
+++ b/metadata/modules/vidazooBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://vidazoo.com/gdpr-tcf/deviceStorage.json": {
- "timestamp": "2026-05-18T20:05:13.675Z",
+ "timestamp": "2026-06-15T17:40:14.470Z",
"disclosures": [
{
"identifier": "ck48wz12sqj7",
@@ -77,6 +77,27 @@
]
}
},
+ "purposes": {
+ "744": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/videobyteBidAdapter.json b/metadata/modules/videobyteBidAdapter.json
index 7d8e661e20c..a4ffde0133e 100644
--- a/metadata/modules/videobyteBidAdapter.json
+++ b/metadata/modules/videobyteBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/videoheroesBidAdapter.json b/metadata/modules/videoheroesBidAdapter.json
index 7b43e0bb728..2be2d419731 100644
--- a/metadata/modules/videoheroesBidAdapter.json
+++ b/metadata/modules/videoheroesBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/videonowBidAdapter.json b/metadata/modules/videonowBidAdapter.json
index dbc945a7e04..bcca6ba819c 100644
--- a/metadata/modules/videonowBidAdapter.json
+++ b/metadata/modules/videonowBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/videoreachBidAdapter.json b/metadata/modules/videoreachBidAdapter.json
index f36b4a92037..5f9e5fd9065 100644
--- a/metadata/modules/videoreachBidAdapter.json
+++ b/metadata/modules/videoreachBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/vidoomyBidAdapter.json b/metadata/modules/vidoomyBidAdapter.json
index 9e7d3190e9b..35c210a2cc0 100644
--- a/metadata/modules/vidoomyBidAdapter.json
+++ b/metadata/modules/vidoomyBidAdapter.json
@@ -2,10 +2,28 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://vidoomy.com/storageurl/devicestoragediscurl.json": {
- "timestamp": "2026-05-18T20:05:13.820Z",
+ "timestamp": "2026-06-15T17:40:14.831Z",
"disclosures": []
}
},
+ "purposes": {
+ "380": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/viewdeosDXBidAdapter.json b/metadata/modules/viewdeosDXBidAdapter.json
index 18aff1f272c..dd4ffc66ff9 100644
--- a/metadata/modules/viewdeosDXBidAdapter.json
+++ b/metadata/modules/viewdeosDXBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/viouslyBidAdapter.json b/metadata/modules/viouslyBidAdapter.json
index 2833320e2ac..07de78a4bcc 100644
--- a/metadata/modules/viouslyBidAdapter.json
+++ b/metadata/modules/viouslyBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://bid.bricks-co.com/.well-known/deviceStorage.json": {
- "timestamp": "2026-05-18T20:05:14.434Z",
+ "timestamp": "2026-06-15T17:40:15.491Z",
"disclosures": [
{
"identifier": "fastCMP-addtlConsent",
@@ -28,6 +28,34 @@
]
}
},
+ "purposes": {
+ "1028": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 5,
+ 6
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/viqeoBidAdapter.json b/metadata/modules/viqeoBidAdapter.json
index 40b57b80b65..59610e271ea 100644
--- a/metadata/modules/viqeoBidAdapter.json
+++ b/metadata/modules/viqeoBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/visiblemeasuresBidAdapter.json b/metadata/modules/visiblemeasuresBidAdapter.json
index c64248bc05e..f9454a6dfba 100644
--- a/metadata/modules/visiblemeasuresBidAdapter.json
+++ b/metadata/modules/visiblemeasuresBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/vistarsBidAdapter.json b/metadata/modules/vistarsBidAdapter.json
index 29a78ec3165..484a825d608 100644
--- a/metadata/modules/vistarsBidAdapter.json
+++ b/metadata/modules/vistarsBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/visxBidAdapter.json b/metadata/modules/visxBidAdapter.json
index 156de38b9b6..a76e9462ee4 100644
--- a/metadata/modules/visxBidAdapter.json
+++ b/metadata/modules/visxBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.yoc.com/visx/sellers/deviceStorage.json": {
- "timestamp": "2026-05-18T20:05:14.435Z",
+ "timestamp": "2026-06-15T17:40:15.491Z",
"disclosures": [
{
"identifier": "__vads",
@@ -85,6 +85,28 @@
]
}
},
+ "purposes": {
+ "154": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [
+ 2,
+ 7
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/vlybyBidAdapter.json b/metadata/modules/vlybyBidAdapter.json
index 21bcad04419..1b8de147511 100644
--- a/metadata/modules/vlybyBidAdapter.json
+++ b/metadata/modules/vlybyBidAdapter.json
@@ -2,10 +2,21 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.vlyby.com/conf/iab/gvl.json": {
- "timestamp": "2026-05-18T20:05:14.663Z",
+ "timestamp": "2026-06-15T17:40:16.100Z",
"disclosures": []
}
},
+ "purposes": {
+ "1009": {
+ "purposes": [
+ 2,
+ 7
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/voxBidAdapter.json b/metadata/modules/voxBidAdapter.json
index 9985c2099d8..85789d960fe 100644
--- a/metadata/modules/voxBidAdapter.json
+++ b/metadata/modules/voxBidAdapter.json
@@ -2,10 +2,33 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://st.hybrid.ai/policy/deviceStorage.json": {
- "timestamp": "2026-05-18T20:05:15.084Z",
+ "timestamp": "2026-06-15T17:40:16.590Z",
"disclosures": []
}
},
+ "purposes": {
+ "206": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [
+ 2
+ ],
+ "specialFeatures": [
+ 1,
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/vrtcalBidAdapter.json b/metadata/modules/vrtcalBidAdapter.json
index e3f1933e383..fb5579857be 100644
--- a/metadata/modules/vrtcalBidAdapter.json
+++ b/metadata/modules/vrtcalBidAdapter.json
@@ -2,10 +2,22 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://vrtcal.com/docs/gdpr-tcf-disclosures.json": {
- "timestamp": "2026-05-18T20:05:15.084Z",
+ "timestamp": "2026-06-15T17:40:16.591Z",
"disclosures": []
}
},
+ "purposes": {
+ "706": {
+ "purposes": [],
+ "legIntPurposes": [
+ 2
+ ],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/vuukleBidAdapter.json b/metadata/modules/vuukleBidAdapter.json
index 866e8b4acba..941f891feaa 100644
--- a/metadata/modules/vuukleBidAdapter.json
+++ b/metadata/modules/vuukleBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.vuukle.com/data-privacy/deviceStorage.json": {
- "timestamp": "2026-05-18T20:05:15.197Z",
+ "timestamp": "2026-06-15T17:40:16.795Z",
"disclosures": [
{
"identifier": "vuukle_token",
@@ -408,6 +408,34 @@
]
}
},
+ "purposes": {
+ "1004": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ "specialFeatures": [
+ 1,
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/waardexBidAdapter.json b/metadata/modules/waardexBidAdapter.json
index 740b3001807..a98776819e7 100644
--- a/metadata/modules/waardexBidAdapter.json
+++ b/metadata/modules/waardexBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/weboramaRtdProvider.json b/metadata/modules/weboramaRtdProvider.json
index cb4b2bc7927..3eb0c33c5e2 100644
--- a/metadata/modules/weboramaRtdProvider.json
+++ b/metadata/modules/weboramaRtdProvider.json
@@ -2,10 +2,40 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cstatic.weborama.fr/tcf/deviceStorage.json": {
- "timestamp": "2026-05-18T20:05:15.464Z",
+ "timestamp": "2026-06-15T17:40:17.080Z",
"disclosures": []
}
},
+ "purposes": {
+ "284": {
+ "purposes": [
+ 1,
+ 3,
+ 4,
+ 5,
+ 6
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/welectBidAdapter.json b/metadata/modules/welectBidAdapter.json
index 397b43fa89e..24eaaa0b308 100644
--- a/metadata/modules/welectBidAdapter.json
+++ b/metadata/modules/welectBidAdapter.json
@@ -2,10 +2,24 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://www.welect.de/deviceStorage.json": {
- "timestamp": "2026-05-18T20:05:15.652Z",
+ "timestamp": "2026-06-15T17:40:17.429Z",
"disclosures": []
}
},
+ "purposes": {
+ "282": {
+ "purposes": [
+ 1
+ ],
+ "legIntPurposes": [
+ 2
+ ],
+ "flexiblePurposes": [
+ 2
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/widespaceBidAdapter.json b/metadata/modules/widespaceBidAdapter.json
index f757d58fe94..12a7e3c1b75 100644
--- a/metadata/modules/widespaceBidAdapter.json
+++ b/metadata/modules/widespaceBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/winrBidAdapter.json b/metadata/modules/winrBidAdapter.json
index e36f51fbf6b..9bcf706460d 100644
--- a/metadata/modules/winrBidAdapter.json
+++ b/metadata/modules/winrBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/wipesBidAdapter.json b/metadata/modules/wipesBidAdapter.json
index 2442394bbbe..30184dc1620 100644
--- a/metadata/modules/wipesBidAdapter.json
+++ b/metadata/modules/wipesBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/wurflRtdProvider.json b/metadata/modules/wurflRtdProvider.json
index f05d9834fbd..3b9e6647bc4 100644
--- a/metadata/modules/wurflRtdProvider.json
+++ b/metadata/modules/wurflRtdProvider.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn.jsdelivr.net/gh/prebid/Prebid.js/metadata/disclosures/modules/wurflRtdProvider.json": {
- "timestamp": "2026-05-18T20:05:16.239Z",
+ "timestamp": "2026-06-15T17:40:18.195Z",
"disclosures": [
{
"identifier": "wurflrtd",
@@ -12,6 +12,7 @@
]
}
},
+ "purposes": {},
"components": [
{
"componentType": "rtd",
diff --git a/metadata/modules/xeBidAdapter.json b/metadata/modules/xeBidAdapter.json
index a76d9ac9a06..5f77857ed03 100644
--- a/metadata/modules/xeBidAdapter.json
+++ b/metadata/modules/xeBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/yahooAdsBidAdapter.json b/metadata/modules/yahooAdsBidAdapter.json
index 560b83e2557..e9901dff3e3 100644
--- a/metadata/modules/yahooAdsBidAdapter.json
+++ b/metadata/modules/yahooAdsBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://meta.legal.yahoo.com/iab-tcf/v2/device-storage-disclosure.json": {
- "timestamp": "2026-05-18T20:05:16.239Z",
+ "timestamp": "2026-06-15T17:40:18.197Z",
"disclosures": [
{
"identifier": "vmcid",
@@ -57,6 +57,28 @@
]
}
},
+ "purposes": {
+ "25": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/yaleoBidAdapter.json b/metadata/modules/yaleoBidAdapter.json
index 845154df991..52ee558366e 100644
--- a/metadata/modules/yaleoBidAdapter.json
+++ b/metadata/modules/yaleoBidAdapter.json
@@ -2,10 +2,32 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://audienzz.com/device_storage_disclosure_vendor_783.json": {
- "timestamp": "2026-05-18T20:05:16.240Z",
+ "timestamp": "2026-06-15T17:40:18.197Z",
"disclosures": []
}
},
+ "purposes": {
+ "783": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 2
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/yandexAnalyticsAdapter.json b/metadata/modules/yandexAnalyticsAdapter.json
index 702fa61b188..ef7ca454e3b 100644
--- a/metadata/modules/yandexAnalyticsAdapter.json
+++ b/metadata/modules/yandexAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/yandexBidAdapter.json b/metadata/modules/yandexBidAdapter.json
index 2f0c7028889..39d407f204c 100644
--- a/metadata/modules/yandexBidAdapter.json
+++ b/metadata/modules/yandexBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/yandexIdSystem.json b/metadata/modules/yandexIdSystem.json
index 615f95581b8..ec4a33246e3 100644
--- a/metadata/modules/yandexIdSystem.json
+++ b/metadata/modules/yandexIdSystem.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/yieldlabBidAdapter.json b/metadata/modules/yieldlabBidAdapter.json
index 36421bc9452..788db582ff0 100644
--- a/metadata/modules/yieldlabBidAdapter.json
+++ b/metadata/modules/yieldlabBidAdapter.json
@@ -2,10 +2,27 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://ad.yieldlab.net/deviceStorage.json": {
- "timestamp": "2026-05-18T20:05:16.240Z",
+ "timestamp": "2026-06-15T17:40:18.197Z",
"disclosures": []
}
},
+ "purposes": {
+ "70": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 7,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": [
+ 1
+ ]
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/yieldliftBidAdapter.json b/metadata/modules/yieldliftBidAdapter.json
index 4d2fb03b69f..dc4e8608ddb 100644
--- a/metadata/modules/yieldliftBidAdapter.json
+++ b/metadata/modules/yieldliftBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/yieldloveBidAdapter.json b/metadata/modules/yieldloveBidAdapter.json
index 0f7fcbf4466..7202eb2c0f6 100644
--- a/metadata/modules/yieldloveBidAdapter.json
+++ b/metadata/modules/yieldloveBidAdapter.json
@@ -2,7 +2,7 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://cdn-a.yieldlove.com/deviceStorage.json": {
- "timestamp": "2026-05-18T20:05:16.618Z",
+ "timestamp": "2026-06-15T17:40:18.453Z",
"disclosures": [
{
"identifier": "session_id",
@@ -35,6 +35,26 @@
]
}
},
+ "purposes": {
+ "251": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/yieldmoBidAdapter.json b/metadata/modules/yieldmoBidAdapter.json
index bb81b045ad2..c42882d86ab 100644
--- a/metadata/modules/yieldmoBidAdapter.json
+++ b/metadata/modules/yieldmoBidAdapter.json
@@ -2,10 +2,32 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://devicestoragedisclosureurl.yieldmo.com/deviceStorage.json": {
- "timestamp": "2026-05-18T20:05:17.040Z",
+ "timestamp": "2026-06-15T17:40:18.627Z",
"disclosures": []
}
},
+ "purposes": {
+ "173": {
+ "purposes": [
+ 1,
+ 3,
+ 4
+ ],
+ "legIntPurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "flexiblePurposes": [
+ 2,
+ 7,
+ 9,
+ 10
+ ],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/yieldoneAnalyticsAdapter.json b/metadata/modules/yieldoneAnalyticsAdapter.json
index 520f78be9d1..671c82d462d 100644
--- a/metadata/modules/yieldoneAnalyticsAdapter.json
+++ b/metadata/modules/yieldoneAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/yieldoneBidAdapter.json b/metadata/modules/yieldoneBidAdapter.json
index 7f8be417705..d6620d813dc 100644
--- a/metadata/modules/yieldoneBidAdapter.json
+++ b/metadata/modules/yieldoneBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/yuktamediaAnalyticsAdapter.json b/metadata/modules/yuktamediaAnalyticsAdapter.json
index 6f15568aeb1..88a9cbd5268 100644
--- a/metadata/modules/yuktamediaAnalyticsAdapter.json
+++ b/metadata/modules/yuktamediaAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/zeotapIdPlusIdSystem.json b/metadata/modules/zeotapIdPlusIdSystem.json
index 38dcc4beaf2..256865b1b1f 100644
--- a/metadata/modules/zeotapIdPlusIdSystem.json
+++ b/metadata/modules/zeotapIdPlusIdSystem.json
@@ -2,10 +2,23 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://zd.rqtrk.eu/assets/iab-disclosure.json": {
- "timestamp": "2026-05-18T20:05:17.223Z",
+ "timestamp": "2026-06-15T17:40:18.874Z",
"disclosures": []
}
},
+ "purposes": {
+ "301": {
+ "purposes": [
+ 1,
+ 3,
+ 5,
+ 10
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "userId",
diff --git a/metadata/modules/zeta_globalBidAdapter.json b/metadata/modules/zeta_globalBidAdapter.json
index 0eb8b88a594..56f9178243f 100644
--- a/metadata/modules/zeta_globalBidAdapter.json
+++ b/metadata/modules/zeta_globalBidAdapter.json
@@ -2,10 +2,30 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://zetaglobal.com/ZetaDeviceStorageDisclosure.json": {
- "timestamp": "2026-05-18T20:05:17.606Z",
+ "timestamp": "2026-06-15T17:40:19.358Z",
"disclosures": []
}
},
+ "purposes": {
+ "469": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/zeta_global_sspAnalyticsAdapter.json b/metadata/modules/zeta_global_sspAnalyticsAdapter.json
index 6a200be3dfc..6cf5e8aa7c0 100644
--- a/metadata/modules/zeta_global_sspAnalyticsAdapter.json
+++ b/metadata/modules/zeta_global_sspAnalyticsAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "analytics",
diff --git a/metadata/modules/zeta_global_sspBidAdapter.json b/metadata/modules/zeta_global_sspBidAdapter.json
index 44588a0c55a..a37a4a8b1ef 100644
--- a/metadata/modules/zeta_global_sspBidAdapter.json
+++ b/metadata/modules/zeta_global_sspBidAdapter.json
@@ -2,10 +2,30 @@
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {
"https://zetaglobal.com/ZetaDeviceStorageDisclosure.json": {
- "timestamp": "2026-05-18T20:05:17.695Z",
+ "timestamp": "2026-06-15T17:40:19.565Z",
"disclosures": []
}
},
+ "purposes": {
+ "469": {
+ "purposes": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "legIntPurposes": [],
+ "flexiblePurposes": [],
+ "specialFeatures": []
+ }
+ },
"components": [
{
"componentType": "bidder",
diff --git a/metadata/modules/zmaticooBidAdapter.json b/metadata/modules/zmaticooBidAdapter.json
index 15f3e19f325..2959e4ec994 100644
--- a/metadata/modules/zmaticooBidAdapter.json
+++ b/metadata/modules/zmaticooBidAdapter.json
@@ -1,6 +1,7 @@
{
"NOTICE": "do not edit - this file is autogenerated by `gulp update-metadata`",
"disclosures": {},
+ "purposes": {},
"components": [
{
"componentType": "bidder",
diff --git a/metadata/storageDisclosure.mjs b/metadata/storageDisclosure.mjs
index 7568dfec351..c36535b53fa 100644
--- a/metadata/storageDisclosure.mjs
+++ b/metadata/storageDisclosure.mjs
@@ -87,14 +87,15 @@ export function logErrorSummary() {
})
}
+export function getPublicURL(url) {
+ return LOCAL_DISCLOSURE_PATTERN.test(url) ? url.replace(LOCAL_DISCLOSURE_PATTERN, LOCAL_DISCLOSURES_URL) : url;
+}
+
export const fetchDisclosure = (() => {
const disclosures = {};
return function (metadata) {
const url = metadata.disclosureURL;
const isLocal = LOCAL_DISCLOSURE_PATTERN.test(url);
- if (isLocal) {
- metadata.disclosureURL = url.replace(LOCAL_DISCLOSURE_PATTERN, LOCAL_DISCLOSURES_URL);
- }
if (!disclosures.hasOwnProperty(url)) {
console.info(`Fetching disclosure for "${metadata.componentType}.${metadata.componentName}" (gvl ID: ${metadata.gvlid}) from "${url}"...`);
let disclosure;
diff --git a/modules/.submodules.json b/modules/.submodules.json
index b81f2e72e5a..c5c4100603c 100644
--- a/modules/.submodules.json
+++ b/modules/.submodules.json
@@ -3,6 +3,7 @@
"userId": [
"33acrossIdSystem",
"abtshieldIdSystem",
+ "acxiomRealIdSystem",
"admixerIdSystem",
"adqueryIdSystem",
"adplusIdSystem",
diff --git a/modules/1plusXRtdProvider.js b/modules/1plusXRtdProvider.js
index 0e7a2c3c729..93bfcbf8513 100644
--- a/modules/1plusXRtdProvider.js
+++ b/modules/1plusXRtdProvider.js
@@ -11,10 +11,10 @@ import {
// Constants
const REAL_TIME_MODULE = 'realTimeData';
const MODULE_NAME = '1plusX';
-const ORTB2_NAME = '1plusX.com'
+const ORTB2_NAME = '1plusX.com';
const PAPI_VERSION = 'v1.0';
const LOG_PREFIX = '[1plusX RTD Module]: ';
-const OPE_FPID = 'ope_fpid'
+const OPE_FPID = 'ope_fpid';
export const fpidStorage = getStorageManager({ moduleType: MODULE_TYPE_RTD, moduleName: MODULE_NAME });
@@ -59,7 +59,7 @@ export const extractConfig = (moduleConfig, reqBidsConfigObj) => {
}
const fpidStorageType = deepAccess(moduleConfig, 'params.fpidStorageType',
- STORAGE_TYPE_LOCALSTORAGE)
+ STORAGE_TYPE_LOCALSTORAGE);
if (
fpidStorageType !== STORAGE_TYPE_COOKIES &&
@@ -67,11 +67,11 @@ export const extractConfig = (moduleConfig, reqBidsConfigObj) => {
) {
throw new Error(
`fpidStorageType must be ${STORAGE_TYPE_LOCALSTORAGE} or ${STORAGE_TYPE_COOKIES}`
- )
+ );
}
return { customerId, timeout, bidders, fpidStorageType };
-}
+};
/**
* Extracts consent from the Prebid consent object and translates it
@@ -82,25 +82,25 @@ export const extractConfig = (moduleConfig, reqBidsConfigObj) => {
*/
export const extractConsent = ({ gdpr }) => {
if (!gdpr) {
- return null
+ return null;
}
- const { gdprApplies, consentString } = gdpr
+ const { gdprApplies, consentString } = gdpr;
if (!['0', '1'].includes(String(gdprApplies))) {
- const msg = 'TCF Consent: gdprApplies has wrong format'
- logError(msg)
- return null
+ const msg = 'TCF Consent: gdprApplies has wrong format';
+ logError(msg);
+ return null;
}
if (consentString && typeof consentString !== 'string') {
- const msg = 'TCF Consent: consentString must be string if defined'
- logError(msg)
- return null
+ const msg = 'TCF Consent: consentString must be string if defined';
+ logError(msg);
+ return null;
}
const result = {
'gdpr_applies': gdprApplies,
'consent_string': consentString
- }
- return result
-}
+ };
+ return result;
+};
/**
* Extracts the OPE first party id field
@@ -110,17 +110,17 @@ export const extractConsent = ({ gdpr }) => {
export const extractFpid = (fpidStorageType) => {
try {
switch (fpidStorageType) {
- case STORAGE_TYPE_COOKIES: return fpidStorage.getCookie(OPE_FPID)
- case STORAGE_TYPE_LOCALSTORAGE: return fpidStorage.getDataFromLocalStorage(OPE_FPID)
+ case STORAGE_TYPE_COOKIES: return fpidStorage.getCookie(OPE_FPID);
+ case STORAGE_TYPE_LOCALSTORAGE: return fpidStorage.getDataFromLocalStorage(OPE_FPID);
default: {
- logError(`Got unknown fpidStorageType ${fpidStorageType}. Aborting...`)
- return null
+ logError(`Got unknown fpidStorageType ${fpidStorageType}. Aborting...`);
+ return null;
}
}
} catch (error) {
return null;
}
-}
+};
/**
* Gets the URL of Profile Api from which targeting data will be fetched
* @param {string} customerId
@@ -134,15 +134,15 @@ export const getPapiUrl = (customerId, consent, fpid) => {
var papiUrl = `https://${customerId}.profiles.tagger.opecloud.com/${PAPI_VERSION}/targeting?url=${currentUrl}`;
if (consent) {
Object.entries(consent).forEach(([key, value]) => {
- papiUrl += `&${key}=${value}`
- })
+ papiUrl += `&${key}=${value}`;
+ });
}
if (fpid) {
- papiUrl += `&fpid=${fpid}`
+ papiUrl += `&fpid=${fpid}`;
}
return papiUrl;
-}
+};
/**
* Fetches targeting data. It contains the audience segments & the contextual topics
@@ -155,7 +155,7 @@ const getTargetingDataFromPapi = (papiUrl) => {
customHeaders: {
'Accept': 'application/json'
}
- }
+ };
const callbacks = {
success(responseText, response) {
resolve(JSON.parse(response.response));
@@ -164,9 +164,9 @@ const getTargetingDataFromPapi = (papiUrl) => {
reject(error);
}
};
- ajax(papiUrl, callbacks, null, requestOptions)
- })
-}
+ ajax(papiUrl, callbacks, null, requestOptions);
+ });
+};
/**
* Prepares the update for the ORTB2 object
@@ -185,9 +185,9 @@ export const buildOrtb2Updates = ({ segments = [], topics = [] }) => {
name: ORTB2_NAME,
segment: topics.map((topicId) => ({ id: topicId })),
ext: { segtax: segtaxes.CONTENT }
- }
+ };
return { userData, siteContentData };
-}
+};
/**
* Merges the targeting data with the existing config for bidder and updates
@@ -234,7 +234,7 @@ export const setTargetingDataToConfig = (papiResponse, { bidders, biddersOrtb2 }
for (const bidder of bidders) {
updateBidderConfig(bidder, ortb2Updates, biddersOrtb2);
}
-}
+};
// Functions exported in submodule object
/**
@@ -245,7 +245,7 @@ export const setTargetingDataToConfig = (papiResponse, { bidders, biddersOrtb2 }
*/
const init = (config, userConsent) => {
return true;
-}
+};
/**
*
@@ -260,26 +260,26 @@ const getBidRequestData = (reqBidsConfigObj, callback, moduleConfig, userConsent
const { customerId, bidders, fpidStorageType } = extractConfig(moduleConfig, reqBidsConfigObj);
const { ortb2Fragments: { bidder: biddersOrtb2 } } = reqBidsConfigObj;
// Get PAPI URL
- const papiUrl = getPapiUrl(customerId, extractConsent(userConsent) || {}, extractFpid(fpidStorageType))
+ const papiUrl = getPapiUrl(customerId, extractConsent(userConsent) || {}, extractFpid(fpidStorageType));
// Call PAPI
getTargetingDataFromPapi(papiUrl)
.then((papiResponse) => {
logMessage(LOG_PREFIX, 'Get targeting data request successful');
setTargetingDataToConfig(papiResponse, { bidders, biddersOrtb2 });
callback();
- })
+ });
} catch (error) {
logError(LOG_PREFIX, error);
callback();
}
-}
+};
// The RTD submodule object to be exported
export const onePlusXSubmodule = {
name: MODULE_NAME,
init,
getBidRequestData
-}
+};
// Register the onePlusXSubmodule as submodule of realTimeData
submodule(REAL_TIME_MODULE, onePlusXSubmodule);
diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js
index 16a55eba026..f5106c75874 100644
--- a/modules/33acrossAnalyticsAdapter.js
+++ b/modules/33acrossAnalyticsAdapter.js
@@ -20,7 +20,7 @@ const BidStatus = {
REJECTED: 'rejected',
NOBID: 'noBid',
ERROR: 'error',
-}
+};
const ANALYTICS_VERSION = '1.0.0';
const PROVIDER_NAME = '33across';
@@ -194,7 +194,7 @@ export const locals = {
};
this.adUnitMap = {};
}
-}
+};
/**
* @typedef {Object} AnalyticsAdapter
@@ -338,7 +338,7 @@ function createReportFromCache(analyticsCache, completedAuctionId) {
analyticsVersion: ANALYTICS_VERSION,
pbjsVersion: '$prebid.version$', // Replaced by build script
auctions: [auctions[completedAuctionId]],
- }
+ };
if (uspDataHandler.getConsentData()) {
report.usPrivacy = uspDataHandler.getConsentData();
}
@@ -446,7 +446,7 @@ function onAuctionInit({ adUnits, auctionId, bidderRequests }) {
mediaTypes: Object.keys(au.mediaTypes),
sizes: au.sizes.map(size => size.join('x')),
bids: [],
- }
+ };
}),
userIds: Object.keys(deepAccess(bidderRequests, '0.bids.0.userId', {})),
};
@@ -602,7 +602,7 @@ function setBidStatus(bid, status = BidStatus.AVAILABLE) {
error: {
next: [BidStatus.TARGETING_SET, BidStatus.RENDERED, BidStatus.TIMEOUT, BidStatus.REJECTED, BidStatus.NOBID, BidStatus.ERROR],
},
- }
+ };
const winningStatuses = [BidStatus.RENDERED];
@@ -649,5 +649,5 @@ function getLogger() {
info: (msg, ...args) => logInfo(`${LPREFIX}${msg}`, ...deepClone(args)),
warn: (msg, ...args) => logWarn(`${LPREFIX}${msg}`, ...deepClone(args)),
error: (msg, ...args) => logError(`${LPREFIX}${msg}`, ...deepClone(args)),
- }
+ };
}
diff --git a/modules/33acrossBidAdapter.js b/modules/33acrossBidAdapter.js
index 5e50f6a8792..03893003225 100644
--- a/modules/33acrossBidAdapter.js
+++ b/modules/33acrossBidAdapter.js
@@ -228,7 +228,7 @@ function _buildRequestParams(bidRequests, bidderRequest) {
ttxSettings,
gdprConsent,
referer: bidderRequest.refererInfo?.ref
- }
+ };
}
function _buildRequestGroups(ttxSettings, bidRequests) {
@@ -347,7 +347,7 @@ function _getSize(size) {
return {
w: parseInt(size[0], 10),
h: parseInt(size[1], 10)
- }
+ };
}
// BUILD REQUESTS: PRODUCT INFERENCE
@@ -391,7 +391,7 @@ function _buildBannerORTB(bidRequest) {
bidfloors: [bidfloors]
}
}
- }
+ };
}
return Object.assign({}, size, formatExt);
@@ -557,7 +557,7 @@ function _createBidResponse(bid, cur) {
mediaType: deepAccess(bid, 'ext.ttx.mediaType', BANNER),
currency: cur,
netRevenue: true
- }
+ };
if (isADomainPresent) {
bidResponse.meta = {
diff --git a/modules/33acrossIdSystem.d.ts b/modules/33acrossIdSystem.d.ts
index 19b66f65e04..27b36424d95 100644
--- a/modules/33acrossIdSystem.d.ts
+++ b/modules/33acrossIdSystem.d.ts
@@ -19,7 +19,7 @@ export type ThirtyThreeAcrossIdSystemParams = {
* Indicates whether a supplemental third-party ID may be stored to improve addressability
*/
storeTpid?: boolean;
-}
+};
declare module './userId/spec' {
interface UserId {
@@ -37,4 +37,4 @@ declare module './userId/spec' {
}
}
-export {}
+export {};
diff --git a/modules/33acrossIdSystem.js b/modules/33acrossIdSystem.js
index ca2ad7b5721..843dc0cfc57 100644
--- a/modules/33acrossIdSystem.js
+++ b/modules/33acrossIdSystem.js
@@ -32,7 +32,7 @@ const GVLID = 58;
const STORAGE_FPID_KEY = '33acrossIdFp';
const STORAGE_TPID_KEY = '33acrossIdTp';
-const STORAGE_HEM_KEY = '33acrossIdHm'
+const STORAGE_HEM_KEY = '33acrossIdHm';
const DEFAULT_1PID_SUPPORT = true;
const DEFAULT_TPID_SUPPORT = true;
@@ -86,7 +86,7 @@ function calculateQueryStringParams({ pid, pubProvidedHem }, gdprConsentData, en
const { gppString = '', applicableSections = [] } = gppConsent;
params.gpp = gppString;
- params.gpp_sid = encodeURIComponent(applicableSections.join(','))
+ params.gpp_sid = encodeURIComponent(applicableSections.join(','));
}
if (gdprConsentData?.consentString) {
@@ -193,7 +193,7 @@ function handleSupplementalIds(ids, { enabledStorageTypes, expires, ...options }
updateSupplementalIdStorage(supplementalId, {
enabledStorageTypes,
expires
- })
+ });
});
}
diff --git a/modules/51DegreesRtdProvider.js b/modules/51DegreesRtdProvider.js
index dbdf10515ef..6a3cfde5b3d 100644
--- a/modules/51DegreesRtdProvider.js
+++ b/modules/51DegreesRtdProvider.js
@@ -1,6 +1,7 @@
import { MODULE_TYPE_RTD } from '../src/activities/modules.js';
import { loadExternalScript } from '../src/adloader.js';
import { submodule } from '../src/hook.js';
+import { getStorageManager } from '../src/storageManager.js';
import {
deepAccess,
deepSetValue,
@@ -103,7 +104,7 @@ export const extractConfig = (moduleConfig, reqBidsConfigObj) => {
}
return { resourceKey, onPremiseJSUrl };
-}
+};
/**
* Gets 51Degrees JS URL
@@ -111,6 +112,8 @@ export const extractConfig = (moduleConfig, reqBidsConfigObj) => {
* @param {string} [pathData.resourceKey] Resource key
* @param {string} [pathData.onPremiseJSUrl] On-premise JS URL
* @param {Object} [pathData.hev] High entropy values
+ * @param {string} [pathData.tcString] TCF consent string to forward as tcstring
+ * @param {string} [pathData.gpp] GPP string to forward as gppstring
* @param {Window} [win] Window object (mainly for testing)
* @returns {string} 51Degrees JS URL
*/
@@ -129,12 +132,22 @@ export const get51DegreesJSURL = (pathData, win) => {
deepSetNotEmptyValue(qs, '51D_ScreenPixelsHeight', _window?.screen?.height);
deepSetNotEmptyValue(qs, '51D_ScreenPixelsWidth', _window?.screen?.width);
deepSetNotEmptyValue(qs, '51D_PixelRatio', getDevicePixelRatio(_window));
+ // id.usage contains a dot, so set it directly.
+ if (pathData.idUsage) {
+ qs['id.usage'] = pathData.idUsage;
+ }
+ if (pathData.tcString) {
+ qs.tcstring = pathData.tcString;
+ }
+ if (pathData.gpp) {
+ qs.gppstring = pathData.gpp;
+ }
const _qs = formatQS(qs);
const _qsString = _qs ? `${queryPrefix}${_qs}` : '';
return `${baseURL}${_qsString}`;
-}
+};
/**
* Retrieves high entropy values from `navigator.userAgentData` if available
@@ -196,7 +209,7 @@ export const is51DegreesMetaPresent = () => {
? false
: meta.content.includes('cloud.51degrees')
);
-}
+};
/**
* Sets the value of a key in the ORTB2 object if the value is not empty
@@ -213,26 +226,30 @@ export const deepSetNotEmptyValue = (obj, key, value) => {
if (value) {
deepSetValue(obj, key, value);
}
-}
+};
/**
* Converts all 51Degrees data to ORTB2 format
*
* @param {Object} data51 Response from 51Degrees API
* @param {Object} [data51.device] Device data
+ * @param {Object} [data51.ip] IP data (device.ip/ipv6 + device.geo)
+ * @param {Object} [data51.fodid] 51DiD data (mapped to user.eids)
+ * @param {Object} [options]
+ * @param {string} [options.tdlUrl] TDL URL passed through to the EID entry
*
* @returns {Object} Enriched ORTB2 object
*/
-export const convert51DegreesDataToOrtb2 = (data51) => {
- let ortb2Data = {};
+export const convert51DegreesDataToOrtb2 = (data51, options = {}) => {
+ const ortb2Data = {};
if (!data51) {
return ortb2Data;
}
- ortb2Data = convert51DegreesDeviceToOrtb2(data51.device);
-
- // placeholder for the next 51Degrees RTD submodule update
+ mergeDeep(ortb2Data, convert51DegreesDeviceToOrtb2(data51.device));
+ mergeDeep(ortb2Data, convert51DegreesIpToOrtb2(data51.ip));
+ mergeDeep(ortb2Data, convert51DegreesFoDiDToOrtb2(data51.fodid, options.tdlUrl));
return ortb2Data;
};
@@ -293,15 +310,188 @@ export const convert51DegreesDeviceToOrtb2 = (device) => {
deepSetNotEmptyValue(ortb2Device, 'w', device.screenpixelsphysicalwidth || device.screenpixelswidth);
deepSetNotEmptyValue(ortb2Device, 'pxratio', device.pixelratio);
deepSetNotEmptyValue(ortb2Device, 'ppi', devicePhysicalPPI || devicePPI);
- // kept for backward compatibility
- deepSetNotEmptyValue(ortb2Device, 'ext.fiftyonedegrees_deviceId', device.deviceid);
deepSetNotEmptyValue(ortb2Device, 'ext.fod.deviceId', device.deviceid);
if (['True', 'False'].includes(device.thirdpartycookiesenabled)) {
deepSetValue(ortb2Device, 'ext.fod.tpc', device.thirdpartycookiesenabled === 'True' ? 1 : 0);
}
return { device: ortb2Device };
-}
+};
+
+/**
+ * Converts 51Degrees IP data to ORTB2 format. Maps device.ip, device.ipv6,
+ * and (when locationconfidence is high/medium) device.geo.* fields.
+ *
+ * @param {Object} ip 51Degrees ip object
+ * @param {string} [ip.ip] IPv4 address
+ * @param {string} [ip.ipv6] IPv6 address
+ * @param {string} [ip.locationconfidence] high|medium gates geo fields
+ * @param {number} [ip.latitude]
+ * @param {number} [ip.longitude]
+ * @param {string} [ip.countrycode3] ISO-3166-1 alpha-3
+ * @param {string} [ip.iso31662lvl4] ISO-3166-2 subdivision code (e.g. GB-ENG)
+ * @param {string} [ip.zipcode]
+ * @param {number} [ip.timezoneoffset] minutes from UTC
+ * @param {number} [ip.accuracyradiusmin] km (multiplied by 1000 in output to convert to meters)
+ * @returns {Object} Enriched ORTB2 object fragment ({device:{...}})
+ */
+export const convert51DegreesIpToOrtb2 = (ip) => {
+ const ortb2 = {};
+
+ if (!ip) {
+ return ortb2;
+ }
+
+ // device.ip / device.ipv6 are not gated on confidence.
+ deepSetNotEmptyValue(ortb2, 'device.ip', ip.ip);
+ deepSetNotEmptyValue(ortb2, 'device.ipv6', ip.ipv6);
+
+ const confidence = typeof ip.locationconfidence === 'string'
+ ? ip.locationconfidence.toLowerCase()
+ : undefined;
+ let ipservice;
+ if (confidence === 'high') {
+ ipservice = 511;
+ } else if (confidence === 'medium') {
+ ipservice = 512;
+ } else {
+ return ortb2;
+ }
+
+ // Use null/undefined checks rather than truthy checks so 0 coordinates
+ // (Gulf of Guinea) and 0 accuracy survive.
+ const setIfDefined = (key, value) => {
+ if (value !== null && value !== undefined) {
+ deepSetValue(ortb2, key, value);
+ }
+ };
+
+ setIfDefined('device.geo.lat', ip.latitude);
+ setIfDefined('device.geo.lon', ip.longitude);
+ deepSetNotEmptyValue(ortb2, 'device.geo.country', ip.countrycode3);
+ deepSetNotEmptyValue(ortb2, 'device.geo.region', ip.iso31662lvl4);
+ deepSetNotEmptyValue(ortb2, 'device.geo.zip', ip.zipcode);
+ setIfDefined('device.geo.utcoffset', ip.timezoneoffset);
+ setIfDefined(
+ 'device.geo.accuracy',
+ ip.accuracyradiusmin === null || ip.accuracyradiusmin === undefined
+ ? undefined
+ : ip.accuracyradiusmin * 1000,
+ );
+
+ // Only stamp type+ipservice if at least one geo.* field actually landed.
+ // Otherwise we'd emit a device.geo with just metadata which is meaningless.
+ if (ortb2.device && ortb2.device.geo) {
+ deepSetValue(ortb2, 'device.geo.type', 2);
+ deepSetValue(ortb2, 'device.geo.ipservice', ipservice);
+ }
+
+ return ortb2;
+};
+
+/**
+ * Converts 51Degrees fodid (51DiD) data to an ORTB2 user.eids entry.
+ * Builds a single 51d.es source entry whose uids carry idproblic and
+ * idprobglobal in that order. ext.tdl is populated from the supplied URL
+ * when present; omitted otherwise.
+ *
+ * @param {Object} fodid 51Degrees fodid object
+ * @param {string} [fodid.idproblic] License-tier 51DiD
+ * @param {string} [fodid.idprobglobal] Global-tier 51DiD
+ * @param {string} [tdlUrl] TDL URL passed from module config
+ * @returns {Object} Enriched ORTB2 fragment ({user:{eids:[...]}}) or {} when
+ * no uids are available
+ */
+export const convert51DegreesFoDiDToOrtb2 = (fodid, tdlUrl) => {
+ if (!fodid) {
+ return {};
+ }
+
+ const uids = [];
+ if (fodid.idproblic) {
+ uids.push({ id: fodid.idproblic, atype: 1 });
+ }
+ if (fodid.idprobglobal) {
+ uids.push({ id: fodid.idprobglobal, atype: 1 });
+ }
+ if (uids.length === 0) {
+ return {};
+ }
+
+ const entry = {
+ inserter: '51degrees.com',
+ source: '51d.es',
+ mm: 5,
+ uids,
+ };
+ if (tdlUrl) {
+ entry.ext = { tdl: [tdlUrl] };
+ } else {
+ logWarn('tdlUrl is not configured; emitting eids entry without ext.tdl');
+ }
+
+ return { user: { eids: [entry] } };
+};
+
+// PMP localStorage contract, duplicated from pmp/src/storage.ts of the
+// 51Degrees/cloud repo. If PMP bumps SCHEMA_VERSION the shape check fails
+// closed and we fall through to undefined.
+const PMP_STORAGE_KEY = '__51d_pmp_pref';
+const PMP_SCHEMA_VERSION = 1;
+
+// Storage manager scoped to this RTD module. Required by Prebid's storage
+// activity rules and the no-restricted-globals lint.
+const storageManager = getStorageManager({
+ moduleType: MODULE_TYPE_RTD,
+ moduleName: MODULE_NAME,
+});
+
+/**
+ * Resolves the id.usage value from PMP localStorage.
+ * Returns undefined when no valid value is found,
+ * which signals the caller to omit id.usage from the cloud URL entirely.
+ *
+ * @param {Object} moduleConfig 51Degrees RTD module config
+ * @returns {string|undefined}
+ */
+export const resolveIdUsage = (moduleConfig) => {
+ try {
+ const stored = storageManager.getDataFromLocalStorage(PMP_STORAGE_KEY);
+ if (!stored) {
+ return undefined;
+ }
+ const parsed = JSON.parse(stored);
+ if (parsed && parsed.v === PMP_SCHEMA_VERSION &&
+ (parsed.p === 'standard' || parsed.p === 'personalized')) {
+ return parsed.p;
+ }
+ } catch (_) {
+ // Storage unavailable or JSON malformed; fall through.
+ }
+ return undefined;
+};
+
+/**
+ * Reads the raw TCF consent string from Prebid user consent.
+ *
+ * @param {Object} userConsent Prebid user consent object
+ * @returns {string|undefined}
+ */
+export const resolveTcString = (userConsent) => {
+ const tc = deepAccess(userConsent, 'gdpr.consentString');
+ return (typeof tc === 'string' && tc.length > 0) ? tc : undefined;
+};
+
+/**
+ * Reads the raw GPP string from Prebid user consent.
+ *
+ * @param {Object} userConsent Prebid user consent object
+ * @returns {string|undefined}
+ */
+export const resolveGpp = (userConsent) => {
+ const gpp = deepAccess(userConsent, 'gpp.gppString');
+ return (typeof gpp === 'string' && gpp.length > 0) ? gpp : undefined;
+};
/**
* @param {Object} reqBidsConfigObj Bid request configuration object
@@ -316,6 +506,14 @@ export const getBidRequestData = (reqBidsConfigObj, callback, moduleConfig, user
logMessage('Resource key: ', resourceKey);
logMessage('On-premise JS URL: ', onPremiseJSUrl);
+ const tdlUrl = deepAccess(moduleConfig, 'params.tdlUrl');
+ const idUsage = resolveIdUsage(moduleConfig);
+ logMessage('Resolved id.usage: ', idUsage);
+ const tcString = resolveTcString(userConsent);
+ const gpp = resolveGpp(userConsent);
+ logMessage('TCF consent string present: ', !!tcString);
+ logMessage('GPP string present: ', !!gpp);
+
// Check if 51Degrees meta is present (cloud only)
if (resourceKey) {
logMessage('Checking if 51Degrees meta is present in the document head');
@@ -326,7 +524,7 @@ export const getBidRequestData = (reqBidsConfigObj, callback, moduleConfig, user
getHighEntropyValues(['model', 'platform', 'platformVersion', 'fullVersionList']).then((hev) => {
// Get 51Degrees JS URL, which is either cloud or on-premise
- const scriptURL = get51DegreesJSURL({ resourceKey, onPremiseJSUrl, hev });
+ const scriptURL = get51DegreesJSURL({ resourceKey, onPremiseJSUrl, hev, idUsage, tcString, gpp });
logMessage('URL of the script to be injected: ', scriptURL);
// Inject 51Degrees script, get device data and merge it into the ORTB2 object
@@ -336,10 +534,15 @@ export const getBidRequestData = (reqBidsConfigObj, callback, moduleConfig, user
// Convert and merge device data in the callback
fod.complete((data) => {
logMessage('51Degrees raw data: ', data);
- mergeDeep(
- reqBidsConfigObj.ortb2Fragments.global,
- convert51DegreesDataToOrtb2(data),
- );
+ const global = reqBidsConfigObj.ortb2Fragments.global;
+ const enrichment = convert51DegreesDataToOrtb2(data, { tdlUrl });
+ // Don't clobber a publisher-observed device.ip / device.ipv6 with
+ // our IP-derived value. Publisher signal wins.
+ if (enrichment.device) {
+ if (deepAccess(global, 'device.ip')) delete enrichment.device.ip;
+ if (deepAccess(global, 'device.ipv6')) delete enrichment.device.ipv6;
+ }
+ mergeDeep(global, enrichment);
logMessage('reqBidsConfigObj: ', reqBidsConfigObj);
callback();
});
@@ -350,7 +553,7 @@ export const getBidRequestData = (reqBidsConfigObj, callback, moduleConfig, user
logError(error);
callback();
}
-}
+};
/**
* Init
@@ -360,13 +563,13 @@ export const getBidRequestData = (reqBidsConfigObj, callback, moduleConfig, user
*/
const init = (config, userConsent) => {
return true;
-}
+};
// 51Degrees RTD submodule object to be registered
export const fiftyOneDegreesSubmodule = {
name: MODULE_NAME,
init,
getBidRequestData,
-}
+};
submodule('realTimeData', fiftyOneDegreesSubmodule);
diff --git a/modules/51DegreesRtdProvider.md b/modules/51DegreesRtdProvider.md
index b38fed3dfaf..c4efba38616 100644
--- a/modules/51DegreesRtdProvider.md
+++ b/modules/51DegreesRtdProvider.md
@@ -8,17 +8,25 @@
## Description
-51Degrees module enriches an OpenRTB request with [51Degrees Device Data](https://51degrees.com/documentation/index.html).
+51Degrees module enriches an OpenRTB request with [51Degrees Device Data](https://51degrees.com/documentation/index.html) and (optionally) IP-derived geo plus a 51DiD (51Degrees identifier) entry in `user.eids`.
51Degrees module sets the following fields of the device object: `devicetype`, `make`, `model`, `hwv`, `os`, `osv`, `h`, `w`, `ppi`, `pxratio`. Interested bidder adapters may use these fields as needed.
-The module also adds a `device.ext.fod` extension object (fod == fifty one degrees) and sets `device.ext.fod.deviceId` to a permanent device ID, which can be rapidly looked up in on-premise data, exposing over 250 properties, including device age, chipset, codec support, price, operating system and app/browser versions, age, and embedded features.
+The module also adds a `device.ext.fod` extension object (fod == fifty one degrees) and sets `device.ext.fod.deviceId` to a permanent device ID, which can be rapidly looked up in on-premise data, exposing over 250 properties, including device age, chipset, codec support, price, operating system and app/browser versions, age, and embedded features.
-It also sets `device.ext.fod.tpc` key to a binary value to indicate whether third-party cookies are enabled in the browser (1 if enabled, 0 if disabled).
+It also sets `device.ext.fod.tpc` to a binary value to indicate whether third-party cookies are enabled in the browser (1 if enabled, 0 if disabled).
+
+When 51Degrees IPI is available in the cloud response, the module sets `device.ip` and `device.ipv6`, and (if the location confidence is `high` or `medium`) populates `device.geo.{lat,lon,country,zip,utcoffset,accuracy,type,ipservice}` per OpenRTB 2.6 and AdCOM 1.0.
+
+[51DiD](https://51degrees.com/documentation/4.5/_identifiers_51_did.html) is a 51Degrees privacy-safe identifier derived from device signals. Its production requires a marketing usage preference (`id.usage`). The recommended way to collect and store that preference is the [51Degrees Preference Management Platform (PMP)](https://51degrees.com/documentation/4.5/_identifiers__p_m_p.html) — a lightweight consent widget that writes the user's choice to `localStorage`. When PMP is present on the page the module picks up that preference automatically. When PMP is absent the module falls back to inferring the preference from the publisher's existing TCF or GPP consent string (see below).
+
+When 51DiD is available, the module appends an entry to `user.eids` with `source = "51d.es"`, `inserter = "51degrees.com"`, `mm = 5` (inference), and `uids` carrying `idproblic` and `idprobglobal`. The `ext.tdl` URL inside the entry comes from the `params.tdlUrl` module config.
+
+The module forwards the publisher's consent strings to the cloud as evidence when present. The TCF consent string (from Prebid's GDPR consent) is sent as `tcstring` and the GPP string (from Prebid's GPP consent) is sent as `gppstring`; the cloud can infer the marketing usage preference from either when PMP is not present, so 51DiD works for publishers running any TCF or GPP CMP. These come from Prebid's consent data, not module params.
The module supports on-premise and cloud device detection services, with free options for both.
-A free resource key for use with 51Degrees cloud service can be obtained from [51Degrees cloud configuration](https://configure.51degrees.com/jJqVnTJR). This is the simplest approach to trial the module.
+A free resource key for use with 51Degrees cloud service can be obtained from [51Degrees cloud configuration](https://configure.51degrees.com/Q5cD1H9W). This is the simplest approach to trial the module.
An interface-compatible self-hosted service can be used with .NET, Java, Node, PHP, and Python. See [51Degrees examples](https://51degrees.com/documentation/_examples__device_detection__getting_started__web__on_premise.html).
@@ -40,7 +48,7 @@ gulp build --modules=rtdModule,51DegreesRtdProvider,appnexusBidAdapter,...
#### Resource Key
-In order to use the module, please first obtain a Resource Key using the [Configurator tool](https://configure.51degrees.com/jJqVnTJR) - choose the following properties:
+In order to use the module, please first obtain a Resource Key using the [Configurator tool](https://configure.51degrees.com/Q5cD1H9W) - choose the following properties:
* DeviceId
* DeviceType
@@ -113,7 +121,7 @@ pbjs.setConfig({
waitForIt: true, // should be true, otherwise the auctionDelay will be ignored
params: {
resourceKey: '',
- // Get your resource key from https://configure.51degrees.com/jJqVnTJR
+ // Get your resource key from https://configure.51degrees.com/Q5cD1H9W
// alternatively, you can use the on-premise version of the 51Degrees service and connect to your chosen endpoint
// onPremiseJSUrl: 'https://localhost/51Degrees.core.js'
},
@@ -127,13 +135,14 @@ pbjs.setConfig({
> Note that `resourceKey` and `onPremiseJSUrl` are mutually exclusive parameters. Use strictly one of them: either a `resourceKey` for cloud integration or `onPremiseJSUrl` for the on-premise self-hosted integration.
-| Name | Type | Description | Default |
-|:----------------------|:--------|:---------------------------------------------------------------------------------------------|:-------------------|
-| name | String | Real-time data module name | Always '51Degrees' |
-| waitForIt | Boolean | Should be `true` if there's an `auctionDelay` defined (mandatory) | `false` |
-| params | Object | | |
-| params.resourceKey | String | Your 51Degrees Cloud Resource Key | |
-| params.onPremiseJSUrl | String | Direct URL to your self-hosted on-premise JS file (e.g. https://localhost/51Degrees.core.js) | |
+| Name | Type | Description | Default |
+|:----------------------|:--------|:-------------------------------------------------------------------------------------------------------------------------------------------|:-------------------|
+| name | String | Real-time data module name | Always '51Degrees' |
+| waitForIt | Boolean | Should be `true` if there's an `auctionDelay` defined (mandatory) | `false` |
+| params | Object | | |
+| params.resourceKey | String | Your 51Degrees Cloud Resource Key | |
+| params.onPremiseJSUrl | String | Direct URL to your self-hosted on-premise JS file (e.g. https://localhost/51Degrees.core.js) | |
+| params.tdlUrl | String | URL of your Terms Document Locator (TDL) — a machine-readable document declaring the data usage terms under which the identifier is shared, per the [data-labels proposal](https://github.com/jwrosewell/data-labels/tree/main) and its [OpenRTB extension](https://github.com/jwrosewell/data-labels/blob/main/OpenRTB.md). The URL is placed in the `ext.tdl` array of the `51d.es` eids entry. Omit if you do not publish a TDL; the module will log a warning and emit the eids entry without `ext.tdl`. | |
> Note: if you use a third-party Prebid.js wrapper, there might be a chance that the UI will force you to input both `resourceKey` and `onPremiseJSUrl`. In this case, you can set a redundant parameter to a string equal to "0", which will be ignored by the module.
diff --git a/modules/AsteriobidPbmAnalyticsAdapter.js b/modules/AsteriobidPbmAnalyticsAdapter.js
index 5dc953174c9..d34f06e6115 100644
--- a/modules/AsteriobidPbmAnalyticsAdapter.js
+++ b/modules/AsteriobidPbmAnalyticsAdapter.js
@@ -78,7 +78,7 @@ prebidmanagerAnalytics.disableAnalytics = function () {
function collectPageInfo() {
const pageInfo = {
domain: window.location.hostname,
- }
+ };
if (document.referrer) {
pageInfo.referrerDomain = parseUrl(document.referrer).hostname;
}
@@ -128,9 +128,9 @@ function flush() {
function handleEvent(eventType, eventArgs) {
if (eventArgs) {
- eventArgs = hasNonSerializableProperty(eventArgs) ? eventArgs : deepClone(eventArgs)
+ eventArgs = hasNonSerializableProperty(eventArgs) ? eventArgs : deepClone(eventArgs);
} else {
- eventArgs = {}
+ eventArgs = {};
}
const pmEvent = {};
@@ -140,8 +140,8 @@ function handleEvent(eventType, eventArgs) {
pmEvent.auctionId = eventArgs.auctionId;
pmEvent.timeout = eventArgs.timeout;
pmEvent.eventType = eventArgs.eventType;
- pmEvent.adUnits = eventArgs.adUnits && eventArgs.adUnits.map(trimAdUnit)
- pmEvent.bidderRequests = eventArgs.bidderRequests && eventArgs.bidderRequests.map(trimBidderRequest)
+ pmEvent.adUnits = eventArgs.adUnits && eventArgs.adUnits.map(trimAdUnit);
+ pmEvent.bidderRequests = eventArgs.bidderRequests && eventArgs.bidderRequests.map(trimBidderRequest);
_startAuction = pmEvent.timestamp;
_bidRequestTimeout = pmEvent.timeout;
break;
diff --git a/modules/_moduleMetadata.js b/modules/_moduleMetadata.js
index d3e9fb34376..7ba758a3c57 100644
--- a/modules/_moduleMetadata.js
+++ b/modules/_moduleMetadata.js
@@ -24,10 +24,10 @@ Object.entries({
hook.get(moduleName).before((next, modules) => {
modules.flatMap(mod => mod).forEach((module) => {
moduleRegistry[moduleType][module.name] = module;
- })
+ });
next(modules);
- }, -100)
-})
+ }, -100);
+});
function formatGvlid(gvlid) {
return gvlid === VENDORLESS_GVLID ? null : gvlid;
@@ -44,9 +44,9 @@ function bidderMetadata() {
gvlid: formatGvlid(GDPR_GVLIDS.get(bidder).modules?.[MODULE_TYPE_BIDDER] ?? null),
disclosureURL: spec.disclosureURL ?? null
}
- ]
+ ];
})
- )
+ );
}
function rtdMetadata() {
@@ -59,9 +59,9 @@ function rtdMetadata() {
gvlid: formatGvlid(GDPR_GVLIDS.get(provider).modules?.[MODULE_TYPE_RTD] ?? null),
disclosureURL: module.disclosureURL ?? null,
}
- ]
+ ];
})
- )
+ );
}
function uidMetadata() {
@@ -77,9 +77,9 @@ function uidMetadata() {
disclosureURL: module.disclosureURL ?? null,
aliasOf: name !== provider ? provider : null
}]
- )
+ );
})
- )
+ );
}
function analyticsMetadata() {
@@ -92,9 +92,9 @@ function analyticsMetadata() {
gvlid: formatGvlid(GDPR_GVLIDS.get(name).modules?.[MODULE_TYPE_ANALYTICS] ?? null),
disclosureURL: adapter.disclosureURL
}
- ]
+ ];
})
- )
+ );
}
getGlobal()._getModuleMetadata = function () {
@@ -108,6 +108,6 @@ getGlobal()._getModuleMetadata = function () {
componentType,
componentName,
...moduleMeta,
- }))
- })
-}
+ }));
+ });
+};
diff --git a/modules/a1MediaBidAdapter.js b/modules/a1MediaBidAdapter.js
index 1df230dcfc1..1f2aae4a782 100644
--- a/modules/a1MediaBidAdapter.js
+++ b/modules/a1MediaBidAdapter.js
@@ -21,7 +21,7 @@ const converter = ortbConverter({
if (bidRequest.params.battr) {
Object.keys(bidRequest.mediaTypes).forEach(mType => {
imp[mType].battr = bidRequest.params.battr;
- })
+ });
}
return imp;
},
diff --git a/modules/ablidaBidAdapter.js b/modules/ablidaBidAdapter.js
index 9b61ad0d5b3..8364c21a375 100644
--- a/modules/ablidaBidAdapter.js
+++ b/modules/ablidaBidAdapter.js
@@ -42,11 +42,11 @@ export const spec = {
return [];
}
return validBidRequests.map(bidRequest => {
- let sizes = []
+ let sizes = [];
if (bidRequest.mediaTypes && bidRequest.mediaTypes[BANNER] && bidRequest.mediaTypes[BANNER].sizes) {
sizes = bidRequest.mediaTypes[BANNER].sizes;
} else if (bidRequest.mediaTypes[VIDEO] && bidRequest.mediaTypes[VIDEO].playerSize) {
- sizes = bidRequest.mediaTypes[VIDEO].playerSize
+ sizes = bidRequest.mediaTypes[VIDEO].playerSize;
}
const jaySupported = 'atob' in window && 'currentScript' in document;
const device = getDevice();
@@ -83,7 +83,7 @@ export const spec = {
const response = serverResponse.body;
response.forEach(function(bid) {
- bid.ttl = 60
+ bid.ttl = 60;
bidResponses.push(bid);
});
return bidResponses;
diff --git a/modules/aceexBidAdapter.js b/modules/aceexBidAdapter.js
index e194ec83c33..69b871ee74f 100644
--- a/modules/aceexBidAdapter.js
+++ b/modules/aceexBidAdapter.js
@@ -101,7 +101,7 @@ export const spec = {
};
repackedBids.push(repackedBid);
- })
+ });
});
return repackedBids;
diff --git a/modules/acxiomRealIdSystem.md b/modules/acxiomRealIdSystem.md
new file mode 100644
index 00000000000..58566c85975
--- /dev/null
+++ b/modules/acxiomRealIdSystem.md
@@ -0,0 +1,84 @@
+## Acxiom Real ID Submodule
+
+Acxiom Real ID module surfaces an Acxiom Real ID in the bid request via the Prebid User ID system. The module sends a POST request to the lookup API with the partner ID, source ID, and user agent, and stores the returned token for use in bid requests.
+
+## Building Prebid with Acxiom Real ID Support
+
+Add the Acxiom Real ID submodule to your Prebid.js package:
+
+```
+gulp build --modules=acxiomRealIdSystem,userId
+```
+
+## Configuration
+
+The following configuration parameters are available:
+
+| Param | Scope | Type | Description | Example |
+| --- | --- | --- | --- | --- |
+| name | Required | String | Module identifier | `'acxiomRealId'` |
+| params | Required | Object | Module configuration | |
+| params.partnerId | Required | String | Partner ID issued by GrowthCode on behalf of Acxiom | `'ABC123'` |
+| params.hem | Optional | String | SHA-256 hashed email for improved match rate | `'a1b2c3...'` |
+| params.sourceId | Optional | String | EID source to request from the lookup API. Defaults to `'acxiom.id'` | `'acxiom.id'` |
+| params.apiUrl | Optional | String | Override the full API endpoint URL | `'https://ids.api.gcprivacy.id/v1/eid/l'` |
+| storage | Required | Object | Storage configuration | |
+| storage.type | Required | String | Storage type | `'html5'` |
+| storage.name | Required | String | Storage key | `'acxiomRealId'` |
+| storage.expires | Required | Number | TTL in days | `7` |
+
+### Example Configuration
+
+```javascript
+pbjs.setConfig({
+ userSync: {
+ userIds: [{
+ name: 'acxiomRealId',
+ params: {
+ partnerId: 'YOUR_PARTNER_ID'
+ },
+ storage: {
+ type: 'html5',
+ name: 'acxiomRealId',
+ expires: 7
+ }
+ }]
+ }
+});
+```
+
+### Configuration with Custom API URL and Hashed Email
+
+```javascript
+pbjs.setConfig({
+ userSync: {
+ userIds: [{
+ name: 'acxiomRealId',
+ params: {
+ partnerId: 'YOUR_PARTNER_ID',
+ hem: 'sha256_hashed_email_here',
+ apiUrl: 'https://ids.api.gcprivacy.id/v1/eid/l'
+ },
+ storage: {
+ type: 'html5',
+ name: 'acxiomRealId',
+ expires: 7
+ }
+ }]
+ }
+});
+```
+
+### EID Output
+
+The module produces the following EID structure in `user.ext.eids`:
+
+```json
+{
+ "source": "acxiom.id",
+ "uids": [{
+ "id": "",
+ "atype": 1
+ }]
+}
+```
diff --git a/modules/acxiomRealIdSystem.ts b/modules/acxiomRealIdSystem.ts
new file mode 100644
index 00000000000..0b10a1f06ac
--- /dev/null
+++ b/modules/acxiomRealIdSystem.ts
@@ -0,0 +1,250 @@
+/**
+ * This module adds Acxiom Real ID to the User ID module
+ * The {@link module:modules/userId} module is required
+ * @module modules/acxiomRealIdSystem
+ * @requires module:modules/userId
+ */
+
+import { submodule } from '../src/hook.js';
+import { ajaxBuilder } from '../src/ajax.js';
+import { getStorageManager } from '../src/storageManager.js';
+import { MODULE_TYPE_UID } from '../src/activities/modules.js';
+import { logError, getWindowSelf } from '../src/utils.js';
+import { gdprDataHandler, uspDataHandler, gppDataHandler } from '../src/adapterManager.js';
+
+import type { IdProviderSpec, UserIdConfig, EID } from './userId/spec.ts';
+import type { AllConsentData } from '../src/consentHandler.ts';
+
+const MODULE_NAME = 'acxiomRealId' as const;
+const DEFAULT_API_URL = 'https://ids.api.gcprivacy.id/v1/eid/l';
+const DEFAULT_SOURCE_ID = 'acxiom.id';
+export const storage = getStorageManager({ moduleType: MODULE_TYPE_UID, moduleName: MODULE_NAME });
+export const dep = {
+ ajaxBuilder
+};
+
+export type AcxiomRealIdParams = {
+ /** Partner ID issued by GrowthCode on behalf of Acxiom */
+ partnerId: string;
+ /** SHA-256 hashed email for improved match rate */
+ hem?: string;
+ /** EID source to request from the lookup API. Defaults to 'acxiom.id' */
+ sourceId?: string;
+ /** Override the full API endpoint URL */
+ apiUrl?: string;
+};
+
+export type AcxiomRealIdValue = {
+ /** The resolved Acxiom Real ID token */
+ id: string;
+ /** Agent type per OpenRTB spec (1 = cookie/device, 2 = in-app, 3 = person-based) */
+ atype: number;
+};
+
+declare module './userId/spec' {
+ interface UserId {
+ acxiomRealId: AcxiomRealIdValue;
+ }
+ interface ProvidersToId {
+ acxiomRealId: 'acxiomRealId';
+ }
+ interface ProviderParams {
+ acxiomRealId: AcxiomRealIdParams;
+ }
+}
+
+const US_GPP_SID_API: Record = {
+ 7: 'usnat',
+ 8: 'usca',
+ 9: 'usva',
+ 10: 'usco',
+ 11: 'usut',
+ 12: 'usct'
+};
+
+interface GppSectionData {
+ SaleOptOut?: number;
+ SharingOptOut?: number;
+ [key: string]: unknown;
+}
+
+interface GppData {
+ applicableSections?: number[];
+ parsedSections?: Record;
+}
+
+function flatSection(subsections: GppSectionData | GppSectionData[]): GppSectionData {
+ if (!Array.isArray(subsections)) return subsections;
+ return subsections.reduceRight((merged, section) => Object.assign(section, merged), {} as GppSectionData);
+}
+
+function isGppOptedOut(gppData: GppData | null | undefined): boolean {
+ if (!gppData || !gppData.applicableSections || !gppData.parsedSections) {
+ return false;
+ }
+ for (const sid of gppData.applicableSections) {
+ const apiName = US_GPP_SID_API[sid];
+ if (!apiName) continue;
+ const sectionData = flatSection(gppData.parsedSections[apiName]);
+ if (sectionData && (sectionData.SaleOptOut === 1 || sectionData.SharingOptOut === 1)) {
+ return true;
+ }
+ }
+ return false;
+}
+
+function isConsentBlocked(consentData: Partial | undefined): boolean {
+ if (!consentData) {
+ return false;
+ }
+
+ const gdpr = consentData.gdpr;
+ if (gdpr && (gdpr.gdprApplies || gdpr.consentString)) {
+ return true;
+ }
+
+ const usp = consentData.usp;
+ if (usp && typeof usp === 'string' && usp.length >= 3 && usp.charAt(2) === 'Y') {
+ return true;
+ }
+
+ if (isGppOptedOut(consentData.gpp as GppData)) {
+ return true;
+ }
+
+ return false;
+}
+
+function isConsentBlockedByHandlers(): boolean {
+ const gdpr = gdprDataHandler.getConsentData();
+ if (gdpr && (gdpr.gdprApplies || gdpr.consentString)) {
+ return true;
+ }
+ const usp = uspDataHandler.getConsentData();
+ if (usp && typeof usp === 'string' && usp.length >= 3 && usp.charAt(2) === 'Y') {
+ return true;
+ }
+ const gpp = gppDataHandler.getConsentData();
+ if (isGppOptedOut(gpp as GppData)) {
+ return true;
+ }
+ return false;
+}
+
+function deleteStoredToken(config: UserIdConfig) {
+ const storageName = config?.storage?.name || MODULE_NAME;
+ const expired = new Date(0).toUTCString();
+ if (storage.localStorageIsEnabled()) {
+ ['', '_exp', '_cst', '_last'].forEach(suffix => {
+ storage.removeDataFromLocalStorage(`${storageName}${suffix}`);
+ });
+ }
+ if (storage.cookiesAreEnabled()) {
+ ['', '_cst', '_last'].forEach(suffix => {
+ storage.setCookie(`${storageName}${suffix}`, '', expired);
+ });
+ }
+}
+
+function buildLookupUrl(apiUrl: string | undefined): string {
+ return (apiUrl || DEFAULT_API_URL).replace(/\/+$/, '');
+}
+
+export const acxiomRealIdSubmodule: IdProviderSpec = {
+ name: MODULE_NAME,
+
+ decode(value, config) {
+ if (isConsentBlockedByHandlers()) {
+ deleteStoredToken(config);
+ return undefined;
+ }
+ if (value && typeof value === 'string') {
+ return { acxiomRealId: { id: value, atype: 1 } };
+ }
+ if (value && typeof value === 'object' && (value as AcxiomRealIdValue).id) {
+ const v = value as AcxiomRealIdValue;
+ return { acxiomRealId: { id: v.id, atype: v.atype || 1 } };
+ }
+ return undefined;
+ },
+
+ getId(config, consentData, storedId) {
+ const configParams = config?.params || {} as AcxiomRealIdParams;
+ const { partnerId, apiUrl, sourceId, hem } = configParams;
+
+ if (!partnerId) {
+ logError('AcxiomRealId: partnerId is required.');
+ return undefined;
+ }
+
+ if (isConsentBlocked(consentData)) {
+ deleteStoredToken(config);
+ return undefined;
+ }
+
+ if (storedId) {
+ return { id: storedId };
+ }
+
+ const url = buildLookupUrl(apiUrl);
+ const payload: Record = {
+ partnerId,
+ ip: '',
+ userAgent: getWindowSelf().navigator?.userAgent || '',
+ sourceId: sourceId || DEFAULT_SOURCE_ID
+ };
+ if (hem) {
+ payload.hem = hem;
+ }
+ const body = JSON.stringify(payload);
+
+ return {
+ callback: (cb) => {
+ const ajax = dep.ajaxBuilder();
+ ajax(
+ url,
+ {
+ success: (response) => {
+ try {
+ const parsed = JSON.parse(response);
+ const eids = parsed?.user?.eids;
+ const uid = eids?.[0]?.uids?.[0];
+ if (uid?.id) {
+ cb({ id: uid.id, atype: uid.atype });
+ } else {
+ cb(undefined);
+ }
+ } catch (e) {
+ cb(undefined);
+ }
+ },
+ error: () => {
+ cb(undefined);
+ }
+ },
+ body,
+ {
+ method: 'POST',
+ contentType: 'application/json',
+ withCredentials: true
+ }
+ );
+ }
+ };
+ },
+
+ onDataDeletionRequest(config) {
+ deleteStoredToken(config);
+ },
+
+ eids: {
+ 'acxiomRealId': (values) => {
+ return values.map(data => ({
+ source: DEFAULT_SOURCE_ID,
+ uids: [{ id: data.id, atype: data.atype as EID['uids'][number]['atype'] }]
+ }));
+ }
+ }
+};
+
+submodule('userId', acxiomRealIdSubmodule);
diff --git a/modules/adWMGAnalyticsAdapter.js b/modules/adWMGAnalyticsAdapter.js
index f29ef639ab9..ca2a7dda3e5 100644
--- a/modules/adWMGAnalyticsAdapter.js
+++ b/modules/adWMGAnalyticsAdapter.js
@@ -37,7 +37,7 @@ function postAjax(url, data) {
function handleInitSizes(adUnits) {
return adUnits.map(function (adUnit) {
- return adUnit.sizes.toString() || ''
+ return adUnit.sizes.toString() || '';
});
}
diff --git a/modules/adWMGBidAdapter.js b/modules/adWMGBidAdapter.js
index d6ed1ff25b9..513d4d7c8b4 100644
--- a/modules/adWMGBidAdapter.js
+++ b/modules/adWMGBidAdapter.js
@@ -36,7 +36,7 @@ export const spec = {
if (isNaN(parseFloat(value))) {
return 0;
} else return parseFloat(value);
- }
+ };
const adUnit = {
code: bidRequest.adUnitCode,
@@ -97,7 +97,7 @@ export const spec = {
method: 'POST',
url: ENDPOINT,
data: JSON.stringify(request)
- }
+ };
});
},
interpretResponse: (serverResponse) => {
diff --git a/modules/adagioAnalyticsAdapter.js b/modules/adagioAnalyticsAdapter.js
index 925a38d07be..2935a7b6b99 100644
--- a/modules/adagioAnalyticsAdapter.js
+++ b/modules/adagioAnalyticsAdapter.js
@@ -60,12 +60,12 @@ const cache = {
auctionByAdunit: {},
getAuctionIdByAdunit(adUnitPath, adSlotElementId) {
if (cache.auctionByAdunit[adUnitPath]) {
- return { auctionId: cache.auctionByAdunit[adUnitPath], adUnitCode: adUnitPath }
+ return { auctionId: cache.auctionByAdunit[adUnitPath], adUnitCode: adUnitPath };
}
if (cache.auctionByAdunit[adSlotElementId]) {
- return { auctionId: cache.auctionByAdunit[adSlotElementId], adUnitCode: adSlotElementId }
+ return { auctionId: cache.auctionByAdunit[adSlotElementId], adUnitCode: adSlotElementId };
}
- return { auctionId: null, adUnitCode: null }
+ return { auctionId: null, adUnitCode: null };
}
};
@@ -91,7 +91,7 @@ function removeDuplicates(arr, getKey) {
function isAdagio(alias) {
if (!alias) {
- return false
+ return false;
}
return (alias + adapterManager.aliasRegistry[alias]).toLowerCase().includes(ADAGIO_CODE);
};
@@ -120,23 +120,23 @@ function addKeyPrefix(obj, prefix) {
}
function getUsdCpm(cpm, currency) {
- let netCpm = cpm
+ let netCpm = cpm;
if (typeof currency === 'string' && currency.toUpperCase() !== CURRENCY_USD) {
if (typeof getGlobal().convertCurrency === 'function') {
netCpm = parseFloat(Number(getGlobal().convertCurrency(cpm, currency, CURRENCY_USD))).toFixed(3);
} else {
- netCpm = null
+ netCpm = null;
}
}
- return netCpm
+ return netCpm;
}
function getCurrencyData(bid) {
return {
netCpm: getUsdCpm(bid.cpm, bid.currency),
orginalCpm: getUsdCpm(bid.originalCpm, bid.originalCurrency)
- }
+ };
}
/**
@@ -219,7 +219,7 @@ function handlerAuctionInit(event) {
// Get all bidders configured for the ad unit.
// AdUnits with the same code can have a different bidder list, aggregate all of them.
- const biddersAggregate = adUnits.reduce((bidders, adUnit) => bidders.concat(adUnit.bids.map(bid => bid.bidder)), [])
+ const biddersAggregate = adUnits.reduce((bidders, adUnit) => bidders.concat(adUnit.bids.map(bid => bid.bidder)), []);
// remove duplicates
const bidders = [...new Set(biddersAggregate)];
@@ -241,9 +241,9 @@ function handlerAuctionInit(event) {
const bidSrcMapper = (bidder) => {
// bidderCode in the context of the bidderRequest is the name given to the bidder in the adunit.
// It is not always the "true" bidder code, it can also be its alias
- const request = event.bidderRequests.find(br => br.bidderCode === bidder)
- return request ? request.bids[0].src : null
- }
+ const request = event.bidderRequests.find(br => br.bidderCode === bidder);
+ return request ? request.bids[0].src : null;
+ };
const biddersSrc = sortedBidderNames.map(bidSrcMapper).join(',');
const biddersCode = sortedBidderNames.map(bidder => adapterManager.resolveAlias(bidder)).join(',');
@@ -335,13 +335,13 @@ function handlerAuctionEnd(event) {
const adUnitCodes = cache.getAllAdUnitCodes(auctionId);
adUnitCodes.forEach(adUnitCode => {
const bidResponseMapper = (bidder) => {
- const bid = event.bidsReceived.find(bid => bid.adUnitCode === adUnitCode && bid.bidder === bidder)
- return bid ? '1' : '0'
- }
+ const bid = event.bidsReceived.find(bid => bid.adUnitCode === adUnitCode && bid.bidder === bidder);
+ return bid ? '1' : '0';
+ };
const bidCpmMapper = (bidder) => {
- const bid = event.bidsReceived.find(bid => bid.adUnitCode === adUnitCode && bid.bidder === bidder)
- return bid ? getCurrencyData(bid).netCpm : null
- }
+ const bid = event.bidsReceived.find(bid => bid.adUnitCode === adUnitCode && bid.bidder === bidder);
+ return bid ? getCurrencyData(bid).netCpm : null;
+ };
const perfNavigation = performance.getEntriesByType('navigation')[0];
@@ -370,7 +370,7 @@ function handlerBidWon(event) {
return;
}
- const currencyData = getCurrencyData(event)
+ const currencyData = getCurrencyData(event);
const adagioAuctionCacheId = (
(event.latestTargetedAuctionId && event.latestTargetedAuctionId !== event.auctionId)
@@ -436,7 +436,7 @@ function handlerBidTimeout(args) {
*/
function handlerPbsAnalytics(event) {
const pbaByAdUnit = event.atag.find(e => {
- return e.module === 'adg-pba'
+ return e.module === 'adg-pba';
})?.pba;
if (!pbaByAdUnit) {
@@ -446,14 +446,14 @@ function handlerPbsAnalytics(event) {
const adUnitCodes = cache.getAllAdUnitCodes(event.auctionId);
adUnitCodes.forEach(adUnitCode => {
- const pba = pbaByAdUnit[adUnitCode]
+ const pba = pbaByAdUnit[adUnitCode];
if (isPlainObject(pba)) {
cache.updateAuction(event.auctionId, adUnitCode, {
...addKeyPrefix(pba, 'e_')
});
}
- })
+ });
}
/**
@@ -479,7 +479,7 @@ function gamSlotCallback(event) {
// This event can be triggered after AUCTION_END
// To make sure the data is sent, we must send a new beacon version.
- const auction = cache.getAuction(auctionId, adUnitCode)
+ const auction = cache.getAuction(auctionId, adUnitCode);
if (auction?.loa_e !== undefined) {
// loa_e = loadEventEnd
// It means the AUCTION_END has already been sent.
@@ -559,8 +559,8 @@ adagioAdapter.enableAnalytics = config => {
}
adagioAdapter.originEnableAnalytics(config);
- subscribeToGamSlotRenderEndedEvent(gamSlotCallback)
-}
+ subscribeToGamSlotRenderEndedEvent(gamSlotCallback);
+};
adapterManager.registerAnalyticsAdapter({
adapter: adagioAdapter,
diff --git a/modules/adagioBidAdapter.js b/modules/adagioBidAdapter.js
index 3da9746128b..a72ba19df91 100644
--- a/modules/adagioBidAdapter.js
+++ b/modules/adagioBidAdapter.js
@@ -106,7 +106,7 @@ function isRendererPreferredFromPublisher(bidRequest) {
* If not or if the `backupOnly` flag is true, this means we use our own player (BlueBillywig) defined in this adapter.
*/
function getPlayerName(bidRequest) {
- return _internal.isRendererPreferredFromPublisher(bidRequest) ? 'other' : 'adagio'; ;
+ return _internal.isRendererPreferredFromPublisher(bidRequest) ? 'other' : 'adagio';
}
function hasRtd() {
@@ -205,7 +205,7 @@ function _parseNativeBidResponse(bid) {
return;
}
- const native = {}
+ const native = {};
function addAssetDataValue(data) {
const map = {
@@ -221,7 +221,7 @@ function _parseNativeBidResponse(bid) {
10: 'body2', // desc2
11: 'displayUrl',
12: 'cta'
- }
+ };
if (map.hasOwnProperty(data.type) && typeof data.value === 'string') {
native[map[data.type]] = data.value;
}
@@ -230,9 +230,9 @@ function _parseNativeBidResponse(bid) {
// assets
bid.admNative.assets.forEach(asset => {
if (asset.title) {
- native.title = asset.title.text
+ native.title = asset.title.text;
} else if (asset.data) {
- addAssetDataValue(asset.data)
+ addAssetDataValue(asset.data);
} else if (asset.img) {
switch (asset.img.type) {
case 1:
@@ -258,7 +258,7 @@ function _parseNativeBidResponse(bid) {
native.clickUrl = bid.admNative.link.url;
}
if (Array.isArray(bid.admNative.link.clicktrackers)) {
- native.clickTrackers = bid.admNative.link.clicktrackers
+ native.clickTrackers = bid.admNative.link.clicktrackers;
}
}
@@ -300,14 +300,14 @@ function _parseNativeBidResponse(bid) {
}
if (bid.admNative.ext) {
- native.ext = {}
+ native.ext = {};
if (bid.admNative.ext.bvw) {
native.ext.adagio_bvw = bid.admNative.ext.bvw;
}
}
- bid.native = native
+ bid.native = native;
}
// bidRequest param must be the `bidRequest` object with the original `auctionId` value.
@@ -330,7 +330,7 @@ function _getFloors(bidRequest) {
s: isArray(size) ? `${size[0]}x${size[1]}` : undefined,
f: (!isNaN(info?.floor) && info?.currency === CURRENCY) ? info?.floor : undefined
}));
- }
+ };
Object.keys(bidRequest.mediaTypes).forEach(mediaType => {
if (SUPPORTED_MEDIA_TYPES.indexOf(mediaType) !== -1) {
@@ -456,9 +456,9 @@ const OUTSTREAM_RENDERER = {
const rendererId = this.getRendererId(BB_PUBLICATION, rendererCode);
- const override = {}
+ const override = {};
if (bid.skipOffset) {
- override.skipOffset = bid.skipOffset.toString()
+ override.skipOffset = bid.skipOffset.toString();
}
const renderer = window.bluebillywig.renderers.find(bbr => bbr._id === rendererId);
@@ -490,7 +490,7 @@ const OUTSTREAM_RENDERER = {
},
outstreamRender: function(bid) {
bid.renderer.push(() => {
- OUTSTREAM_RENDERER.bootstrapPlayer(bid)
+ OUTSTREAM_RENDERER.bootstrapPlayer(bid);
});
},
getRendererId: function(publication, renderer) {
@@ -533,8 +533,8 @@ export const spec = {
const { gpp, gpp_sid: gppSid } = deepAccess(bidderRequest, 'ortb2.regs', {});
const schain = _getSchain(validBidRequests[0]);
const eids = _getEids(validBidRequests[0]) || [];
- const syncEnabled = deepAccess(config.getConfig('userSync'), 'syncEnabled')
- const canSyncWithIframe = syncEnabled && userSync.canBidderRegisterSync('iframe', 'adagio')
+ const syncEnabled = deepAccess(config.getConfig('userSync'), 'syncEnabled');
+ const canSyncWithIframe = syncEnabled && userSync.canBidderRegisterSync('iframe', 'adagio');
// We don't validate the dsa object in adapter and let our server do it.
const dsa = deepAccess(bidderRequest, 'ortb2.regs.ext.dsa');
@@ -542,18 +542,18 @@ export const spec = {
// If no session data is provided, we always generate a new one.
const sessionData = deepAccess(bidderRequest, 'ortb2.site.ext.data.adg_rtd.session', {});
if (!Object.keys(sessionData).length) {
- logInfo(LOG_PREFIX, 'No session data provided. A new session is be generated.')
+ logInfo(LOG_PREFIX, 'No session data provided. A new session is be generated.');
sessionData.new = true;
- sessionData.rnd = Math.random()
+ sessionData.rnd = Math.random();
}
- const aucId = deepAccess(bidderRequest, 'ortb2.site.ext.data.adg_rtd.uid') || generateUUID()
+ const aucId = deepAccess(bidderRequest, 'ortb2.site.ext.data.adg_rtd.uid') || generateUUID();
const adUnits = validBidRequests.map(rawBidRequest => {
const bidRequest = deepClone(rawBidRequest);
// Fix https://github.com/prebid/Prebid.js/issues/9781
- bidRequest.auctionId = aucId
+ bidRequest.auctionId = aucId;
// Force the Split Keyword to be a String
if (bidRequest.params.splitKeyword) {
@@ -577,9 +577,9 @@ export const spec = {
} else {
let invalidDlParam = false;
- bidRequest.params.dl = bidRequest.params.dataLayer
+ bidRequest.params.dl = bidRequest.params.dataLayer;
// Remove the dataLayer from the BidRequest to send the `dl` instead of the `dataLayer`
- delete bidRequest.params.dataLayer
+ delete bidRequest.params.dataLayer;
Object.keys(bidRequest.params.dl).forEach((key) => {
if (bidRequest.params.dl[key]) {
@@ -604,40 +604,40 @@ export const spec = {
// - the priceFloors.getFloor() uses a `_floorDataForAuction` map to store the floors based on the auctionId.
const computedFloors = _getFloors(rawBidRequest);
if (isArray(computedFloors) && computedFloors.length) {
- bidRequest.floors = computedFloors
+ bidRequest.floors = computedFloors;
if (deepAccess(bidRequest, 'mediaTypes.banner')) {
- const bannerObj = bidRequest.mediaTypes.banner
+ const bannerObj = bidRequest.mediaTypes.banner;
const computeNewSizeArray = (sizeArr = []) => {
- const size = { size: sizeArr, floor: null }
- const bannerFloors = bidRequest.floors.filter(floor => floor.mt === BANNER)
- const BannerSizeFloor = bannerFloors.find(floor => floor.s === sizeArr.join('x'))
- size.floor = (bannerFloors) ? (BannerSizeFloor) ? BannerSizeFloor.f : bannerFloors[0].f : null
- return size
- }
+ const size = { size: sizeArr, floor: null };
+ const bannerFloors = bidRequest.floors.filter(floor => floor.mt === BANNER);
+ const BannerSizeFloor = bannerFloors.find(floor => floor.s === sizeArr.join('x'));
+ size.floor = (bannerFloors) ? (BannerSizeFloor) ? BannerSizeFloor.f : bannerFloors[0].f : null;
+ return size;
+ };
// `bannerSizes`, internal property name
bidRequest.mediaTypes.banner.bannerSizes = (isArray(bannerObj.sizes[0]))
? bannerObj.sizes.map(sizeArr => {
- return computeNewSizeArray(sizeArr)
+ return computeNewSizeArray(sizeArr);
})
- : computeNewSizeArray(bannerObj.sizes)
+ : computeNewSizeArray(bannerObj.sizes);
}
if (deepAccess(bidRequest, 'mediaTypes.video')) {
- const videoObj = bidRequest.mediaTypes.video
+ const videoObj = bidRequest.mediaTypes.video;
const videoFloors = bidRequest.floors.filter(floor => floor.mt === VIDEO);
- const playerSize = (videoObj.playerSize && isArray(videoObj.playerSize[0])) ? videoObj.playerSize[0] : videoObj.playerSize
- const videoSizeFloor = (playerSize) ? videoFloors.find(floor => floor.s === playerSize.join('x')) : undefined
+ const playerSize = (videoObj.playerSize && isArray(videoObj.playerSize[0])) ? videoObj.playerSize[0] : videoObj.playerSize;
+ const videoSizeFloor = (playerSize) ? videoFloors.find(floor => floor.s === playerSize.join('x')) : undefined;
- bidRequest.mediaTypes.video.floor = (videoFloors) ? videoSizeFloor ? videoSizeFloor.f : videoFloors[0].f : null
+ bidRequest.mediaTypes.video.floor = (videoFloors) ? videoSizeFloor ? videoSizeFloor.f : videoFloors[0].f : null;
}
if (deepAccess(bidRequest, 'mediaTypes.native')) {
const nativeFloors = bidRequest.floors.filter(floor => floor.mt === NATIVE);
if (nativeFloors.length) {
- bidRequest.mediaTypes.native.floor = nativeFloors[0].f
+ bidRequest.mediaTypes.native.floor = nativeFloors[0].f;
}
}
}
@@ -665,14 +665,14 @@ export const spec = {
...deepAccess(bidRequest, 'ortb2.site.ext.data.adg_rtd.features', {}),
print_number: (bidRequest.bidderRequestsCount || 1).toString(),
adunit_position: deepAccess(bidRequest, 'ortb2Imp.ext.data.adg_rtd.adunit_position', null)
- }
+ };
// Clean the features object from null or undefined values.
bidRequest.features = Object.entries(rawFeatures).reduce((a, [k, v]) => {
if (v != null) {
a[k] = v;
}
return a;
- }, {})
+ }, {});
// Remove some params that are not needed on the server side.
delete bidRequest.params.siteId;
@@ -692,14 +692,14 @@ export const spec = {
transactionId: bidRequest.transactionId,
instl: bidRequest.instl,
rwdd: bidRequest.rwdd,
- }
+ };
return adUnit;
});
// Group ad units by organizationId
const groupedAdUnits = adUnits.reduce((groupedAdUnits, adUnit) => {
- const organizationId = adUnit.params.organizationId
+ const organizationId = adUnit.params.organizationId;
groupedAdUnits[organizationId] = groupedAdUnits[organizationId] || [];
groupedAdUnits[organizationId].push(adUnit);
@@ -711,7 +711,7 @@ export const spec = {
// Those params are not sent to the server.
// They are used for further operations on analytics adapter.
validBidRequests.forEach(rawBidRequest => {
- rawBidRequest.params.pageviewId = pageviewId
+ rawBidRequest.params.pageviewId = pageviewId;
});
// Build one request per organizationId
@@ -786,11 +786,11 @@ export const spec = {
}
if (mediaTypeContext === OUTSTREAM) {
- bidObj.outstreamRendererCode = deepAccess(bidReq, 'params.rendererCode', BB_RENDERER_DEFAULT)
+ bidObj.outstreamRendererCode = deepAccess(bidReq, 'params.rendererCode', BB_RENDERER_DEFAULT);
if (deepAccess(bidReq, 'mediaTypes.video.skip')) {
- const skipOffset = deepAccess(bidReq, 'mediaTypes.video.skipafter', 5) // default 5s.
- bidObj.skipOffset = skipOffset
+ const skipOffset = deepAccess(bidReq, 'mediaTypes.video.skipafter', 5); // default 5s.
+ bidObj.skipOffset = skipOffset;
}
bidObj.renderer = OUTSTREAM_RENDERER.newRenderer(bidObj.adUnitCode, bidObj.outstreamRendererCode);
diff --git a/modules/adagioRtdProvider.js b/modules/adagioRtdProvider.js
index ac1246fdc0a..a398293d65e 100644
--- a/modules/adagioRtdProvider.js
+++ b/modules/adagioRtdProvider.js
@@ -252,7 +252,7 @@ export const _internal = {
placementFromSource = adUnit.code;
break;
case PLACEMENT_SOURCES.GPID:
- placementFromSource = deepAccess(adUnit, 'ortb2Imp.ext.gpid')
+ placementFromSource = deepAccess(adUnit, 'ortb2Imp.ext.gpid');
break;
}
@@ -356,7 +356,7 @@ function onGetBidRequestData(bidReqConfig, callback, config) {
// A divId is required to compute the slot position and later to track viewability.
// If nothing has been explicitly set, we try to get the divId from the GPT slot and fallback to the adUnit code in last resort.
- let divId = deepAccess(ortb2Imp, 'ext.data.divId')
+ let divId = deepAccess(ortb2Imp, 'ext.data.divId');
if (!divId) {
divId = getGptSlotInfoForAdUnitCode(adUnit.code).divId;
deepSetValue(ortb2Imp, `ext.data.divId`, divId || adUnit.code);
diff --git a/modules/addefendBidAdapter.js b/modules/addefendBidAdapter.js
index 4393e3161e8..81353e429ac 100644
--- a/modules/addefendBidAdapter.js
+++ b/modules/addefendBidAdapter.js
@@ -79,6 +79,6 @@ export const spec = {
}
return validBidResponses;
}
-}
+};
registerBidder(spec);
diff --git a/modules/adelerateBidAdapter.ts b/modules/adelerateBidAdapter.ts
index 62ea8270104..f381c7ffdf3 100644
--- a/modules/adelerateBidAdapter.ts
+++ b/modules/adelerateBidAdapter.ts
@@ -5,6 +5,10 @@ import { ortbConverter } from '../libraries/ortbConverter/converter.js';
import { ajax } from '../src/ajax.js';
import { config } from '../src/config.js';
+export const dep = {
+ ajax
+};
+
type AdelerateBidParams = {
placementId: string;
publisherId: string;
@@ -189,7 +193,7 @@ function onTimeout(data) {
if (!data || !data.length) {
return;
}
- ajax(`${EVENTS_ENDPOINT}/timeout`, undefined, JSON.stringify(data), {
+ dep.ajax(`${EVENTS_ENDPOINT}/timeout`, undefined, JSON.stringify(data), {
method: 'POST',
keepalive: true,
withCredentials: true,
@@ -200,7 +204,7 @@ function onBidWon(bid) {
if (!bid) {
return;
}
- ajax(`${EVENTS_ENDPOINT}/win`, undefined, JSON.stringify({
+ dep.ajax(`${EVENTS_ENDPOINT}/win`, undefined, JSON.stringify({
requestId: bid.requestId,
adId: bid.adId,
cpm: bid.cpm,
@@ -215,7 +219,7 @@ function onBidWon(bid) {
function onBidderError(args) {
const { error, bidderRequest } = args || {};
- ajax(`${EVENTS_ENDPOINT}/error`, undefined, JSON.stringify({
+ dep.ajax(`${EVENTS_ENDPOINT}/error`, undefined, JSON.stringify({
error: error?.status,
bidderCode: BIDDER_CODE,
auctionId: bidderRequest?.auctionId,
diff --git a/modules/adgenerationBidAdapter.js b/modules/adgenerationBidAdapter.js
index 7ef96e673e7..597e04d1e8a 100644
--- a/modules/adgenerationBidAdapter.js
+++ b/modules/adgenerationBidAdapter.js
@@ -37,7 +37,7 @@ const converter = ortbConverter({
return request;
},
bidResponse(buildBidResponse, bid, context) {
- return buildBidResponse(bid, context)
+ return buildBidResponse(bid, context);
}
});
@@ -63,7 +63,7 @@ export const spec = {
buildRequests: function (validBidRequests, bidderRequest) {
const ortbObj = converter.toORTB({ bidRequests: validBidRequests, bidderRequest });
adgLogger.logInfo('ortbObj', ortbObj);
- const { imp, ...rest } = ortbObj
+ const { imp, ...rest } = ortbObj;
const requests = imp.map((impObj) => {
const customParams = impObj?.ext?.params;
const id = getBidIdParameter('id', customParams);
@@ -79,7 +79,7 @@ export const spec = {
urlParams = urlParams.substring(0, urlParams.length - 1);
}
- const urlBase = customParams.debug ? (customParams.debug_url ? customParams.debug_url : DEBUG_URL) : URL
+ const urlBase = customParams.debug ? (customParams.debug_url ? customParams.debug_url : DEBUG_URL) : URL;
const url = `${urlBase}?${urlParams}`;
const data = {
@@ -91,7 +91,7 @@ export const spec = {
imp: [impObj],
...additionalParams
}
- }
+ };
// native以外にvideo等の対応が入った場合は要修正
if (!impObj?.ext?.mediaTypes || !impObj?.ext?.mediaTypes.native) {
@@ -106,8 +106,8 @@ export const spec = {
withCredentials: true,
crossOrigin: true
},
- }
- })
+ };
+ });
return requests;
},
/**
@@ -146,7 +146,7 @@ export const spec = {
if (adResult.adomain && Array.isArray(adResult.adomain) && adResult.adomain.length) {
bidResponse.meta = {
advertiserDomains: adResult.adomain
- }
+ };
}
if (isNative(adResult)) {
bidResponse.native = createNativeAd(adResult.native, adResult.beaconurl);
@@ -257,7 +257,7 @@ function appendChildToBody(ad, data) {
*/
function createAPVTag() {
const APVURL = 'https://cdn.apvdr.com/js/VideoAd.min.js';
- return ``
+ return ``;
}
/**
@@ -279,7 +279,7 @@ function insertVASTMethodForAPV(targetId, vastXml) {
const apvVideoAdParam = {
s: targetId
};
- return ``
+ return ``;
}
/**
@@ -289,7 +289,7 @@ function insertVASTMethodForAPV(targetId, vastXml) {
* @return {string}
*/
function insertVASTMethodForADGBrowserM(vastXml, marginTop) {
- return ``
+ return ``;
}
/**
@@ -307,8 +307,8 @@ function removeWrapper(ad) {
* @return {?string} USD or JPY
*/
function getCurrencyType(bidderRequest) {
- const adServerCurrency = getCurrencyFromBidderRequest(bidderRequest) || ''
- return adServerCurrency.toUpperCase() === 'USD' ? 'USD' : 'JPY'
+ const adServerCurrency = getCurrencyFromBidderRequest(bidderRequest) || '';
+ return adServerCurrency.toUpperCase() === 'USD' ? 'USD' : 'JPY';
}
registerBidder(spec);
diff --git a/modules/adgridBidAdapter.ts b/modules/adgridBidAdapter.ts
index 770a332191e..633dbef4cf7 100644
--- a/modules/adgridBidAdapter.ts
+++ b/modules/adgridBidAdapter.ts
@@ -2,7 +2,7 @@ import { deepSetValue, generateUUID } from '../src/utils.js';
import { getStorageManager, StorageManager } from '../src/storageManager.js';
import { AdapterRequest, BidderSpec, registerBidder } from '../src/adapters/bidderFactory.js';
import { BANNER, VIDEO } from '../src/mediaTypes.js';
-import { ortbConverter } from '../libraries/ortbConverter/converter.js'
+import { ortbConverter } from '../libraries/ortbConverter/converter.js';
import { BidRequest, ClientBidderRequest } from '../src/adapterManager.js';
import { interpretResponse, enrichImp, enrichRequest, getAmxId, getGzipSetting, getLocalStorageFunctionGenerator, getUserSyncs } from '../libraries/nexx360Utils/index.js';
import { ORTBRequest } from '../src/prebid.public.js';
@@ -74,13 +74,13 @@ const isBidRequestValid = (bid:BidRequest): boolean => {
if (typeof bid.params.domainId !== 'number') return false;
if (typeof bid.params.placement !== 'string') return false;
return true;
-}
+};
const buildRequests = (
bidRequests: BidRequest[],
bidderRequest: ClientBidderRequest,
): AdapterRequest => {
- const data:ORTBRequest = converter.toORTB({ bidRequests, bidderRequest })
+ const data:ORTBRequest = converter.toORTB({ bidRequests, bidderRequest });
const adapterRequest:AdapterRequest = {
method: 'POST',
url: REQUEST_URL,
@@ -88,9 +88,9 @@ const buildRequests = (
options: {
endpointCompression: getGzipSetting(BIDDER_CODE, true),
},
- }
+ };
return adapterRequest;
-}
+};
export const spec:BidderSpec = {
code: BIDDER_CODE,
diff --git a/modules/adheseBidAdapter.js b/modules/adheseBidAdapter.js
index 46b9039508b..69d327376b5 100644
--- a/modules/adheseBidAdapter.js
+++ b/modules/adheseBidAdapter.js
@@ -121,7 +121,7 @@ function adResponse(bid, ad) {
if (bidResponse.mediaType === VIDEO) {
if (ad.cachedBodyUrl) {
- bidResponse.vastUrl = ad.cachedBodyUrl
+ bidResponse.vastUrl = ad.cachedBodyUrl;
} else {
bidResponse.vastXml = markup;
}
@@ -188,7 +188,7 @@ function isAdheseAd(ad) {
function getAdMarkup(ad) {
if (!isAdheseAd(ad) || (ad.ext === 'js' && ad.body !== undefined && ad.body !== '' && ad.body.match(/
- `
-}
+