Skip to content

New Adapter: Floxis#4811

Open
floxis-admin wants to merge 8 commits into
prebid:masterfrom
floxis-admin:floxis-adapter
Open

New Adapter: Floxis#4811
floxis-admin wants to merge 8 commits into
prebid:masterfrom
floxis-admin:floxis-adapter

Conversation

@floxis-admin

@floxis-admin floxis-admin commented Jun 3, 2026

Copy link
Copy Markdown

Type of change

  • New bidder adapter

Overview

Hi Prebid maintainers,

This PR adds the Floxis bidder adapter to prebid-server. Floxis is an ad exchange; this adapter sends standard OpenRTB 2.x server-to-server bid requests to the Floxis exchange so PBS publishers can access Floxis demand.

Scope

  • Media types: banner, video, native, audio (declared for both app and site).
  • OpenRTB 2.6 compliant; GPP supported. The incoming bid request body is forwarded unchanged.
  • Cookie sync: redirect type.
  • modifyingVastXmlAllowed: false declared explicitly.

Adapter behavior

  • Bidder params (imp[].ext.bidder):
    • seat (string, required, minLength 1) — the Floxis seat the publisher buys through; appended url-escaped to the endpoint as ?seat=.
    • region (string, optional, default us-e) — the regional RTB host, used as a subdomain label. Validated as a DNS label by the params JSON schema.
    • partner (string, optional, default floxis) — white-label partner, used as an additional subdomain label. Validated as a DNS label by the params JSON schema.
  • Endpoint routing: the fixed parent domain (.floxis.tech) is pinned in the adapter's endpoint config; only the {{.Host}} subdomain is filled per-request. The subdomain is region (e.g. us-e.floxis.tech), or partner-region for a named white-label partner (e.g. acme-us-e.floxis.tech); the default floxis partner adds no prefix. region/partner are constrained to DNS labels by the params schema, so the host is never derived from a request-supplied hostname — this satisfies the "no fully dynamic hostnames" requirement. Which region maps to which datacenter is handled at DNS/LB level, not in the adapter.
  • seat/region/partner are read from the first imp; a multi-imp request that mixes seats/regions/partners is rejected as BadInput (one request routes to one host).
  • The adapter does not mutate the caller's BidRequest; copy-on-write is satisfied by construction (the request is marshalled unchanged).
  • Bid type resolution treats bid.mtype (OpenRTB 2.6) as authoritative (1/2/3/4 → banner/video/audio/native). When mtype is absent, a single-format imp's media type is used; an imp without exactly one format cannot be disambiguated and surfaces a BadServerResponse.

Cookie sync

userSync:
  redirect:
    url: "https://px-us-e.floxis.tech/sync?gdpr={{.GDPR}}&gdpr_consent={{.GDPRConsent}}&gpp={{.GPP}}&gpp_sid={{.GPPSID}}&us_privacy={{.USPrivacy}}&dest={{.RedirectURL}}"
    userMacro: "${USER_ID}"

Standard PBS redirect-type sync. The Floxis /sync endpoint substitutes its own cookie ID into the dest setuid URL and 302s back. Cookie family is floxis (the bidder name default).

GVL vendor ID

gvlVendorID is set to 1609 — Floxis (legal entity Ad Tech Company OÜ) is registered as an IAB TCF vendor with GVL ID 1609, so EU/TCF consent is enforced against that vendor ID.

Tests

  • go test ./adapters/floxis/... — passes, 95.5% coverage.
  • ./validate.sh --nofmt --cov — passes (config registration, params-schema strictness, bidder-info capabilities, alphabetical ordering, go vet).
  • Exemplary fixtures: banner (web + app), video (web, eu region), native (app, apac region), audio (web), a banner-no-mtype single-format-fallback case, and a partner-prefixed host case — covering all four media types, both app and site, regions, and the white-label partner prefix.
  • Supplemental fixtures: region default-to-us-e when omitted, first-imp-routes for multi-imp (and rejection when imps mix seat/partner), response 204 / 400 / 500 / no-cur, malformed imp.ext, malformed bidder params, malformed response body, unsupported bid.mtype, multi-format imp typed via mtype, multi-format imp without mtype surfaces BadServerResponse, unmatched bid impid, and request with neither site nor app.
  • White-box unit tests cover region/partner host resolution, URL escaping of the seat, multi-imp consistency, the media-type resolver, and caller-request mutation safety. Invalid host-label rejection is covered at the schema layer in params_test.go.

Docs

Companion docs PR: prebid/prebid.github.io#6596 (approved) — sets pbs: true, gvl_id: 1609, and documents the PBS endpoints/params.

Maintainer

prebid@floxis.tech

Thanks for maintaining the project — happy to iterate on review feedback.

Adds the Floxis bidder adapter. Standard OpenRTB 2.x server-to-server; region param selects a fixed RTB host (us-e/eu/apac, default us-e); supports banner, video, native, and audio.
… host comment

- MakeRequests now sets Content-Type: application/json;charset=utf-8 and Accept:
  application/json on the outbound POST (the dominant convention across in-tree
  adapters), asserted in all exemplary test cases.
- Reword the bidder-info comment: region/partner are validated as single DNS
  host-labels prefixed onto the fixed .floxis.tech domain — there is no fixed
  us-e/eu/apac allowlist (the prior comment misdescribed the SSRF control).
…tner are subdomain labels)

Per the dev-guide, a bidder endpoint domain must not be fully variable. Move the
fixed .floxis.tech suffix into the bidder-info endpoint template and have resolveBidHost
return just the validated region/partner subdomain label. Resolved URLs are unchanged
(e.g. https://us-e.floxis.tech/pbs); this matches the fixed-suffix pattern of merged
region-routed adapters (rubicon, clydo, mediago, algorix).
…Formats

Remove the in-code host-label regex (the params JSON schema already enforces the same pattern before MakeRequests runs), the redundant empty-imp guard (the framework only invokes the adapter with at least one imp), and the explanatory comment blocks. Extract a countFormats helper; resolveBidHost no longer needs to return an error. Schema-level host-label rejection stays covered by params_test.go.
@floxis-admin

Copy link
Copy Markdown
Author

Hi — a gentle nudge on this Floxis adapter PR, open since June 3 with no review yet. The matching Java adapter (prebid/prebid-server-java#4529) has already been through a review round with the feedback applied. Whenever a maintainer has bandwidth, I'd appreciate a first pass — glad to address anything. Thanks for your time!

@floxis-admin

floxis-admin commented Jul 2, 2026

Copy link
Copy Markdown
Author

Documentation PR (per the add-new-bidder checklist): prebid/prebid.github.io#6596 — already approved by @muuki88; it sets pbs: true, gvl_id: 1609 and documents the PBS endpoints/params. (A small follow-up, prebid/prebid.github.io#6650, adds the first-party-id storage section for the Prebid.js-side PR prebid/Prebid.js#15295.)

One ask for a maintainer: the CI workflows on this PR (Validate / Adapter Code Coverage / Validate Merge) are still awaiting first-time-contributor approval, so they've never run — could someone approve the workflow runs? Happy to address anything they or a review turn up.

@floxis-admin

Copy link
Copy Markdown
Author

@bsardo @SyntaxNode @przemkaczmarek — sorry for the direct ping, but this one has been open since June 3 without a first review, so flagging it for your queue. The submission checklist is complete: docs PR prebid/prebid.github.io#6650 (pbs: true, GVL ID 1609), exemplary + supplemental JSON tests, and the matching PBS-Java port (prebid/prebid-server-java#4529) has already been through a review round with all feedback applied. The CI workflows here are still awaiting first-time-contributor approval, so a one-click "approve and run" would let them go green. Happy to turn any feedback around quickly.

@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown

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, b9140f6

floxis

Refer here for heat map coverage report

github.com/prebid/prebid-server/v4/adapters/floxis/floxis.go:27:	resolveBidHost		100.0%
github.com/prebid/prebid-server/v4/adapters/floxis/floxis.go:41:	Builder			75.0%
github.com/prebid/prebid-server/v4/adapters/floxis/floxis.go:49:	MakeRequests		85.0%
github.com/prebid/prebid-server/v4/adapters/floxis/floxis.go:92:	MakeBids		100.0%
github.com/prebid/prebid-server/v4/adapters/floxis/floxis.go:126:	parseImpExt		100.0%
github.com/prebid/prebid-server/v4/adapters/floxis/floxis.go:138:	getMediaTypeForBid	100.0%
github.com/prebid/prebid-server/v4/adapters/floxis/floxis.go:178:	countFormats		100.0%
total:									(statements)		95.5%

endpoint: "https://{{.Host}}.floxis.tech/pbs"
maintainer:
email: prebid@floxis.tech
gvlVendorID: 1609

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

verified:

Image

# validated in the adapter as a single DNS host-label and prefixed onto the fixed .floxis.tech
# domain below; request-supplied hostnames are never used. The seat query param is appended in
# code (not a standard macro).
endpoint: "https://{{.Host}}.floxis.tech/pbs"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

works:

Image

@przemkaczmarek przemkaczmarek self-assigned this Jul 2, 2026
# code (not a standard macro).
endpoint: "https://{{.Host}}.floxis.tech/pbs"
maintainer:
email: prebid@floxis.tech

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

verified:

Image

Comment thread adapters/floxis/floxis.go Outdated
@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown

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, efa1881

floxis

Refer here for heat map coverage report

github.com/prebid/prebid-server/v4/adapters/floxis/floxis.go:27:	resolveBidHost		100.0%
github.com/prebid/prebid-server/v4/adapters/floxis/floxis.go:41:	Builder			75.0%
github.com/prebid/prebid-server/v4/adapters/floxis/floxis.go:49:	MakeRequests		86.4%
github.com/prebid/prebid-server/v4/adapters/floxis/floxis.go:94:	MakeBids		100.0%
github.com/prebid/prebid-server/v4/adapters/floxis/floxis.go:128:	parseImpExt		100.0%
github.com/prebid/prebid-server/v4/adapters/floxis/floxis.go:140:	getMediaTypeForBid	100.0%
github.com/prebid/prebid-server/v4/adapters/floxis/floxis.go:180:	countFormats		100.0%
total:									(statements)		95.6%

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants