Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
11b1195
optable-targeting: implement Non-Blocking Early Network Call
May 4, 2026
5e2d1b8
optable-targeting: implement per-bidder enrichment percentage
May 11, 2026
5e26ce7
optable-targeting: Add unit tests, rename dicer to sampler
May 13, 2026
617bdf2
optable-targeting: add Web vs. Mobile Traffic Toggle
May 13, 2026
3d3ea39
optable-targeting: add hook execution plan helper inside hook
May 13, 2026
8403993
optable-targeting: optimize hook execution plan helper. Add results c…
May 14, 2026
dc8cfd0
optable-targeting: code cleanup
May 14, 2026
b38c68b
optable-targeting: update timeouts
May 23, 2026
6ca0d9c
extract timeout for the future from bidder-request
justadreamer May 25, 2026
abe07dd
only block processed-auction hook in legacy mode
justadreamer May 25, 2026
c8842c1
update sample request body
justadreamer May 25, 2026
6aa7fb9
update doc
justadreamer May 25, 2026
87d6d4d
BidRequestCleaner in the raw-auction-request
justadreamer May 25, 2026
b719a3a
increase bidder-request timeout in the sample config
justadreamer May 25, 2026
7ca5987
gpp_sid serialization bug fix
justadreamer May 25, 2026
6580a76
update readme re: timeout
justadreamer May 25, 2026
a5a960a
sampler bug fixed, it was always enrichin for 0
justadreamer May 25, 2026
39da4dd
optable-targeting: add analytic tags
May 25, 2026
b247432
set sample email hash that leads to enrichment
justadreamer May 26, 2026
becbd2e
improve analytics tags
justadreamer Jun 2, 2026
000d389
improve doc
justadreamer Jun 2, 2026
a808b49
remove legacy config files
justadreamer Jun 3, 2026
e647f23
update gpp_sid test
justadreamer Jun 3, 2026
b7bcda8
shorten fully qualified type name
justadreamer Jun 3, 2026
7df477e
rename NetworkCall -> TargetingRequestExecutor
justadreamer Jun 3, 2026
a32c06c
optable-targeting: code cleanup
Jun 5, 2026
2d956b1
optable-targeting: fix endpoint template
Jul 22, 2026
3956b65
optable-targeting: fix per bidder enrichment if only enrichment-perca…
Jul 31, 2026
e456f17
optable-targeting: bind enrich-web and enrich-app from account config
justadreamer Jul 31, 2026
8765714
optable-targeting: fix execution plan endpoint lookup after core API …
justadreamer Aug 13, 2026
1534b22
optable-targeting: add hid (resolver hint) support
Jul 23, 2026
f9125eb
optable-targeting: add app bundle and ver to the Targeting API call
Jul 23, 2026
d2276c1
optable-targeting: Add id5_signature propagation from client to Targe…
Jul 24, 2026
bfdc8f3
optable-targeting: Add id5_signature propagation from Targeting API t…
Jul 26, 2026
4b456ad
optable-targeting: code cleanup
Jul 26, 2026
98a9853
optable-targeting: fix NPE when optableTargetingCall was never set at…
Jul 27, 2026
df5c885
optable-targeting: Encode Targeting API query params
Jul 27, 2026
66eef52
optable-targeting: improve hid prefixes parsing
Jul 27, 2026
a2db76c
optable-targeting: Remove dead code
Jul 27, 2026
0e0cfb6
optable-targeting: Improve id5 signature extraction from Targeting re…
Jul 27, 2026
e67c08c
optable-targeting: Code cleanup
Jul 27, 2026
e13add0
optable-targeting: update README.md
Jul 28, 2026
379a73a
optable-targeting: Code cleanup
Jul 28, 2026
43823e9
optable-targeting: Update cache key
Jul 28, 2026
e837e3b
optable-targeting: Replace em-dashes in README
justadreamer Jul 29, 2026
05e0435
optable-targeting: Fix double rendering of query attributes
Jul 30, 2026
7806a54
optable-targeting: add Targeting API failure branch to bidder request…
Jul 30, 2026
86d8d56
optable-targeting: Remove redundant dependency
Jul 30, 2026
91d6223
optable-targeting: improve tests coverage
Jul 30, 2026
57c84e7
optable-targeting: don't add blank id5_signature into a query
Jul 30, 2026
16db8f7
optable-targeting: remove id5_signature resolving for bidders which a…
Jul 30, 2026
571c7e5
optable-targeting: render id5_signature only if targeting enabled
Jul 30, 2026
bb3deb3
optable-targeting: split targeting and id5 features rendering
Jul 31, 2026
0fa2141
optable-targeting: fix NoBids test to use a bid-less response
justadreamer Jul 31, 2026
d1b2df5
enable more bidders for smoke tests
justadreamer Aug 14, 2026
5b54b45
remove and .gitignore AI memory and vscode files
justadreamer Aug 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,19 @@
*.classpath

.vscode/
.vscode_old/
*.project
*.factorypath

# AI assistant / editor local configuration
.cursorrules
.cursor/
.gemini/
GEMINI.md
CLAUDE.md
AGENTS.md
.claude/

.vertx/
target/

Expand Down
161 changes: 137 additions & 24 deletions extra/modules/optable-targeting/README.md

Large diffs are not rendered by default.

8 changes: 8 additions & 0 deletions extra/modules/optable-targeting/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,12 @@

<name>optable-targeting</name>
<description>Optable targeting module</description>

<dependencies>
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-junit5</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
322 changes: 232 additions & 90 deletions extra/modules/optable-targeting/sample-requests/data.json
Original file line number Diff line number Diff line change
@@ -1,127 +1,269 @@
{
"test": 1,
"id": "1",
"imp":
[
"imp": [
{
"id": "1",
"banner":
{
"w": 300,
"h": 250
"ext": {
"prebid": {
"bidder": {
"triplelift": {
"inventoryCode": "123"
},
"pubmatic": {
"publisherId": "156209",
"adSlot": "/1234567/test"
},
"yieldmo": {
"placementId": "12314235"
},
"openx": {
"delDomain": "domain.openx.net",
"unit": "12324324",
"customParams": {
"sens": [
"alc"
]
}
},
"grid": {
"uid": 123
},
"unruly": {
"siteId": 567890
},
"conversant": {
"tag_id": "some_id",
"site_id": "345678"
},
"33across": {
"siteId": "some_id",
"productId": "ddff"
},
"adform": {
"mname": "some_name",
"mid": 123456789,
"adxDomain": "adx2.adform.net"
},
"improvedigital": {
"publisherId": 1234,
"placementId": 123456789
},
"colossus": {
"groupId": "123"
}
},
"adunitcode": "AdUnit_Name_1"
}
},
"ext":
{
"prebid":
{
"storedauctionresponse": { "id": "optable-stored-response" },
"bidder":
"id": "imp_id",
"banner": {
"topframe": 1,
"format": [
{
"appnexus":
{
"placementId": 0
}
"w": 320,
"h": 50
}
}
}
]
},
"bidfloor": 1.0,
"bidfloorcur": "USD"
}
],
"site":
{
"domain": "test.com",
"publisher":
{
"domain": "test.com",
"id": "1"
},
"page": "https://www.test.com/"
},
"device":
{
"ip": "8.8.8.8"
},
"user":
{
"ext":
{
"optable":
{
"email": "5837d278eabede28e37b5766399ed0d1a4cdc36acee8d35710a255032f45beda"
"cur": [
"USD"
],
"at": 1,
"device": {
"w": 591,
"h": 771,
"dnt": 0,
"ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",
"language": "en",
"js": 1,
"ip": "82.212.42.32",
"sua": {
"source": 2,
"platform": {
"brand": "macOS",
"version": [
"14",
"0",
"0"
]
},
"eids":
[
"browsers": [
{
"source": "growthcode.io",
"uids":
[
{
"id": "fb58593e-7ac6-48bd-b2de-89a758726362",
"atype": 1
}
]
},
{
"source": "pubcid.org",
"uids": [
{
"id": "test",
"atype": 1
}
"brand": "Chromium",
"version": [
"120",
"0",
"0",
"0"
]
},
{
"source": "crwdcntrl.net",
"uids":
[
{
"id": "dd1b31e65f5e45548c11a0275ba3a8072c00e3a2a0493e8f5a8f54f8067e8b00",
"atype": 1
}
"brand": "Not-A.Brand",
"version": [
"24",
"0",
"0",
"0"
]
},
{
"source": "amxdt.net",
"uids":
[
{
"id": "amx*3*a583802a-e6fe-48d7-87c6-7db1b6a4a73a*70f06cdcf8ab0b4ac07a56860ed0e0b6ef0388dc0b0ab5a1dd725999d3b339cf",
"atype": 1
}
"brand": "Google Chrome",
"version": [
"120",
"0",
"0",
"0"
]
},
}
],
"mobile": 0,
"model": "",
"architecture": "arm"
}
},
"site": {
"domain": "example-site.com",
"publisher": {
"domain": "example-publisher.com",
"id": "1"
},
"page": "https://example-site.com/sample-article-slug/",
"content": {
"language": "en"
},
"cat": [
"IAB8"
],
"pagecat": [
"IAB8"
],
"privacypolicy": 1,
"mobile": 1
},
"user": {
"data": [],
"ext": {
"optable": {
"email": "5837d278eabede28e37b5766399ed0d1a4cdc36acee8d35710a255032f45beda"
},
"eids": [
{
"source": "audigent.com",
"uids":
[
"source": "id5-sync.com",
"uids": [
{
"id": "f84456cd3c72296d7898f62e1c46dd964206ff4d47e64b690c3c5a1d6b1bd286",
"atype": 1
"id": "ID5*a7fF5d6f1GZgAUunYu5C3Edu5H4_nlp9aN34PiHotjzCtKWRh-vXq84ijeusCYHD",
"atype": 1,
"ext": {
"linkType": 2,
"pba": "EGg0hDGKtMSoVfdiLRmUPZc+x7Hm8I37s1sAPcxYmWA="
}
}
]
},
{
"source": "adnxs.com",
"uids":
[
"source": "pubmatic.com",
"uids": [
{
"id": "d4fd63f0f4f7ce0d128348cb145c7e0f"
"id": "A672B525-C053-45D6-B68E-B1DF0B4D6F3B",
"atype": 3,
"ext": {
"provider": "liveintent.com"
}
}
]
}
]
],
"consent": "",
"ConsentedProvidersSettings": {
"consented_providers": "2~70.1516.89.320.2778.2322.510.1516.2343~dv."
}
}
},
"regs": {
"gpp": "DBABzw~1YNY~BVQqAAAAAgA",
"gpp_sid": [
6,
5,
7
],
"ext": {
"us_privacy": "1YNY"
}
},
"ext": {
"prebid": {
"targeting": {
"includebidderkeys": true
"includewinners": true,
"includebidderkeys": false
},
"analytics":
{
"analytics": {
"options": {
"enableclientdetails": true
}
}
},
"eidPermissions": [
{
"source": "bidswitch.net",
"bidders": [
"conversant",
"grid",
"improvedigital",
"pubmatic",
"undertone",
"unruly",
"yieldmo",
"adform",
"colossus",
"openx",
"triplelift"
]
}
],
"bidderconfig": [
{
"bidders": [
"openx"
],
"config": {
"ortb2": {
"site": {
"ext": {
"data": {
"refresh": "0",
"vp": "0",
"hvp": "70",
"site_code": [
"AFOI_2020",
"APIO_2022",
"BIPOC_2024",
"FMLO_2021",
"FMOOI_2022",
"MINO_2021",
"MOMS_2020",
"MRLOI_22",
"NWPR_2021",
"RMOI_24",
"STKCONT_24"
]
}
}
}
}
}
},
{
"bidders": [
"pubmatic"
],
"config": {
}
}
]
}
}
},
"tmax": 1000,
"id": "id",
"test": 1
}
Loading