From 1a80aae33a94264416da1968f15d689defa5c23f Mon Sep 17 00:00:00 2001 From: Brett Oberg Date: Mon, 9 Mar 2026 14:31:31 -0500 Subject: [PATCH] APS Bid Adapter v2.1.0 **Overview** ------------ Add support for APS age range parameter **Changes** ----------- - (feat) Add age range param to APS config --- modules/apsBidAdapter.js | 10 +++++++++- test/spec/modules/apsBidAdapter_spec.js | 24 ++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/modules/apsBidAdapter.js b/modules/apsBidAdapter.js index 732737d32b7..d801ee05d6e 100644 --- a/modules/apsBidAdapter.js +++ b/modules/apsBidAdapter.js @@ -13,7 +13,7 @@ import { ortbConverter } from '../libraries/ortbConverter/converter.js'; */ const GVLID = 793; -export const ADAPTER_VERSION = '2.0.0'; +export const ADAPTER_VERSION = '2.1.0'; const BIDDER_CODE = 'aps'; const AAX_ENDPOINT = 'https://web.ads.aps.amazon-adsystem.com/e/pb/bid'; const DEFAULT_PREBID_CREATIVE_JS_URL = @@ -146,6 +146,14 @@ export const converter = ortbConverter({ }; request.cur = request.cur ?? ['USD']; + const agerange = bidderRequest?.ortb2?.regs?.ext?.agerange; + if (typeof agerange === 'number') { + request.regs = request.regs ?? {}; + request.regs.ext = request.regs?.ext ?? {}; + request.regs.ext.agerange = agerange; + } + + // Validate and process impressions - fail fast on structural issues if (!request.imp || !Array.isArray(request.imp)) { return request; } diff --git a/test/spec/modules/apsBidAdapter_spec.js b/test/spec/modules/apsBidAdapter_spec.js index 429572b0343..8bf37db5be8 100644 --- a/test/spec/modules/apsBidAdapter_spec.js +++ b/test/spec/modules/apsBidAdapter_spec.js @@ -213,6 +213,30 @@ describe('apsBidAdapter', () => { expect(result.data.ext.account).to.equal(undefined); }); + it('should include agerange in request ext when configured', () => { + bidderRequest.ortb2 = { + regs: { + ext: { agerange: 2 }, + }, + }; + + const result = spec.buildRequests(bidRequests, bidderRequest); + + expect(result.data.regs.ext.agerange).to.equal(2); + }); + + it('should include agerange in request ext when configured, even when 0', () => { + bidderRequest.ortb2 = { + regs: { + ext: { agerange: 0 }, + }, + }; + + const result = spec.buildRequests(bidRequests, bidderRequest); + + expect(result.data.regs.ext.agerange).to.equal(0); + }); + it('should remove sensitive geo data from device', () => { bidderRequest.ortb2 = { device: {