> For the complete documentation index, see [llms.txt](https://help.citrusad.com/retail-media-interface/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.citrusad.com/retail-media-interface/integration/sv/brand-pages/brand-page-retailer-integration-guide/brand-page-apis.md).

# API:er för varumärkessidor

## URL-dirigering

När en användare navigerar till en varumärkessidas URL extraherar din applikation `urlSlug` från sökvägen och skickar det till ad‑serving API:et.

URL-struktur: `<https://{your-domain}/{prefix}/{urlSlug}>`

| Segment       | Källa                                               | Exempel            |
| ------------- | --------------------------------------------------- | ------------------ |
| `your-domain` | Din webbplats                                       | `www.retailer.com` |
| `prefix`      | Konfigureras under onboarding (t.ex. brands, pages) | `brands`           |
| `urlSlug`     | Extraheras vid körtid från URL-sökvägen             | `adidas`           |

**Exempel**

När en användare besöker: `<https://www.retailer.com/brands/adidas:>`

1. Din applikation matchar `/brands/*` -routen.
2. Extraherar `adidas`som urlSlug.
3. Anropar `POST /ads/v3/brand-pages` på din tilldelade annonsvärd med `"urlSlug": "adidas"` och din `catalogId`.
4. Rendrerar de returnerade innehållsmodulerna på sidan.

### Valideringsregler för slug

Varumärken skapar slugs enligt följande begränsningar:

* **Tecken:** Gemener (a–z), siffror (0–9), bindestreck (-) och understreck (\_).
* **Längd:** Minst 3 tecken, max 100 tecken.
* **Unikhet:** Måste vara unik inom återförsäljarens katalog (`catalogId`).

{% hint style="info" %}
För närvarande tar unika slugs inte hänsyn till kampanjers datumintervall.
{% endhint %}

* **Oföränderlighet:** Kan inte ändras efter att varumärkessidokampanjen är live.
* **Format:** Inga inledande eller avslutande bindestreck (till exempel är `-adidas`or `adidas-` inte tillåtna).

## Cachning

* Cacha inte svar från ad‑serving API:et. Skicka alltid förfrågningar direkt till Epsilon API:et för att säkerställa:
  * Rätt varumärkessidokampanj visas (kampanjer kan pausas, uppdateras eller bytas ut).
  * Spårnings-URL:er innehåller färska ID:n per förfrågan för korrekt attribuering.
  * Antalet visningar förblir korrekt och påverkas inte av föråldrade cachade svar.

**SEO-övervägande**: Återförsäljare kan välja att tillåta att Brand Pages indexeras av sökmotorer. Indexering av varumärkessidans innehåll kan förbättra den organiska sökbarheten, eftersom all text på sidan blir sökbar för sökmotorer.

## Konfiguration av omvänd proxy

### Varför du behöver en omvänd proxy

**Problemet**: Annonsblockerare och integritetsverktyg blockerar ofta spårningsförfrågningar som skickas direkt till domäner för annonsering.

**Lösningen**: Dirigera alla spårningsförfrågningar via din egen domän så att de framstår som förstapartstrafik.

```apache
❌ Blocked: user-browser → [third-party-tracking-domain]
✅ Works:   user-browser → yoursite.com/[custom-path] → [third-party-tracking-domain]
```

* Ersätt `[third-party-tracking-domain]` med den faktiska Epsilon -spårningsslutpunkten som tillhandahölls under onboarding.
* Ersätt `[custom-path]` med en neutral, unik sökväg (t.ex. `/media-proxy`, `/assets-endpoint`eller vilket icke-annonsrelaterat begrepp som helst).

En omvänd proxy krävs för C2S-spårning (webbläsare). Den gäller inte för S2S-anrop, som måste skickas direkt till Epsilon spårningsvärden [(se Spårning – Server-till-Server (S2S)](/retail-media-interface/integration/sv/brand-pages/brand-page-retailer-integration-guide/tracking-attribution.md#tracking--servertoserver-s2s))).

### Konfiguration

Din webbplats måste värda en omvänd proxy under en sökväg som `https://www.retailer.com/{proxyPath}/`. Spårningsförfrågningar från webbläsare (C2S) till din domän på den sökvägen vidarebefordras till din regionala spårningsvärd ([se Ad Serving API](#ad-serving-api)). Spårning från server till server får inte använda denna proxy.

**Beteende:**

* Acceptera förfrågningar under `/epsilon/`
* Vidarebefordra till `https://[region]-tracking.rmn.dotomi.com/` (se [Ad Serving API](#ad-serving-api) för `[region]`)
* Behåll filvägssuffixet
* Vidarebefordra obligatoriska HTTP-headers
* Tvinga HTTPS (TLS 1.2+)

### Obligatoriska headers

| Header                     | Beskrivning                                    |
| -------------------------- | ---------------------------------------------- |
| `RP-Host`                  | Ditt värdnamn som tar emot spårningsförfrågan. |
| `X-Forwarded-For`          | Faktisk klient-IP-adress.                      |
| `X-Forwarded-Request-Path` | Sökväg för proxyprefix (t.ex. /epsilon).       |
| `Referer`                  | Sidan där pixelutlösningen skedde.             |

### Apache-exempel

```apache
LoadModule ssl_module modules/mod_ssl.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
SSLProxyEngine on
RequestHeader add "X-Forwarded-Request-Path" "/epsilon"
RequestHeader add "RP-Host" "%{HTTP_HOST}s"
RequestHeader add "Referer" "%{HTTP_REFERER}s"
ProxyPass "/epsilon" "https://[region]-tracking.rmn.dotomi.com"
ProxyPassReverse "/epsilon" "https://[region]-tracking.rmn.dotomi.com/"
```

### NGINX-exempel

```apache
server {
    server_name www.retailer.com;
    location /epsilon/ {
        proxy_ssl_server_name on;
        rewrite ^/epsilon/(.*) /$1 break;
        proxy_pass https://[region]-tracking.rmn.dotomi.com;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $server_name;
        proxy_set_header RP-Host $host;
        proxy_set_header X-Forwarded-Request-Path "/epsilon";
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Referer $http_referer;
    }
}
```

## Ad Serving API

Epsilon levererar varumärkessidor från RMN-värdar på `*.rmn.dotomi.com`. Ersätt `[region]` med segmentet Epsilon tilldelar för din distribution.

Annons-API:et använder `https://[region]-ads.rmn.dotomi.com`; medan spårningsändpunkter (impressionspixlar, klickomdirigeringar och S2S-aviserings-URL:er) använder `https://[region]-tracking.rmn.dotomi.com` med samma `[region]` värde.

I vissa konfigurationer kan basvärdnamnen `ads.rmn.dotomi.com` och `tracking.rmn.dotomi.com` användas. Epsilon kommer att bekräfta de lämpliga värdnamnen för din miljö.

### Ändpunkt

```
POST https://[region]-ads.rmn.dotomi.com/ads/v3/brand-pages
Content-Type: application/json
Authorization: Basic <existing_api_key>
```

### Begärans nyttolast

```
{
  "id": "req-adidas-12345",
  "catalogId": "test-catalog-adidas",
  "urlSlug": "adidas",
  "site": {
    "domain": "www.retailer.com",
    "page": "https://www.retailer.com/brand/adidas",
    "ref": "https://www.retailer.com/search?q=shoes"
  },
  "device": {
    "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 ...",
    "ip": "192.168.1.100",
    "language": "en-US",
    "devicetype": 2,
    "os": "macOS",
    "geo": {
      "country": "USA",
      "region": "CA",
      "city": "San Francisco",
      "zip": "94105"
    }
  },
  "user": {
    "sessionId": "sess-abc123xyz",
    "customerId": "cust-789012",
    "dtmId": "dtm-456def"
  },
  "regs": {
    "gdpr": 1,
    "consent": "COwJqZAOwJqZAOAAAAENAXCAAAAAAAAAAAAAABpoAIAAAEpgAIAAAg1AAAICAIAAAEA"
  }
}
```

Det `regs` värdena ovan illustrerar GDPR-tillämplig trafik:\
`gdpr` is `1`, och `consent`är en **syntetisk samtyckessträng för IAB TCF v2** (endast korrekt form och teckenuppsättning).

I produktionsmiljöer:

* Ställ in `gdpr`från dina geografiska och juridiska regler.
* Skicka **live TC-strängen** från din CMP (till exempel via `_ _tcfapi` `getTCData`→ `tcString`).

För förfrågningar som inte omfattas av GDPR, använd `"gdpr": 0` och utelämna `consent`eller använd `""`

`iabConsentString` på spårningshändelser: Varje ifylld spårningsplats (`trackers.impression`, `trackers.click`, `trackers.addToCart`) innehåller `params.iabConsentString`. När du anger `regs.consent` i begäran är detta värde den ordagranna TC-strängen.

När du utelämnade `regs.consent`, är detta värde makroplatshållaren {TCF} - ersätt den med den aktuella TCF v2-strängen från din CMP (till exempel via `__tcfapi getTCData` → `tcString`) vid utlösningstillfället innan du skickar någon spårningsbegäran.

### Fältdefinitioner för begäran

| Fält                 | Typ    | Krävs | Beskrivning                                                                                                                                 |
| -------------------- | ------ | ----- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`                 | sträng | Ja    | Unik begäransidentifierare (genererad av återförsäljaren)                                                                                   |
| `catalogId`          | sträng | Ja    | Återförsäljarens produktkatalog-ID (tillhandahålls av Epsilon)                                                                              |
| `urlSlug`            | sträng | Ja    | URL-slutdel för varumärkessida (t.ex. adidas)                                                                                               |
| site                 |        |       |                                                                                                                                             |
| `site.domain`        | sträng | Ja    | Återförsäljarens webbplatsdomän                                                                                                             |
| `site.page`          | sträng | No    | Fullständig URL där varumärkessidan återges                                                                                                 |
| `site.ref`           | sträng | No    | Hänvisnings-URL (där användaren navigerade från)                                                                                            |
| device               |        |       |                                                                                                                                             |
| `device.ua`          | sträng | Ja    | User agent-sträng                                                                                                                           |
| `device.ip`          | sträng | No    | Klientens IP-adress                                                                                                                         |
| `device.language`    | sträng | No    | Webbläsarspråk (t.ex. en-US)                                                                                                                |
| `device.devicetype`  | heltal | No    | 1=mobil, 2=pc, 4=telefon, 5=surfplatta                                                                                                      |
| `device.os`          | sträng | No    | Operativsystem                                                                                                                              |
| `device.geo.country` | sträng | No    | ISO 3166-1 alfa-3 landskod (t.ex. USA, GBR)                                                                                                 |
| `device.geo.region`  | sträng | No    | Delstat eller region                                                                                                                        |
| `device.geo.city`    | sträng | No    | Stad                                                                                                                                        |
| `device.geo.zip`     | sträng | No    | Postnummer                                                                                                                                  |
| user                 |        |       |                                                                                                                                             |
| `user.sessionId`     | sträng | No    | Återförsäljarens sessionsidentifierare (icke-PII)                                                                                           |
| `user.customerId`    | sträng | No    | Återförsäljarens kundidentifierare (icke-PII)                                                                                               |
| `user.dtmId`         | sträng | No    | Spårningsidentifierare                                                                                                                      |
| regs                 |        |       |                                                                                                                                             |
| `regs.gdpr`          | heltal | No    | `0` = GDPR gäller inte, `1` = GDPR gäller (enligt OpenRTB-liknande signalering)                                                             |
| `regs.consent`       | sträng | No    | IAB TCF **v2** consent-sträng (`tcString` från CMP). Använd endast när `gdpr` is `1` och du har en giltig sträng; utelämna annars eller`""` |

{% hint style="danger" %}
**Viktigt** JSON nedan är ett representativt och ganska komplett exempel. Levande svar är ofta glesare för `contentData` moduler. Skapa inte fasta strukturer som förutsätter att varje nyckel som visas här alltid är närvarande för varje `contentType` eller varumärkessida.\
Det `theme` är annorlunda: vid ett framgångsrikt svar är det alltid närvarande och använder den nästlade strukturen som beskrivs i avsnittet Theme Object (`colors`och `buttons` helt ifylld - krävs hex6-strängar för varje sökväg; nej `nulls` inuti `theme`).
{% endhint %}

### Response Payload

```
{
  "realizedAdId": "brandpage_djogXfHSYGZOZnnkzEKunWvdNYEKABIAGgwIwIPjzAYQ3byasAE=",
  "brandPageTemplateId": "6e9690ef-81d1-4fad-b2ce-749e22cceb10",
  "catalogId": "test-catalog-adidas",
  "urlSlug": "adidas",
  "theme": {
    "colors": {
      "background": "#F5F5F5",
      "text": {
        "heading": "#1a1a1a",
        "subheading": "#333333",
        "body": "#5f6368",
        "caption": "#9aa0a6",
        "link": "#1a73e8",
        "tagline": "#5f6368",
        "lines": "#e0e0e0"
      }
    },
    "buttons": {
      "primary": {
        "background": "#ff6600",
        "text": "#FFFFFF"
      },
      "secondary": {
        "background": "#FFFFFF",
        "text": "#ff6600"
      }
    }
  },
  "trackers": {
    "impression": {
      "type": "impression",
      "params": { "ts": "{TS}", "iabConsentString": "{TCF}" }
    }
  },
  "trackingTypes": {
    "impression":      ["client.impressionPixelUrls", "server.impressionEvent"],
    "productClick":    ["client.clickRedirect", "client.clickEvent", "server.clickEvent"],
    "productAddToCart": ["client.addToCartEvent", "server.addToCartEvent"],
    "link":            ["client.clickRedirect", "client.clickEvent", "server.clickEvent"],
    "interaction":     ["client.clickEvent", "server.clickEvent"]
  },
  "trackingTemplates": {
    "client": {
      "clickRedirect":       "/tracking/v3/click/redirect/brandpage_djog...?catalogId=test-catalog-adidas&...",
      "clickEvent":          "/tracking/v3/event/click/brandpage_djog...?catalogId=test-catalog-adidas&...",
      "addToCartEvent":      "/tracking/v3/event/add-to-cart/brandpage_djog...?catalogId=test-catalog-adidas&...",
      "impressionPixelUrls": [
        "/tracking/v3/impression/pixel/brandpage_djog...?catalogId=test-catalog-adidas&..."
      ]
    },
    "server": {
      "clickEvent":          "https://[region]-tracking.rmn.dotomi.com/tracking/v3/event/click/brandpage_djog...?...",
      "addToCartEvent":      "https://[region]-tracking.rmn.dotomi.com/tracking/v3/event/add-to-cart/brandpage_djog...?...",
      "impressionEvent":     "https://[region]-tracking.rmn.dotomi.com/tracking/v3/event/impression/brandpage_djog...?..."
    }
  },
  "contentData": [
    {
      "id": "hero-1",
      "brandPageModuleTemplateId": "hero-template-1",
      "contentType": "HERO",
      "order": 1,
      "tags": ["header"],
      "mediaUrl": "https://example.com/images/adidas-hero.jpg",
      "headline": "Impossible Is Nothing",
      "subheadline": "Spring Collection",
      "ctaText": "Explore",
      "ctaLink": "https://example.com/adidas/explore",
      "trackers": {
        "click": {
          "type": "link",
          "params": {
            "modId": "hero-1",
            "rurl": "https%3A%2F%2Fexample.com%2Fadidas%2Fexplore",
            "ts": "{TS}",
            "iabConsentString": "{TCF}"
          }
        }
      }
    },
    {
      "id": "text-1",
      "brandPageModuleTemplateId": "text-template-1",
      "contentType": "TEXT",
      "order": 2,
      "text": "Discover the latest Adidas collection featuring innovative designs and sustainable materials."
      // (No trackers for TEXT module, as it has no interactive elements)
    }
  ]
}
```

#### Response Field Definitions

| Fält                                      | Typ              | Beskrivning                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ----------------------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `realizedAdId`                            | sträng           | Unik annonsidentifierare för denna visning av varumärkessida. Används i alla sökvägar för spårningsmallar.                                                                                                                                                                                                                                                                                                                                                   |
| `brandPageTemplateId`                     | sträng           | Mall-ID som används för denna varumärkessida                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `catalogId`                               | sträng           | Återförsäljarens katalog-ID (återspeglas från begäran)                                                                                                                                                                                                                                                                                                                                                                                                       |
| `urlSlug`                                 | sträng           | URL-slug för varumärkessida (återspeglas från begäran)                                                                                                                                                                                                                                                                                                                                                                                                       |
| `theme`                                   | Object           | <p>Alltid närvarande vid framgång. Stil på sidnivå från varumärket: nästlad <code>colors</code> (bakgrund + <code>text</code> roller) och <code>buttons</code>(<code>primary</code>/ <code>secondary</code>, var och en med <code>background</code>och <code>text</code>). Se <a href="#theme-object">Theme Object</a> -avsnittet.<br>Svarskroppen returneras som serialiserad av annons-servern (ingen mellanliggande omformning av <code>theme</code>)</p> |
| `trackers`                                | object           | Spårningscontainer på sidnivå. `trackers.impression` innehåller sidans impression slot: `type: "impression"` och `params` inklusive minst `ts: "`{TS}`"` och `iabConsentString`.                                                                                                                                                                                                                                                                             |
| `trackingTypes`                           | object           | Karta över spårningstyp till tillämpliga mallnycklar. Typer: `impression`, `productClick`, `productAddToCart`, `link`, `interaction`. Varje värde är en matris med `client.*/` `server.*` nycklar från `trackingTemplates`. (se [Hur man skapar en spårnings-URL](/retail-media-interface/integration/sv/brand-pages/brand-page-retailer-integration-guide/tracking-attribution.md#how-to-compose-a-tracking-url)).                                          |
| `trackingTemplates.client`                | object           | **Relativa** URL-sökvägar och frågesträngar för spårning i webbläsaren (C2S) - lägg till din bas-URL för reverse proxy i början (`BASEURL`).                                                                                                                                                                                                                                                                                                                 |
| `trackingTemplates.server`                | object           | Absoluta\*\* URL-mallar på Epsilon spårningsvärden för S2S.                                                                                                                                                                                                                                                                                                                                                                                                  |
| `contentData[]`                           | array            | Ordnad matris med innehållsmoduler som ska renderas                                                                                                                                                                                                                                                                                                                                                                                                          |
| `contentData[].id`                        | sträng           | Modulinstans-ID                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `contentData[].brandPageModuleTemplateId` | sträng           | Modulmall-ID                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `contentData[].contentType`               | sträng           | Modultyp: HERO, TEXT, FILTER\_MENU, PRODUCT\_GRID, IMAGE, IMAGE\_GALLERY, SPLIT\_LAYOUT                                                                                                                                                                                                                                                                                                                                                                      |
| `contentData[].order`                     | heltal           | Renderingsordning (stigande)                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `contentData[].tags`                      | array of strings | Valfritt. Modultaggar angivna av återförsäljaren i mallen. Utelämnas helt när inga taggar är angivna - behandla saknade som "inga taggar". Finns även på nästlade moduler inom SPLIT\_LAYOUT.                                                                                                                                                                                                                                                                |
| `contentData[].trackers`                  | object           | När den finns, spårningscontainer per nod. `trackers.click` för länk-/interaktions-/produktklicksmätning; `trackers.addToCart` för produkt add-to-cart (inkluderar makron {QTY} och {CONVERSION\_VALUE}). Kan utelämnas när det inte finns något att spåra.                                                                                                                                                                                                  |

### Theme Object

Varje framgångsrikt API-svar för Brand Page innehåller ett `theme` objekt: färger på sidnivå och knappstilar konfigurerade för varumärket. Tillämpa dessa värden vid rendering (till exempel genom att mappa dem till CSS custom properties eller dina designtokens). JSON genereras av annons-servern och levereras som returnerad - det finns inget separat steg som skriver om `theme`.

**Färgformat:** Temats färgvärden följer plattformskontraktet från uppström (kampanj/konfiguration): varje värde är en `#` följt av sex hexadecimala siffror (hex6), till exempel, `#ff6600`. Förvänta dig inte andra format (kort hex3, åttasiffrig hex, `rgb()`, `hsl()`, eller namngivna färger). Annons-servern validerar inte om färgformatet vid visningstillfället; uppström tillhandahåller hex6 för varje temafält.

#### Struktur och semantik

* `theme` innehåller `colors` och `buttons` - båda krävs närhelst `theme` är närvarande.
* `colors.background` - sida eller canvas-bakgrund (krävs hex6).
* `colors.text` - sju obligatoriska roller: `heading`, `subheading`, `body`, `caption`, `link`, `tagline`, `lines` (linjer/avdelare). Varje värde är en hex6-sträng.
* `buttons.primary` och `buttons.secondary` - varje kräver `background` och `text` (knappfyllning och etikettfärger), vardera en hex6-sträng.
* Varje sökväg i fältreferenstabellen nedan är obligatorisk. Det finns inga valfria färgplatser och inga `null` värden inuti `theme`. (Glesa eller utelämnade fält gäller på andra ställen, till exempel i `contentData` moduler.)
* Det `theme` är på sidnivå - alla moduler på varumärkessidan delar samma tema.

#### Fältreferens

Alla sökvägar i den här tabellen är obligatoriska (icke-null hex6-strängar).

| Sökväg                               | Beskrivning              |
| ------------------------------------ | ------------------------ |
| `theme.colors.background`            | Sido-/canvasbakgrund     |
| `theme.colors.text.heading`          | Rubriktext               |
| `theme.colors.text.subheading`       | Underrubriktext          |
| `theme.colors.text.body`             | Brödtext/paragraftext    |
| `theme.colors.text.caption`          | Bildtext/sekundär text   |
| `theme.colors.text.link`             | Länktext                 |
| `theme.colors.text.tagline`          | Tagline-text             |
| `theme.colors.text.lines`            | Linjer och avdelare      |
| `theme.buttons.primary.background`   | Primär CTA-knappfyllning |
| `theme.buttons.primary.text`         | Primär CTA-knappetikett  |
| `theme.buttons.secondary.background` | Sekundär knappfyllning   |
| `theme.buttons.secondary.text`       | Sekundär knappetikett    |

Exempel - (`theme`endast objekt):

```json
"theme": {
  "colors": {
    "background": "#F5F5F5",
    "text": {
      "heading": "#1a1a1a",
      "subheading": "#333333",
      "body": "#5f6368",
      "caption": "#9aa0a6",
      "link": "#1a73e8",
      "tagline": "#5f6368",
      "lines": "#e0e0e0"
    }
  },
  "buttons": {
    "primary": {
      "background": "#ff6600",
      "text": "#FFFFFF"
    },
    "secondary": {
      "background": "#FFFFFF",
      "text": "#ff6600"
    }
  }
}
```

#### Per nod `params`(typiska nycklar)

| Param              | När den används                                     | Beskrivning                                                                                                                                                    |
| ------------------ | --------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `modId`            | De flesta interaktiva noder                         | Innehållsmodul- eller radidentifierare.                                                                                                                        |
| `rurl`             | `link` / `productClick`när en omdirigering behövs   | URL-kodad destination                                                                                                                                          |
| `ts`               | De flesta händelser                                 | Tidsstämpel för cache-busting; ersätt `"{TS}"`vid tidpunkten för avfyrning.                                                                                    |
| `iabConsentString` | Alla spårningsplatser                               | Litterär TC-sträng, eller {TCF}-makro att ersätta vid tidpunkten för avfyrning                                                                                 |
| `productCode`      | `productClick` / `productAddToCart`                 | Produktidentifierare.                                                                                                                                          |
| `sellerId`         | `productClick` / `productAddToCart` (marknadsplats) | Säljaridentifierare.                                                                                                                                           |
| `qty`              | `productAddToCart`                                  | Absolut kvantitet av denna SKU i kundvagnen vid tidpunkten då händelsen utlöses (inte en delta). Ersätt {QTY}-makro vid tidpunkten för avfyrning               |
| `conVal`           | `productAddToCart`                                  | Absoluter monetärt värde för dessa artiklar: kvantitet × enhetspris, minus tillämpade rabatter. Ersätt `{CONVERSION_VALUE}` makro vid tidpunkten för avfyrning |

#### Mallberoende fält i `contentData`

Bortsett från kärndiskriminatorer på varje modul (`id`, `brandPageModuleTemplateId`, `contentType`, `order`), är egenskapens närvaro inte enhetlig över varumärkessidor. Föredra funktionsdetektering - kontrollera varje egenskap före användning - istället för att behandla varje fält i exemplen som obligatoriskt.

API:et kan representera "inget värde" på flera sätt:

| Mönster          | Betydelse                              | Föreslagen hantering                                                           |
| ---------------- | -------------------------------------- | ------------------------------------------------------------------------------ |
| Nyckel utelämnad | Egenskap saknas i JSON-objektet        | Behandla som frånvarande; använd valfri kedjning/standardvärden                |
| Explicit `null`  | Egenskap finns med `null` värde        | Samma som utelämnad, såvida inte din serialiserare skiljer dem åt              |
| Tom sträng       | `""` för text- eller URL-liknande fält | Dölj eller hoppa vanligtvis över att rendera den delen av användargränssnittet |

#### Exempel för vanliga modultyper

**Produktgrid:**

Varje produktrad innehåller en `product` objekt (`catalogId`, `productCode`, `sellerId`), an `order` värde, och `trackers` när raden är spårbar. Produktrader ger både en `click` plats (`type: "productClick"`) och en `addToCart`plats (`type: "productAddToCart"`) när SKU:n är attribuerbar.

```

{
  "product": {
    "catalogId": "550e8400-e29b-41d4-a716-446655440001",
    "productCode": "9221200653341",
    "sellerId": "2ae0aab9-44ce-40a0-b2b9-ae61681ad224"
  },
  "order": 1,
  "trackers": {
    "click": {
      "type": "productClick",
      "params": {
        "modId": "grid-1",
        "productCode": "9221200653341",
        "sellerId": "2ae0aab9-44ce-40a0-b2b9-ae61681ad224",
        "rurl": "{RURL}",
        "ts": "{TS}",
        "iabConsentString": "{TCF}"
      }
    },
    "addToCart": {
      "type": "productAddToCart",
      "params": {
        "modId": "grid-1",
        "productCode": "9221200653341",
        "sellerId": "2ae0aab9-44ce-40a0-b2b9-ae61681ad224",
        "rurl": "{RURL}",
        "ts": "{TS}",
        "qty": "{QTY}",
        "conVal": "{CONVERSION_VALUE}",
        "iabConsentString": "{TCF}"
      }
    }
  }
}

```

**Hero:**

Rubrik, underrubrik, CTA-text och länk, bild, överlägg, och `trackers.click` för CTA när den finns.

```

{
  "contentType": "HERO",
  "tags": [
    "header"
  ],
  "mediaUrl": "https://example.com/images/adidas-hero.jpg",
  "headline": "Impossible Is Nothing",
  "subheadline": "Spring Collection",
  "ctaText": "Explore",
  "ctaLink": "https://example.com/adidas/explore",
  "trackers": {
    "click": {
      "type": "link",
      "params": {
        "modId": "hero-1",
        "rurl": "https%3A%2F%2Fexample.com%2Fadidas%2Fexplore",
        "ts": "{TS}",
        "iabConsentString": "{TCF}"
      }
    }
  }
}

```

**Bildgalleri:**

En matris med bilder, var och en med en URL, alt-text och bildtext. `trackers.click` endast för en bild när den bilden länkar vidare.

```
{
  "contentType": "IMAGE_GALLERY",
  "galleryImages": [
    {
      "url": "https://example.com/images/recipe-spaghetti-bolognese.jpg",
      "alt": "Spaghetti Bolognese",
      "caption": "Spaghetti Bolognese",
      "trackers": {
        "click": {
          "type": "link",
          "params": {
            "modId": "gallery-1",
            "rurl": "https%3A%2F%2Fexample.com%2Frecipes%2Fspaghetti",
            "ts": "{TS}",
            "iabConsentString": "{TCF}"
          }
        }
      }
    }
  ]
}
```

**Text:**

Rubrik och brödtext, utan `trackers`såvida inte en länk finns på en rad.

```
{
  "contentType": "TEXT",
  "text": "Explore our newest arrivals designed for comfort, style, and performance."
}
```

**Bild:**

Innehåller en bild-URL, bildtext, alt-text, valfri länk och `trackers.click` detaljer när bilden är klickbar

```
{
  "contentType": "IMAGE",
  "imageUrl": "https://example.com/images/model.jpg",
  "caption": "New arrivals now available",
  "alt": "Model wearing summer collection",
  "trackers": { "click": { "type": "link", "params": { "modId": "image-1", "rurl": "https%3A%2F%2Fexample.com%2Fnew-arrivals", "ts": "{TS}", "iabConsentString": "{TCF}"
  }
}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://help.citrusad.com/retail-media-interface/integration/sv/brand-pages/brand-page-retailer-integration-guide/brand-page-apis.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
