Skip to content

Comments

New Adapter: Proxistore#4674

Open
anthonyrichir wants to merge 6 commits intoprebid:masterfrom
proxistore:master
Open

New Adapter: Proxistore#4674
anthonyrichir wants to merge 6 commits intoprebid:masterfrom
proxistore:master

Conversation

@anthonyrichir
Copy link

@anthonyrichir anthonyrichir commented Feb 3, 2026

Type of change

  • Bugfix

  • Feature

  • New bidder adapter

  • Updated bidder adapter

  • Code style update (formatting, local variables)

  • Refactoring (no functional changes, no api changes)

  • Build related changes

  • CI related changes

  • Does this change affect user-facing APIs or examples documented on http://prebid.org?

  • Other

Description of change

Other information

Prebid doc PR

@github-actions
Copy link

github-actions bot commented Feb 3, 2026

Code coverage summary

Note:

  • Prebid team doesn't anticipate tests covering code paths that might result in marshal and unmarshal errors
  • Coverage summary encompasses all commits leading up to the latest one, 50a52f1

proxistore

Refer here for heat map coverage report

github.com/prebid/prebid-server/v3/adapters/proxistore/proxistore.go:19:	Builder			100.0%
github.com/prebid/prebid-server/v3/adapters/proxistore/proxistore.go:26:	MakeRequests		78.3%
github.com/prebid/prebid-server/v3/adapters/proxistore/proxistore.go:79:	MakeBids		90.9%
github.com/prebid/prebid-server/v3/adapters/proxistore/proxistore.go:124:	getMediaTypeForBid	33.3%
total:										(statements)		72.6%

@github-actions
Copy link

github-actions bot commented Feb 3, 2026

Code coverage summary

Note:

  • Prebid team doesn't anticipate tests covering code paths that might result in marshal and unmarshal errors
  • Coverage summary encompasses all commits leading up to the latest one, bbc8f15

proxistore

Refer here for heat map coverage report

github.com/prebid/prebid-server/v3/adapters/proxistore/proxistore.go:19:	Builder			100.0%
github.com/prebid/prebid-server/v3/adapters/proxistore/proxistore.go:26:	MakeRequests		78.3%
github.com/prebid/prebid-server/v3/adapters/proxistore/proxistore.go:79:	MakeBids		90.9%
github.com/prebid/prebid-server/v3/adapters/proxistore/proxistore.go:124:	getMediaTypeForBid	33.3%
total:										(statements)		79.2%

@github-actions
Copy link

github-actions bot commented Feb 4, 2026

Code coverage summary

Note:

  • Prebid team doesn't anticipate tests covering code paths that might result in marshal and unmarshal errors
  • Coverage summary encompasses all commits leading up to the latest one, 85cf381

proxistore

Refer here for heat map coverage report

github.com/prebid/prebid-server/v3/adapters/proxistore/proxistore.go:19:	Builder			100.0%
github.com/prebid/prebid-server/v3/adapters/proxistore/proxistore.go:26:	MakeRequests		78.3%
github.com/prebid/prebid-server/v3/adapters/proxistore/proxistore.go:79:	MakeBids		90.9%
github.com/prebid/prebid-server/v3/adapters/proxistore/proxistore.go:124:	getMediaTypeForBid	33.3%
total:										(statements)		79.2%

@github-actions
Copy link

github-actions bot commented Feb 9, 2026

Code coverage summary

Note:

  • Prebid team doesn't anticipate tests covering code paths that might result in marshal and unmarshal errors
  • Coverage summary encompasses all commits leading up to the latest one, f26d88e

proxistore

Refer here for heat map coverage report

github.com/prebid/prebid-server/v3/adapters/proxistore/proxistore.go:19:	Builder			100.0%
github.com/prebid/prebid-server/v3/adapters/proxistore/proxistore.go:26:	MakeRequests		78.3%
github.com/prebid/prebid-server/v3/adapters/proxistore/proxistore.go:79:	MakeBids		90.9%
github.com/prebid/prebid-server/v3/adapters/proxistore/proxistore.go:124:	getMediaTypeForBid	33.3%
total:										(statements)		79.2%

@bsardo bsardo changed the title Add Proxistore bid adapter with unit tests, schema, and configuration New Adapter: Proxistore Feb 9, 2026
@github-actions
Copy link

Code coverage summary

Note:

  • Prebid team doesn't anticipate tests covering code paths that might result in marshal and unmarshal errors
  • Coverage summary encompasses all commits leading up to the latest one, f5fda26

proxistore

Refer here for heat map coverage report

github.com/prebid/prebid-server/v3/adapters/proxistore/proxistore.go:19:	Builder			100.0%
github.com/prebid/prebid-server/v3/adapters/proxistore/proxistore.go:26:	MakeRequests		78.3%
github.com/prebid/prebid-server/v3/adapters/proxistore/proxistore.go:79:	MakeBids		90.9%
github.com/prebid/prebid-server/v3/adapters/proxistore/proxistore.go:124:	getMediaTypeForBid	33.3%
total:										(statements)		79.2%

@ChrisHuie
Copy link
Contributor

AGENT TESTING

PR #4674 Review: New Adapter: Proxistore

Author: anthonyrichir | Type: New Adapter | CI: Clean (all 3 checks passed)


Triage Manifest

Field Value
PR Type new-adapter
Files 16 files across all 3 skills + 1 CI config
Bidder proxistore
Skills activated bidder-info-pr-review, bidder-params-pr-review, adapter-code-pr-review
Completeness All 10 required file types present
CI Status Clean (notify, run-coverage, semgrep-check all passed)
Code Coverage 79.2% total, getMediaTypeForBid at 33.3%

File Routing

Skill Files
bidder-info static/bidder-info/proxistore.yaml [added]
bidder-params static/bidder-params/proxistore.json [added], openrtb_ext/imp_proxistore.go [added], adapters/proxistore/params_test.go [added]
adapter-code adapters/proxistore/proxistore.go [added], adapters/proxistore/proxistore_test.go [added], 7 test data files [added], exchange/adapter_builders.go [modified], openrtb_ext/bidders.go [modified]
unowned:ci .github/workflows/scripts/codepath-notification [modified]

Issues Found

FAIL: geoscope: EUR is not a valid value

EUR is not a recognized geoscope value. Valid values are ISO 3166-1 alpha-3 country codes (e.g., BEL, FRA) or the special values GLOBAL and EEA. If the intent is European Economic Area, this should be EEA, not EUR.

File: static/bidder-info/proxistore.yaml, line 5


WARN: Iframe sync URL returns HTTP 406

The declared iframe sync endpoint returns HTTP 406 (Not Acceptable):

https://abs.proxistore.com/v3/rtb/sync/prebid-server/iframe?gdpr=1&gdpr_consent=test&redirect=...

The redirect sync URL works fine (HTTP 204). Consider removing the iframe sync declaration if the endpoint does not support it, or fixing the server-side handler.

File: static/bidder-info/proxistore.yaml, lines 22-24


WARN: Endpoint returns HTTP 500 on empty POST

The bidding endpoint https://api.proxistore.com/v3/rtb/openrtb returns HTTP 500 (Internal Server Error) when sent an empty JSON body {}. A well-behaved endpoint should return 400 (Bad Request) for malformed input, not a server error. This suggests the endpoint may not handle edge cases gracefully.

File: static/bidder-info/proxistore.yaml, line 3


WARN: No app context test fixtures

The bidder-info declares app capabilities with banner support, but all 7 test fixtures exclusively use site context. At least one exemplary test with an app bid request should be added to validate the declared app capability.

Files: adapters/proxistore/proxistoretest/exemplary/


WARN: Low getMediaTypeForBid test coverage (33.3%)

The getMediaTypeForBid function handles banner, video, audio, and native MTypes, but only banner (MType 1) is tested in the exemplary fixtures. No test cases exercise the video, audio, or native code paths. Consider adding supplemental test fixtures with "mtype": 2 (video), "mtype": 3 (audio), and "mtype": 4 (native) responses.

File: adapters/proxistore/proxistore.go, lines 129-139


WARN: Missing USPrivacy macro in sync URLs

Neither the redirect nor iframe sync URLs include {{.USPrivacy}}. While this may be intentional for a European bidder (geoscope targets Europe), including it ensures US traffic is handled properly if the adapter expands scope.

Files: static/bidder-info/proxistore.yaml, lines 20-24


INFO: Misleading comment about regional endpoints

The YAML file begins with a comment:

# We have the following regional endpoint domains: us-east and us-west
# Please deploy this config in each of your datacenters with the appropriate regional subdomain

However, the actual endpoint is https://api.proxistore.com/v3/rtb/openrtb with no regional subdomain. This comment is either a leftover from a template or refers to future infrastructure. It may confuse operators. Consider removing or updating the comment.

File: static/bidder-info/proxistore.yaml, lines 1-2


Field-by-Field Verification

Bidder-Info: proxistore.yaml

endpoint: "https://api.proxistore.com/v3/rtb/openrtb"

Check Result Evidence
URL format PASS Well-formed HTTPS URL
Reachability WARN HTTP 500 on empty POST (expected 400)
SSL/TLS PASS Wildcard cert *.proxistore.com, Sectigo CA, valid until Jan 6, 2027
Domain ownership PASS proxistore.com matches bidder name
No hardcoded credentials PASS Clean URL
No template macros PASS No {{...}} present

geoscope: [EUR]

Check Result Evidence
Valid value FAIL EUR is not a valid geoscope value. Should be EEA or specific country codes

maintainer.email: "support@proxistore.com"

Check Result Evidence
Email format PASS Valid format
Domain consistency PASS proxistore.com matches bidder domain

gvlVendorID: 418

Check Result Evidence
Value range PASS Positive integer
GVL lookup PASS Vendor 418 = PROXISTORE
Company name match PASS Exact match with bidder name
Privacy URLs PASS GVL links to proxistore.com privacy policy in FR/EN/NL

openrtb.version: "2.6"

Check Result Evidence
Valid value PASS "2.6" is a recognized OpenRTB version
Code compatibility PASS Adapter imports openrtb/v20 and uses openrtb2.Bid structs

capabilities: app (banner), site (banner)

Check Result Evidence
Valid media types PASS banner is valid
At least one per platform PASS Both app and site declare banner
App test coverage WARN No app context test fixtures provided

userSync.redirect

Check Result Evidence
HTTPS PASS Uses https://abs.proxistore.com/...
Reachability PASS HTTP 204
Privacy macros PASS {{.GDPR}}, {{.GDPRConsent}}, {{.RedirectURL}} present
USPrivacy macro WARN Missing {{.USPrivacy}}
Domain ownership PASS abs.proxistore.com belongs to Proxistore
userMacro PASS $UID is a standard format

userSync.iframe

Check Result Evidence
HTTPS PASS Uses https://abs.proxistore.com/...
Reachability WARN HTTP 406 (Not Acceptable)
Privacy macros PASS Same macros as redirect
Domain ownership PASS Same domain as redirect

Bidder-Params: proxistore.json + imp_proxistore.go + params_test.go

JSON Schema

Check Result Evidence
Draft-04 schema PASS $schema declares draft-04
Required fields PASS website and language both required
String types with minLength PASS Both fields: type: string, minLength: 1

imp_proxistore.go

Check Result Evidence
Struct matches schema PASS Website string and Language string map to JSON schema
No omitempty on required fields PASS Neither field has omitempty tag
json tags match schema PASS json:"website" and json:"language" match schema property names

params_test.go

Check Result Evidence
Valid params tested PASS 3 valid param sets tested
Invalid params tested PASS 8 invalid cases: empty object, missing each field, empty strings, wrong types, null
Uses BidderProxistore constant PASS References openrtb_ext.BidderProxistore

Adapter-Code: proxistore.go + tests + registration

Code Quality

Check Result Evidence
Uses jsonutil (not encoding/json) PASS jsonutil.Marshal and jsonutil.Unmarshal throughout
Uses GetImpIDs PASS openrtb_ext.GetImpIDs(request.Imp) called
MType-based bid typing PASS Uses bid.MType switch (banner/video/audio/native)
Error handling: 204 PASS Returns nil, nil
Error handling: 400 PASS Returns BadInput error
Error handling: other PASS Returns BadServerResponse error
No JSON injection risk PASS No json.RawMessage manipulation
Marshal error handled PASS Returns error from jsonutil.Marshal

Registration

Check Result Evidence
openrtb_ext/bidders.go PASS BidderProxistore constant added, correct alphabetical order
exchange/adapter_builders.go PASS Import and builder map entry added, correct alphabetical order

Test Data

Check Result Evidence
Exemplary fixtures PASS 2 files: simple-banner.json, multi-imp-banner.json
Supplemental fixtures PASS 5 files: bad-response, missing-params, status-204, status-400, status-500
Test runner PASS RunJSONBidderTest(t, "proxistoretest", bidder) with correct directory
Site/App parity WARN All fixtures use site context only, no app test
MType coverage WARN Only mtype: 1 (banner) tested, no video/audio/native

PR-Level Checks

Check Result Evidence
Documentation PR PASS Links prebid/prebid.github.io#6420
Duplicate PR check PASS Only open PR for "proxistore"
New adapter completeness PASS All 10 required file types present
CI status PASS All 3 checks passed

Recommendation: Request Changes

This is a well-structured new adapter PR with good code quality and comprehensive error handling. However, there are several items that should be addressed:

  1. Must fix: geoscope: EUR is invalid — change to EEA or appropriate country codes
  2. Should fix: Iframe sync URL returns 406 — either fix the endpoint or remove the iframe sync declaration
  3. Should fix: Add at least one app context test fixture to match declared app capabilities
  4. Should fix: Add test fixtures for video/audio/native MTypes to improve getMediaTypeForBid coverage (currently 33.3%)
  5. Consider: Remove or update the misleading regional endpoint comment in the YAML
  6. Consider: Investigate why the bidding endpoint returns 500 instead of 400 for malformed requests

Task Completion Summary

Task # Subject Status
9 PR Triage: Classify PR #4674, route files, check CI Completed
10 Bidder-info: Verify proxistore.yaml fields Completed
11 Bidder-params: Verify proxistore.json schema + imp struct + params_test Completed
12 Adapter-code: Verify proxistore.go, tests, test data, registration Completed
13 Produce final review summary for PR #4674 Completed

Skills Called

Skill Outcome
pr-triage Executed inline — file categorization, CI check, completeness check, cross-skill concerns
bidder-info-pr-review Executed inline — endpoint, geoscope, GVL, capabilities, userSync verification
bidder-params-pr-review Executed inline — schema, imp struct, params_test verification
adapter-code-pr-review Executed inline — code quality, registration, test data verification

Code / Commands Executed

Command Purpose Result
curl -X POST https://api.proxistore.com/v3/rtb/openrtb Endpoint reachability HTTP 500 (WARN)
openssl s_client -connect api.proxistore.com:443 SSL certificate check Wildcard cert, valid until Jan 2027
curl vendor-list.consensu.org | python3 (vendor 418) GVL vendor lookup "PROXISTORE" confirmed
curl https://abs.proxistore.com/.../redirect Redirect sync URL check HTTP 204 (PASS)
curl https://abs.proxistore.com/.../iframe Iframe sync URL check HTTP 406 (WARN)

WebFetch API Calls

URL Purpose
api.github.com/.../pulls/4674 PR metadata
api.github.com/.../pulls/4674/files File list + patches (fetched twice for full detail)
api.github.com/.../pulls/4674/commits Head SHA for CI check
api.github.com/.../commits/{sha}/check-runs CI status
api.github.com/.../pulls/4674/comments Existing review comments
api.github.com/.../issues/4674/comments Existing PR-level comments

@github-actions
Copy link

Code coverage summary

Note:

  • Prebid team doesn't anticipate tests covering code paths that might result in marshal and unmarshal errors
  • Coverage summary encompasses all commits leading up to the latest one, 975bbee

proxistore

Refer here for heat map coverage report

github.com/prebid/prebid-server/v3/adapters/proxistore/proxistore.go:19:	Builder			100.0%
github.com/prebid/prebid-server/v3/adapters/proxistore/proxistore.go:26:	MakeRequests		78.3%
github.com/prebid/prebid-server/v3/adapters/proxistore/proxistore.go:79:	MakeBids		100.0%
github.com/prebid/prebid-server/v3/adapters/proxistore/proxistore.go:124:	getMediaTypeForBid	100.0%
total:										(statements)		90.6%

@anthonyrichir
Copy link
Author

@ChrisHuie Thanks for the feedback, all of the recommandations have been addressed.

@bsardo bsardo added the adapter label Feb 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants