prebid.js 7.35.0 → 7.37.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.devcontainer/Dockerfile +2 -0
- package/dist/33acrossBidAdapter.js +1 -1
- package/dist/33acrossIdSystem.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adbookpspBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/admaruBidAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/aidemBidAdapter.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/aolBidAdapter.js +1 -1
- package/dist/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/audiencerunBidAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bluebillywigBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/brightcomBidAdapter.js +1 -1
- package/dist/brightcomSSPBidAdapter.js +1 -0
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/chtnwBidAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/cwireBidAdapter.js +1 -1
- package/dist/dependencies.json +3 -0
- package/dist/discoveryBidAdapter.js +1 -1
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/feedadBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/freewheel-sspBidAdapter.js +1 -1
- package/dist/glimpseBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gridNMBidAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/impactifyBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/incrxBidAdapter.js +1 -1
- package/dist/inmarBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/jixieBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/kueezBidAdapter.js +1 -1
- package/dist/kueezRtbBidAdapter.js +1 -1
- package/dist/lassoBidAdapter.js +1 -1
- package/dist/lifestreetBidAdapter.js +1 -1
- package/dist/limelightDigitalBidAdapter.js +1 -1
- package/dist/liveIntentIdSystem.js +1 -1
- package/dist/livewrappedBidAdapter.js +1 -1
- package/dist/liveyieldAnalyticsAdapter.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/magniteAnalyticsAdapter.js +1 -1
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/mediagoBidAdapter.js +1 -1
- package/dist/mediakeysBidAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/minutemediaplusBidAdapter.js +1 -0
- package/dist/neuwoRtdProvider.js +1 -0
- package/dist/nextMillenniumBidAdapter.js +1 -1
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +141 -137
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/parrableIdSystem.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebid-core.js +1 -1
- package/dist/prebidServerBidAdapter.js +1 -1
- package/dist/proxistoreBidAdapter.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pubxaiAnalyticsAdapter.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/rubiconAnalyticsAdapter.js +1 -1
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/scatteredBidAdapter.js +1 -0
- package/dist/seedingAllianceBidAdapter.js +1 -1
- package/dist/seedtagBidAdapter.js +1 -1
- package/dist/sharethroughAnalyticsAdapter.js +1 -1
- package/dist/sharethroughBidAdapter.js +1 -1
- package/dist/shinezBidAdapter.js +1 -1
- package/dist/sirdataRtdProvider.js +1 -1
- package/dist/smaatoBidAdapter.js +1 -1
- package/dist/smartadserverBidAdapter.js +1 -1
- package/dist/smartxBidAdapter.js +1 -1
- package/dist/smilewantedBidAdapter.js +1 -1
- package/dist/sonobiBidAdapter.js +1 -1
- package/dist/sovrnAnalyticsAdapter.js +1 -1
- package/dist/sovrnBidAdapter.js +1 -1
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/synacormediaBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/trionBidAdapter.js +1 -1
- package/dist/tripleliftBidAdapter.js +1 -1
- package/dist/ttdBidAdapter.js +1 -1
- package/dist/ucfunnelAnalyticsAdapter.js +1 -1
- package/dist/uid2IdSystem.js +1 -1
- package/dist/underdogmediaBidAdapter.js +1 -1
- package/dist/undertoneBidAdapter.js +1 -1
- package/dist/userId.js +1 -1
- package/dist/vidazooBidAdapter.js +1 -1
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/visxBidAdapter.js +1 -1
- package/dist/vuukleBidAdapter.js +1 -1
- package/dist/widespaceBidAdapter.js +1 -1
- package/dist/winrBidAdapter.js +1 -1
- package/dist/yahoosspBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/integrationExamples/gpt/neuwoRtdProvider_example.html +190 -0
- package/modules/33acrossBidAdapter.js +13 -4
- package/modules/adagioBidAdapter.js +14 -14
- package/modules/adagioBidAdapter.md +3 -1
- package/modules/admaruBidAdapter.js +19 -1
- package/modules/aidemBidAdapter.js +90 -65
- package/modules/aidemBidAdapter.md +10 -7
- package/modules/ajaBidAdapter.js +6 -1
- package/modules/amxIdSystem.md +2 -10
- package/modules/aolBidAdapter.js +1 -1
- package/modules/appnexusBidAdapter.js +45 -48
- package/modules/brightcomBidAdapter.js +1 -0
- package/modules/brightcomSSPBidAdapter.js +323 -0
- package/modules/brightcomSSPBidAdapter.md +46 -0
- package/modules/criteoBidAdapter.js +4 -5
- package/modules/cwireBidAdapter.md +9 -3
- package/modules/discoveryBidAdapter.js +22 -12
- package/modules/feedadBidAdapter.js +35 -15
- package/modules/fpdModule/index.md +5 -2
- package/modules/freewheel-sspBidAdapter.js +5 -1
- package/modules/gridBidAdapter.js +3 -1
- package/modules/incrxBidAdapter.js +2 -0
- package/modules/ixBidAdapter.js +318 -175
- package/modules/kueezRtbBidAdapter.js +54 -20
- package/modules/limelightDigitalBidAdapter.js +6 -1
- package/modules/limelightDigitalBidAdapter.md +12 -2
- package/modules/liveIntentIdSystem.js +1 -1
- package/modules/livewrappedBidAdapter.js +28 -16
- package/modules/mediagoBidAdapter.js +22 -17
- package/modules/minutemediaplusBidAdapter.js +291 -0
- package/modules/minutemediaplusBidAdapter.md +35 -0
- package/modules/neuwoRtdProvider.js +171 -0
- package/modules/neuwoRtdProvider.md +40 -0
- package/modules/nextMillenniumBidAdapter.js +9 -1
- package/modules/nexx360BidAdapter.js +1 -1
- package/modules/prebidServerBidAdapter/ortbConverter.js +6 -0
- package/modules/proxistoreBidAdapter.js +2 -2
- package/modules/pubmaticBidAdapter.js +4 -0
- package/modules/pubxaiAnalyticsAdapter.js +2 -2
- package/modules/scatteredBidAdapter.js +72 -0
- package/modules/scatteredBidAdapter.md +36 -0
- package/modules/sirdataRtdProvider.js +262 -284
- package/modules/smartxBidAdapter.js +2 -0
- package/modules/smilewantedBidAdapter.js +5 -0
- package/modules/sonobiBidAdapter.js +1 -10
- package/modules/topicsFpdModule.md +62 -0
- package/modules/tripleliftBidAdapter.js +4 -0
- package/modules/userId/eids.js +1 -1
- package/modules/vidazooBidAdapter.js +3 -1
- package/modules/yahoosspBidAdapter.js +1 -1
- package/modules/yieldmoBidAdapter.js +1 -0
- package/package.json +2 -2
- package/src/adapterManager.js +30 -14
- package/src/utils.js +1 -1
- package/test/spec/modules/33acrossBidAdapter_spec.js +51 -18
- package/test/spec/modules/adagioBidAdapter_spec.js +2 -2
- package/test/spec/modules/admaruBidAdapter_spec.js +48 -0
- package/test/spec/modules/aidemBidAdapter_spec.js +77 -10
- package/test/spec/modules/ajaBidAdapter_spec.js +21 -1
- package/test/spec/modules/aolBidAdapter_spec.js +2 -2
- package/test/spec/modules/appnexusBidAdapter_spec.js +123 -16
- package/test/spec/modules/brightcomSSPBidAdapter_spec.js +411 -0
- package/test/spec/modules/criteoBidAdapter_spec.js +24 -1
- package/test/spec/modules/eids_spec.js +1 -1
- package/test/spec/modules/feedadBidAdapter_spec.js +47 -77
- package/test/spec/modules/freewheel-sspBidAdapter_spec.js +1 -1
- package/test/spec/modules/incrxBidAdapter_spec.js +4 -0
- package/test/spec/modules/ixBidAdapter_spec.js +24 -54
- package/test/spec/modules/kueezRtbBidAdapter_spec.js +63 -22
- package/test/spec/modules/limelightDigitalBidAdapter_spec.js +35 -5
- package/test/spec/modules/livewrappedBidAdapter_spec.js +267 -2
- package/test/spec/modules/minutemediaplusBidAdapter_spec.js +519 -0
- package/test/spec/modules/neuwoRtdProvider_spec.js +123 -0
- package/test/spec/modules/nextMillenniumBidAdapter_spec.js +11 -0
- package/test/spec/modules/prebidServerBidAdapter_spec.js +56 -0
- package/test/spec/modules/proxistoreBidAdapter_spec.js +2 -2
- package/test/spec/modules/pubmaticBidAdapter_spec.js +15 -0
- package/test/spec/modules/pubxaiAnalyticsAdapter_spec.js +3 -1
- package/test/spec/modules/scatteredBidAdapter_spec.js +210 -0
- package/test/spec/modules/sirdataRtdProvider_spec.js +116 -22
- package/test/spec/modules/smilewantedBidAdapter_spec.js +54 -3
- package/test/spec/modules/sonobiBidAdapter_spec.js +3 -25
- package/test/spec/modules/tripleliftBidAdapter_spec.js +9 -2
- package/test/spec/modules/userId_spec.js +1 -1
- package/test/spec/modules/vidazooBidAdapter_spec.js +4 -1
- package/test/spec/modules/yahoosspBidAdapter_spec.js +1 -1
- package/test/spec/unit/core/adapterManager_spec.js +147 -0
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
isFn,
|
|
16
16
|
isInteger,
|
|
17
17
|
isNumber,
|
|
18
|
+
isArrayOfNums,
|
|
18
19
|
logError,
|
|
19
20
|
logInfo,
|
|
20
21
|
logWarn,
|
|
@@ -48,33 +49,32 @@ const ADAGIO_PUBKEY = 'AL16XT44Sfp+8SHVF1UdC7hydPSMVLMhsYknKDdwqq+0ToDSJrP0+Qh0k
|
|
|
48
49
|
const ADAGIO_PUBKEY_E = 65537;
|
|
49
50
|
const CURRENCY = 'USD';
|
|
50
51
|
|
|
51
|
-
// This provide a whitelist and a basic validation
|
|
52
|
-
//
|
|
53
|
-
// https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf
|
|
52
|
+
// This provide a whitelist and a basic validation of OpenRTB 2.6 options used by the Adagio SSP.
|
|
53
|
+
// https://iabtechlab.com/wp-content/uploads/2022/04/OpenRTB-2-6_FINAL.pdf
|
|
54
54
|
export const ORTB_VIDEO_PARAMS = {
|
|
55
55
|
'mimes': (value) => Array.isArray(value) && value.length > 0 && value.every(v => typeof v === 'string'),
|
|
56
56
|
'minduration': (value) => isInteger(value),
|
|
57
57
|
'maxduration': (value) => isInteger(value),
|
|
58
|
-
'protocols': (value) =>
|
|
58
|
+
'protocols': (value) => isArrayOfNums(value),
|
|
59
59
|
'w': (value) => isInteger(value),
|
|
60
60
|
'h': (value) => isInteger(value),
|
|
61
61
|
'startdelay': (value) => isInteger(value),
|
|
62
|
-
'placement': (value) =>
|
|
63
|
-
'linearity': (value) =>
|
|
64
|
-
'skip': (value) =>
|
|
62
|
+
'placement': (value) => isInteger(value),
|
|
63
|
+
'linearity': (value) => isInteger(value),
|
|
64
|
+
'skip': (value) => isInteger(value),
|
|
65
65
|
'skipmin': (value) => isInteger(value),
|
|
66
66
|
'skipafter': (value) => isInteger(value),
|
|
67
67
|
'sequence': (value) => isInteger(value),
|
|
68
|
-
'battr': (value) =>
|
|
68
|
+
'battr': (value) => isArrayOfNums(value),
|
|
69
69
|
'maxextended': (value) => isInteger(value),
|
|
70
70
|
'minbitrate': (value) => isInteger(value),
|
|
71
71
|
'maxbitrate': (value) => isInteger(value),
|
|
72
|
-
'boxingallowed': (value) =>
|
|
73
|
-
'playbackmethod': (value) =>
|
|
74
|
-
'playbackend': (value) =>
|
|
75
|
-
'delivery': (value) =>
|
|
76
|
-
'pos': (value) =>
|
|
77
|
-
'api': (value) =>
|
|
72
|
+
'boxingallowed': (value) => isInteger(value),
|
|
73
|
+
'playbackmethod': (value) => isArrayOfNums(value),
|
|
74
|
+
'playbackend': (value) => isInteger(value),
|
|
75
|
+
'delivery': (value) => isInteger(value),
|
|
76
|
+
'pos': (value) => isInteger(value),
|
|
77
|
+
'api': (value) => isArrayOfNums(value)
|
|
78
78
|
};
|
|
79
79
|
|
|
80
80
|
let currentWindow;
|
|
@@ -81,8 +81,10 @@ var adUnits = [
|
|
|
81
81
|
cpm: 3.00 // default to 1.00
|
|
82
82
|
},
|
|
83
83
|
video: {
|
|
84
|
+
api: [2, 7], // Required - Your video player must at least support the value 2 and/or 7.
|
|
85
|
+
playbackMethod: [6], // Highly recommended
|
|
84
86
|
skip: 0
|
|
85
|
-
// OpenRTB
|
|
87
|
+
// OpenRTB video options defined here override ones defined in mediaTypes.
|
|
86
88
|
},
|
|
87
89
|
native: {
|
|
88
90
|
// Optional OpenRTB Native 1.2 request object. Only `context`, `plcmttype` fields are supported.
|
|
@@ -5,6 +5,7 @@ const ADMARU_ENDPOINT = 'https://p1.admaru.net/AdCall';
|
|
|
5
5
|
const BIDDER_CODE = 'admaru';
|
|
6
6
|
|
|
7
7
|
const DEFAULT_BID_TTL = 360;
|
|
8
|
+
const SYNC_URL = 'https://p2.admaru.net/UserSync/sync'
|
|
8
9
|
|
|
9
10
|
function parseBid(rawBid, currency) {
|
|
10
11
|
const bid = {};
|
|
@@ -75,7 +76,24 @@ export const spec = {
|
|
|
75
76
|
}
|
|
76
77
|
|
|
77
78
|
return bidResponses;
|
|
78
|
-
}
|
|
79
|
+
},
|
|
80
|
+
|
|
81
|
+
getUserSyncs: function (syncOptions, responses) {
|
|
82
|
+
if (syncOptions.iframeEnabled) {
|
|
83
|
+
return [{
|
|
84
|
+
type: 'iframe',
|
|
85
|
+
url: SYNC_URL
|
|
86
|
+
}];
|
|
87
|
+
}
|
|
88
|
+
if (syncOptions.pixelEnabled) {
|
|
89
|
+
return [{
|
|
90
|
+
type: 'image',
|
|
91
|
+
url: SYNC_URL
|
|
92
|
+
}];
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
return [];
|
|
96
|
+
},
|
|
79
97
|
}
|
|
80
98
|
|
|
81
99
|
registerBidder(spec);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {_each, contains, deepAccess, deepSetValue, getDNT, isBoolean, isStr, logError, logInfo} from '../src/utils.js';
|
|
1
|
+
import {_each, contains, deepAccess, deepSetValue, getDNT, isBoolean, isStr, isNumber, logError, logInfo} from '../src/utils.js';
|
|
2
2
|
import {config} from '../src/config.js';
|
|
3
3
|
import {BANNER, VIDEO} from '../src/mediaTypes.js';
|
|
4
4
|
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
@@ -21,6 +21,8 @@ export const ERROR_CODES = {
|
|
|
21
21
|
SITE_ID_INVALID_VALUE: 4,
|
|
22
22
|
MEDIA_TYPE_NOT_SUPPORTED: 5,
|
|
23
23
|
PUBLISHER_ID_INVALID_VALUE: 6,
|
|
24
|
+
INVALID_RATELIMIT: 7,
|
|
25
|
+
PLACEMENT_ID_INVALID_VALUE: 8,
|
|
24
26
|
};
|
|
25
27
|
|
|
26
28
|
const endpoints = {
|
|
@@ -30,29 +32,29 @@ const endpoints = {
|
|
|
30
32
|
timeout: `${BASE_URL}/notice/timeout`,
|
|
31
33
|
error: `${BASE_URL}/notice/error`,
|
|
32
34
|
}
|
|
33
|
-
}
|
|
35
|
+
};
|
|
34
36
|
|
|
35
37
|
export function setEndPoints(env = null, path = '', mediaType = BANNER) {
|
|
36
38
|
switch (env) {
|
|
37
39
|
case 'local':
|
|
38
|
-
endpoints.request = mediaType === BANNER ? `${LOCAL_BASE_URL}${path}/bid/request` : `${LOCAL_BASE_URL}${path}/bid/videorequest
|
|
39
|
-
endpoints.notice.win = `${LOCAL_BASE_URL}${path}/notice/win
|
|
40
|
-
endpoints.notice.error = `${LOCAL_BASE_URL}${path}/notice/error
|
|
41
|
-
endpoints.notice.timeout = `${LOCAL_BASE_URL}${path}/notice/timeout
|
|
40
|
+
endpoints.request = mediaType === BANNER ? `${LOCAL_BASE_URL}${path}/bid/request` : `${LOCAL_BASE_URL}${path}/bid/videorequest`;
|
|
41
|
+
endpoints.notice.win = `${LOCAL_BASE_URL}${path}/notice/win`;
|
|
42
|
+
endpoints.notice.error = `${LOCAL_BASE_URL}${path}/notice/error`;
|
|
43
|
+
endpoints.notice.timeout = `${LOCAL_BASE_URL}${path}/notice/timeout`;
|
|
42
44
|
break;
|
|
43
45
|
case 'main':
|
|
44
|
-
endpoints.request = mediaType === BANNER ? `${BASE_URL}${path}/bid/request` : `${BASE_URL}${path}/bid/videorequest
|
|
45
|
-
endpoints.notice.win = `${BASE_URL}${path}/notice/win
|
|
46
|
-
endpoints.notice.error = `${BASE_URL}${path}/notice/error
|
|
47
|
-
endpoints.notice.timeout = `${BASE_URL}${path}/notice/timeout
|
|
46
|
+
endpoints.request = mediaType === BANNER ? `${BASE_URL}${path}/bid/request` : `${BASE_URL}${path}/bid/videorequest`;
|
|
47
|
+
endpoints.notice.win = `${BASE_URL}${path}/notice/win`;
|
|
48
|
+
endpoints.notice.error = `${BASE_URL}${path}/notice/error`;
|
|
49
|
+
endpoints.notice.timeout = `${BASE_URL}${path}/notice/timeout`;
|
|
48
50
|
break;
|
|
49
51
|
}
|
|
50
|
-
return endpoints
|
|
52
|
+
return endpoints;
|
|
51
53
|
}
|
|
52
54
|
|
|
53
55
|
config.getConfig('aidem', function (config) {
|
|
54
|
-
if (config.aidem.env) { setEndPoints(config.aidem.env, config.aidem.path, config.aidem.mediaType) }
|
|
55
|
-
})
|
|
56
|
+
if (config.aidem.env) { setEndPoints(config.aidem.env, config.aidem.path, config.aidem.mediaType); }
|
|
57
|
+
});
|
|
56
58
|
|
|
57
59
|
// AIDEM Custom FN
|
|
58
60
|
function recur(obj) {
|
|
@@ -121,8 +123,8 @@ function getDevice() {
|
|
|
121
123
|
|
|
122
124
|
function getRegs() {
|
|
123
125
|
let regs = {};
|
|
124
|
-
const consentManagement = config.getConfig('consentManagement')
|
|
125
|
-
const coppa = config.getConfig('coppa')
|
|
126
|
+
const consentManagement = config.getConfig('consentManagement');
|
|
127
|
+
const coppa = config.getConfig('coppa');
|
|
126
128
|
if (consentManagement && !!(consentManagement.gdpr)) {
|
|
127
129
|
deepSetValue(regs, 'gdpr_applies', !!consentManagement.gdpr);
|
|
128
130
|
} else {
|
|
@@ -145,11 +147,15 @@ function getRegs() {
|
|
|
145
147
|
}
|
|
146
148
|
|
|
147
149
|
function getPageUrl(bidderRequest) {
|
|
148
|
-
return bidderRequest?.refererInfo?.page
|
|
150
|
+
return bidderRequest?.refererInfo?.page;
|
|
149
151
|
}
|
|
150
152
|
|
|
151
153
|
function buildWinNotice(bid) {
|
|
154
|
+
const params = bid.params[0];
|
|
152
155
|
return {
|
|
156
|
+
publisherId: params.publisherId,
|
|
157
|
+
siteId: params.siteId,
|
|
158
|
+
placementId: params.placementId,
|
|
153
159
|
burl: deepAccess(bid, 'meta.burl'),
|
|
154
160
|
cpm: bid.cpm,
|
|
155
161
|
currency: bid.currency,
|
|
@@ -161,7 +167,7 @@ function buildWinNotice(bid) {
|
|
|
161
167
|
ttl: bid.ttl,
|
|
162
168
|
requestTimestamp: bid.requestTimestamp,
|
|
163
169
|
responseTimestamp: bid.responseTimestamp,
|
|
164
|
-
}
|
|
170
|
+
};
|
|
165
171
|
}
|
|
166
172
|
|
|
167
173
|
function buildErrorNotice(prebidErrorResponse) {
|
|
@@ -171,29 +177,29 @@ function buildErrorNotice(prebidErrorResponse) {
|
|
|
171
177
|
auctionId: prebidErrorResponse.auctionId,
|
|
172
178
|
bidderRequestId: prebidErrorResponse.bidderRequestId,
|
|
173
179
|
metrics: {}
|
|
174
|
-
}
|
|
180
|
+
};
|
|
175
181
|
}
|
|
176
182
|
|
|
177
183
|
function hasValidFloor(obj) {
|
|
178
|
-
if (!obj) return false
|
|
179
|
-
const hasValue = !isNaN(Number(obj.value))
|
|
180
|
-
const hasCurrency = contains(AVAILABLE_CURRENCIES, obj.currency)
|
|
181
|
-
return hasValue && hasCurrency
|
|
184
|
+
if (!obj) return false;
|
|
185
|
+
const hasValue = !isNaN(Number(obj.value));
|
|
186
|
+
const hasCurrency = contains(AVAILABLE_CURRENCIES, obj.currency);
|
|
187
|
+
return hasValue && hasCurrency;
|
|
182
188
|
}
|
|
183
189
|
|
|
184
190
|
function getMediaType(bidRequest) {
|
|
185
|
-
if ((bidRequest.mediaTypes && bidRequest.mediaTypes.hasOwnProperty('video')) || bidRequest.params.hasOwnProperty('video')) { return VIDEO }
|
|
186
|
-
return BANNER
|
|
191
|
+
if ((bidRequest.mediaTypes && bidRequest.mediaTypes.hasOwnProperty('video')) || bidRequest.params.hasOwnProperty('video')) { return VIDEO; }
|
|
192
|
+
return BANNER;
|
|
187
193
|
}
|
|
188
194
|
|
|
189
195
|
function getPrebidRequestFields(bidderRequest, bidRequests) {
|
|
190
|
-
const payload = {}
|
|
196
|
+
const payload = {};
|
|
191
197
|
// Base Payload Data
|
|
192
198
|
deepSetValue(payload, 'id', bidderRequest.auctionId);
|
|
193
199
|
// Impressions
|
|
194
|
-
setPrebidImpressionObject(bidRequests, payload)
|
|
200
|
+
setPrebidImpressionObject(bidRequests, payload);
|
|
195
201
|
// Device
|
|
196
|
-
deepSetValue(payload, 'device', getDevice())
|
|
202
|
+
deepSetValue(payload, 'device', getDevice());
|
|
197
203
|
// Timeout
|
|
198
204
|
deepSetValue(payload, 'tmax', bidderRequest.timeout);
|
|
199
205
|
// Currency
|
|
@@ -203,13 +209,13 @@ function getPrebidRequestFields(bidderRequest, bidRequests) {
|
|
|
203
209
|
// Privacy Regs
|
|
204
210
|
deepSetValue(payload, 'regs', getRegs());
|
|
205
211
|
// Site
|
|
206
|
-
setPrebidSiteObject(bidderRequest, payload)
|
|
212
|
+
setPrebidSiteObject(bidderRequest, payload);
|
|
207
213
|
// Environment
|
|
208
|
-
setPrebidRequestEnvironment(payload)
|
|
214
|
+
setPrebidRequestEnvironment(payload);
|
|
209
215
|
// AT auction type
|
|
210
216
|
deepSetValue(payload, 'at', 1);
|
|
211
217
|
|
|
212
|
-
return payload
|
|
218
|
+
return payload;
|
|
213
219
|
}
|
|
214
220
|
|
|
215
221
|
function setPrebidImpressionObject(bidRequests, payload) {
|
|
@@ -220,24 +226,24 @@ function setPrebidImpressionObject(bidRequests, payload) {
|
|
|
220
226
|
deepSetValue(impressionObject, 'id', bidRequest.bidId);
|
|
221
227
|
// Transaction id
|
|
222
228
|
deepSetValue(impressionObject, 'tid', deepAccess(bidRequest, 'transactionId'));
|
|
223
|
-
//
|
|
229
|
+
// placement id
|
|
224
230
|
deepSetValue(impressionObject, 'tagid', deepAccess(bidRequest, 'params.placementId', null));
|
|
225
231
|
// Publisher id
|
|
226
232
|
deepSetValue(payload, 'site.publisher.id', deepAccess(bidRequest, 'params.publisherId'));
|
|
227
233
|
// Site id
|
|
228
234
|
deepSetValue(payload, 'site.id', deepAccess(bidRequest, 'params.siteId'));
|
|
229
|
-
const mediaType = getMediaType(bidRequest)
|
|
235
|
+
const mediaType = getMediaType(bidRequest);
|
|
230
236
|
switch (mediaType) {
|
|
231
237
|
case 'banner':
|
|
232
|
-
setPrebidImpressionObjectBanner(bidRequest, impressionObject)
|
|
238
|
+
setPrebidImpressionObjectBanner(bidRequest, impressionObject);
|
|
233
239
|
break;
|
|
234
240
|
case 'video':
|
|
235
|
-
setPrebidImpressionObjectVideo(bidRequest, impressionObject)
|
|
241
|
+
setPrebidImpressionObjectVideo(bidRequest, impressionObject);
|
|
236
242
|
break;
|
|
237
243
|
}
|
|
238
244
|
|
|
239
245
|
// Floor (optional)
|
|
240
|
-
setPrebidImpressionObjectFloor(bidRequest, impressionObject)
|
|
246
|
+
setPrebidImpressionObjectFloor(bidRequest, impressionObject);
|
|
241
247
|
|
|
242
248
|
impressionObject.imp_ext = {};
|
|
243
249
|
|
|
@@ -272,10 +278,10 @@ function setPrebidRequestEnvironment(payload) {
|
|
|
272
278
|
}
|
|
273
279
|
|
|
274
280
|
function setPrebidImpressionObjectFloor(bidRequest, impressionObject) {
|
|
275
|
-
const floor = deepAccess(bidRequest, 'params.floor')
|
|
281
|
+
const floor = deepAccess(bidRequest, 'params.floor');
|
|
276
282
|
if (hasValidFloor(floor)) {
|
|
277
|
-
deepSetValue(impressionObject, 'floor.value', floor.value)
|
|
278
|
-
deepSetValue(impressionObject, 'floor.currency', floor.currency)
|
|
283
|
+
deepSetValue(impressionObject, 'floor.value', floor.value);
|
|
284
|
+
deepSetValue(impressionObject, 'floor.currency', floor.currency);
|
|
279
285
|
}
|
|
280
286
|
}
|
|
281
287
|
|
|
@@ -322,7 +328,7 @@ function getPrebidResponseBidObject(openRTBResponseBidObject) {
|
|
|
322
328
|
deepSetValue(prebidResponseBidObject, 'currency', openRTBResponseBidObject.cur ? openRTBResponseBidObject.cur.toUpperCase() : DEFAULT_CURRENCY);
|
|
323
329
|
deepSetValue(prebidResponseBidObject, 'width', openRTBResponseBidObject.w);
|
|
324
330
|
deepSetValue(prebidResponseBidObject, 'height', openRTBResponseBidObject.h);
|
|
325
|
-
deepSetValue(prebidResponseBidObject, 'dealId', openRTBResponseBidObject.dealid)
|
|
331
|
+
deepSetValue(prebidResponseBidObject, 'dealId', openRTBResponseBidObject.dealid);
|
|
326
332
|
deepSetValue(prebidResponseBidObject, 'netRevenue', true);
|
|
327
333
|
deepSetValue(prebidResponseBidObject, 'ttl', 60000);
|
|
328
334
|
|
|
@@ -335,13 +341,13 @@ function getPrebidResponseBidObject(openRTBResponseBidObject) {
|
|
|
335
341
|
deepSetValue(prebidResponseBidObject, 'mediaType', BANNER);
|
|
336
342
|
deepSetValue(prebidResponseBidObject, 'ad', openRTBResponseBidObject.adm);
|
|
337
343
|
}
|
|
338
|
-
setPrebidResponseBidObjectMeta(prebidResponseBidObject, openRTBResponseBidObject)
|
|
339
|
-
return prebidResponseBidObject
|
|
344
|
+
setPrebidResponseBidObjectMeta(prebidResponseBidObject, openRTBResponseBidObject);
|
|
345
|
+
return prebidResponseBidObject;
|
|
340
346
|
}
|
|
341
347
|
|
|
342
348
|
function setPrebidResponseBidObjectMeta(prebidResponseBidObject, openRTBResponseBidObject) {
|
|
343
349
|
logInfo('AIDEM Bid Adapter meta', openRTBResponseBidObject);
|
|
344
|
-
deepSetValue(prebidResponseBidObject, 'meta.advertiserDomains', openRTBResponseBidObject.
|
|
350
|
+
deepSetValue(prebidResponseBidObject, 'meta.advertiserDomains', deepAccess(openRTBResponseBidObject, 'meta.advertiserDomains'));
|
|
345
351
|
if (openRTBResponseBidObject.cat && Array.isArray(openRTBResponseBidObject.cat)) {
|
|
346
352
|
const primaryCatId = openRTBResponseBidObject.cat.shift();
|
|
347
353
|
deepSetValue(prebidResponseBidObject, 'meta.primaryCatId', primaryCatId);
|
|
@@ -357,28 +363,28 @@ function setPrebidResponseBidObjectMeta(prebidResponseBidObject, openRTBResponse
|
|
|
357
363
|
}
|
|
358
364
|
|
|
359
365
|
function hasValidMediaType(bidRequest) {
|
|
360
|
-
const supported = hasBannerMediaType(bidRequest) || hasVideoMediaType(bidRequest)
|
|
366
|
+
const supported = hasBannerMediaType(bidRequest) || hasVideoMediaType(bidRequest);
|
|
361
367
|
if (!supported) {
|
|
362
368
|
logError('AIDEM Bid Adapter: media type not supported', { bidder: BIDDER_CODE, code: ERROR_CODES.MEDIA_TYPE_NOT_SUPPORTED });
|
|
363
369
|
}
|
|
364
|
-
return supported
|
|
370
|
+
return supported;
|
|
365
371
|
}
|
|
366
372
|
|
|
367
373
|
function hasBannerMediaType(bidRequest) {
|
|
368
|
-
return !!deepAccess(bidRequest, 'mediaTypes.banner')
|
|
374
|
+
return !!deepAccess(bidRequest, 'mediaTypes.banner');
|
|
369
375
|
}
|
|
370
376
|
|
|
371
377
|
function hasVideoMediaType(bidRequest) {
|
|
372
|
-
return !!deepAccess(bidRequest, 'mediaTypes.video')
|
|
378
|
+
return !!deepAccess(bidRequest, 'mediaTypes.video');
|
|
373
379
|
}
|
|
374
380
|
|
|
375
381
|
function hasValidBannerMediaType(bidRequest) {
|
|
376
|
-
const sizes = deepAccess(bidRequest, 'mediaTypes.banner.sizes')
|
|
382
|
+
const sizes = deepAccess(bidRequest, 'mediaTypes.banner.sizes');
|
|
377
383
|
if (!sizes) {
|
|
378
384
|
logError('AIDEM Bid Adapter: media type sizes missing', { bidder: BIDDER_CODE, code: ERROR_CODES.PROPERTY_NOT_INCLUDED });
|
|
379
385
|
return false;
|
|
380
386
|
}
|
|
381
|
-
return true
|
|
387
|
+
return true;
|
|
382
388
|
}
|
|
383
389
|
|
|
384
390
|
function hasValidVideoMediaType(bidRequest) {
|
|
@@ -387,23 +393,38 @@ function hasValidVideoMediaType(bidRequest) {
|
|
|
387
393
|
logError('AIDEM Bid Adapter: media type playerSize missing', { bidder: BIDDER_CODE, code: ERROR_CODES.PROPERTY_NOT_INCLUDED });
|
|
388
394
|
return false;
|
|
389
395
|
}
|
|
390
|
-
return true
|
|
396
|
+
return true;
|
|
391
397
|
}
|
|
392
398
|
|
|
393
399
|
function hasValidVideoParameters(bidRequest) {
|
|
394
|
-
let valid = true
|
|
400
|
+
let valid = true;
|
|
395
401
|
const adUnitsParameters = deepAccess(bidRequest, 'mediaTypes.video');
|
|
396
402
|
const bidderParameter = deepAccess(bidRequest, 'params.video');
|
|
397
403
|
for (let property of REQUIRED_VIDEO_PARAMS) {
|
|
398
|
-
const hasAdUnitParameter = adUnitsParameters.hasOwnProperty(property)
|
|
399
|
-
const hasBidderParameter = bidderParameter && bidderParameter.hasOwnProperty(property)
|
|
404
|
+
const hasAdUnitParameter = adUnitsParameters.hasOwnProperty(property);
|
|
405
|
+
const hasBidderParameter = bidderParameter && bidderParameter.hasOwnProperty(property);
|
|
400
406
|
if (!hasAdUnitParameter && !hasBidderParameter) {
|
|
401
407
|
logError(`AIDEM Bid Adapter: ${property} is not included in either the adunit or params level`, { bidder: BIDDER_CODE, code: ERROR_CODES.PROPERTY_NOT_INCLUDED });
|
|
402
|
-
valid = false
|
|
408
|
+
valid = false;
|
|
403
409
|
}
|
|
404
410
|
}
|
|
405
411
|
|
|
406
|
-
return valid
|
|
412
|
+
return valid;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
function passesRateLimit(bidRequest) {
|
|
416
|
+
const rateLimit = deepAccess(bidRequest, 'params.rateLimit', 1);
|
|
417
|
+
if (!isNumber(rateLimit) || rateLimit > 1 || rateLimit < 0) {
|
|
418
|
+
logError('AIDEM Bid Adapter: invalid rateLimit (must be a number between 0 and 1)', { bidder: BIDDER_CODE, code: ERROR_CODES.INVALID_RATELIMIT });
|
|
419
|
+
return false;
|
|
420
|
+
}
|
|
421
|
+
if (rateLimit !== 1) {
|
|
422
|
+
const randomRateValue = Math.random();
|
|
423
|
+
if (randomRateValue > rateLimit) {
|
|
424
|
+
return false;
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
return true;
|
|
407
428
|
}
|
|
408
429
|
|
|
409
430
|
function hasValidParameters(bidRequest) {
|
|
@@ -421,7 +442,7 @@ function hasValidParameters(bidRequest) {
|
|
|
421
442
|
return false;
|
|
422
443
|
}
|
|
423
444
|
|
|
424
|
-
return true
|
|
445
|
+
return true;
|
|
425
446
|
}
|
|
426
447
|
|
|
427
448
|
export const spec = {
|
|
@@ -431,28 +452,32 @@ export const spec = {
|
|
|
431
452
|
logInfo('bid: ', bidRequest);
|
|
432
453
|
|
|
433
454
|
// check if request has valid mediaTypes
|
|
434
|
-
if (!hasValidMediaType(bidRequest)) return false
|
|
455
|
+
if (!hasValidMediaType(bidRequest)) return false;
|
|
435
456
|
|
|
436
457
|
// check if request has valid media type parameters at adUnit level
|
|
437
458
|
if (hasBannerMediaType(bidRequest) && !hasValidBannerMediaType(bidRequest)) {
|
|
438
|
-
return false
|
|
459
|
+
return false;
|
|
439
460
|
}
|
|
440
461
|
|
|
441
462
|
if (hasVideoMediaType(bidRequest) && !hasValidVideoMediaType(bidRequest)) {
|
|
442
|
-
return false
|
|
463
|
+
return false;
|
|
443
464
|
}
|
|
444
465
|
|
|
445
466
|
if (hasVideoMediaType(bidRequest) && !hasValidVideoParameters(bidRequest)) {
|
|
446
|
-
return false
|
|
467
|
+
return false;
|
|
447
468
|
}
|
|
448
469
|
|
|
449
|
-
|
|
470
|
+
if (!hasValidParameters(bidRequest)) {
|
|
471
|
+
return false;
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
return passesRateLimit(bidRequest);
|
|
450
475
|
},
|
|
451
476
|
|
|
452
477
|
buildRequests: function(validBidRequests, bidderRequest) {
|
|
453
478
|
logInfo('validBidRequests: ', validBidRequests);
|
|
454
479
|
logInfo('bidderRequest: ', bidderRequest);
|
|
455
|
-
const prebidRequest = getPrebidRequestFields(bidderRequest, validBidRequests)
|
|
480
|
+
const prebidRequest = getPrebidRequestFields(bidderRequest, validBidRequests);
|
|
456
481
|
const payloadString = JSON.stringify(prebidRequest);
|
|
457
482
|
|
|
458
483
|
return {
|
|
@@ -474,7 +499,7 @@ export const spec = {
|
|
|
474
499
|
return;
|
|
475
500
|
}
|
|
476
501
|
logInfo('CPM OK');
|
|
477
|
-
const bid = getPrebidResponseBidObject(bidObject)
|
|
502
|
+
const bid = getPrebidResponseBidObject(bidObject);
|
|
478
503
|
bids.push(bid);
|
|
479
504
|
});
|
|
480
505
|
return bids;
|
|
@@ -483,14 +508,14 @@ export const spec = {
|
|
|
483
508
|
onBidWon: function(bid) {
|
|
484
509
|
// Bidder specific code
|
|
485
510
|
logInfo('onBidWon bid: ', bid);
|
|
486
|
-
const notice = buildWinNotice(bid)
|
|
511
|
+
const notice = buildWinNotice(bid);
|
|
487
512
|
ajax(endpoints.notice.win, null, JSON.stringify(notice), { method: 'POST', withCredentials: true });
|
|
488
513
|
},
|
|
489
514
|
|
|
490
515
|
onBidderError: function({ bidderRequest }) {
|
|
491
516
|
// Bidder specific code
|
|
492
|
-
const notice = buildErrorNotice(bidderRequest)
|
|
517
|
+
const notice = buildErrorNotice(bidderRequest);
|
|
493
518
|
ajax(endpoints.notice.error, null, JSON.stringify(notice), { method: 'POST', withCredentials: true });
|
|
494
519
|
},
|
|
495
|
-
}
|
|
520
|
+
};
|
|
496
521
|
registerBidder(spec);
|
|
@@ -14,11 +14,12 @@ This module is GDPR and CCPA compliant, and no 3rd party userIds are allowed.
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
## Global Bid Params
|
|
17
|
-
| Name | Scope | Description
|
|
18
|
-
|
|
19
|
-
| `siteId` | required | Unique site ID
|
|
20
|
-
| `publisherId` | required | Unique publisher ID
|
|
21
|
-
| `placementId` | optional | Unique publisher tag ID | `'ABCDEF'`
|
|
17
|
+
| Name | Scope | Description | Example | Type |
|
|
18
|
+
|---------------|----------|-------------------------|------------|----------|
|
|
19
|
+
| `siteId` | required | Unique site ID | `'ABCDEF'` | `String` |
|
|
20
|
+
| `publisherId` | required | Unique publisher ID | `'ABCDEF'` | `String` |
|
|
21
|
+
| `placementId` | optional | Unique publisher tag ID | `'ABCDEF'` | `String` |
|
|
22
|
+
| `rateLimit` | optional | Limit the volume sent to AIDEM. Must be between 0 and 1 | `0.6` | `Number` |
|
|
22
23
|
|
|
23
24
|
|
|
24
25
|
### Banner Bid Params
|
|
@@ -67,7 +68,8 @@ var adUnits = [{
|
|
|
67
68
|
bids: [{
|
|
68
69
|
bidder: 'aidem',
|
|
69
70
|
params: {
|
|
70
|
-
siteId: 'prebid-test-
|
|
71
|
+
siteId: 'prebid-test-siteId',
|
|
72
|
+
publisherId: 'prebid-test-publisherId',
|
|
71
73
|
},
|
|
72
74
|
}]
|
|
73
75
|
}];
|
|
@@ -90,7 +92,8 @@ var adUnits = [{
|
|
|
90
92
|
bids: [{
|
|
91
93
|
bidder: 'aidem',
|
|
92
94
|
params: {
|
|
93
|
-
siteId: 'prebid-test-
|
|
95
|
+
siteId: 'prebid-test-siteId',
|
|
96
|
+
publisherId: 'prebid-test-publisherId',
|
|
94
97
|
},
|
|
95
98
|
}]
|
|
96
99
|
}];
|
package/modules/ajaBidAdapter.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getBidIdParameter, tryAppendQueryString, createTrackPixelHtml, logError, logWarn } from '../src/utils.js';
|
|
1
|
+
import { getBidIdParameter, tryAppendQueryString, createTrackPixelHtml, logError, logWarn, deepAccess } from '../src/utils.js';
|
|
2
2
|
import { Renderer } from '../src/Renderer.js';
|
|
3
3
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
4
4
|
import { VIDEO, BANNER, NATIVE } from '../src/mediaTypes.js';
|
|
@@ -64,6 +64,11 @@ export const spec = {
|
|
|
64
64
|
}))
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
+
const sua = deepAccess(bidRequest, 'ortb2.device.sua');
|
|
68
|
+
if (sua) {
|
|
69
|
+
queryString = tryAppendQueryString(queryString, 'sua', JSON.stringify(sua));
|
|
70
|
+
}
|
|
71
|
+
|
|
67
72
|
bidRequests.push({
|
|
68
73
|
method: 'GET',
|
|
69
74
|
url: URL,
|
package/modules/amxIdSystem.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# AMX
|
|
1
|
+
# AMX ID
|
|
2
2
|
|
|
3
|
-
For help adding this module, please contact [
|
|
3
|
+
For help adding this module, please contact [info@amxdt.net](info@amxdt.net).
|
|
4
4
|
|
|
5
5
|
### Prebid Configuration
|
|
6
6
|
|
|
@@ -41,11 +41,3 @@ The following settings are available for the `storage` property in the `userSync
|
|
|
41
41
|
| name | Required | String | Where the ID will be stored | `"amxId"` |
|
|
42
42
|
| type | Required | String | This must be `"html5"` | `"html5"` |
|
|
43
43
|
| expires | Required | Number <= 30 | number of days until the stored ID expires. **Must be less than or equal to 30** | `14` |
|
|
44
|
-
|
|
45
|
-
### Params
|
|
46
|
-
|
|
47
|
-
The following options are available in the `params` property in `userSync.userIds[]`:
|
|
48
|
-
|
|
49
|
-
| Param under `params` | Scope | Type | Description | Example |
|
|
50
|
-
| -------------------- | -------- | ------ | ------------------------------------------------------------------------- | ---------------- |
|
|
51
|
-
| tagId | Optional | String | Your AMX tagId (optional) | `cHJlYmlkLm9yZw` |
|