{"version":1,"document":"https://github.com/footway/oaas-api/blob/main/docs/produktportal/matning.md","placement_id":"Varje annons får ett serve_id när den lämnas ut. Visning, klick och vidareklick bär samma id, signerat (HMAC-SHA256), och går att följa från händelse till rapport.","view":"Minst 50 % av kortet i bild i minst 1 sekund utan avbrott (IAB/MRC). En visning per placering.","click":"Klick på kortet, via /c/<id>, vidare till produktsidan.","outbound":"Vidareklick till butiken, via /o/<id>, till butikens adress i kampanjen.","rules":[{"reason":"invalid_token","applies":["view","click","outbound"],"rule":"Placerings-id:t verifierar inte (förfalskat, ändrat eller äldre än 24 h)."},{"reason":"bot","applies":["serve","view","click","outbound"],"rule":"User agent saknas eller är en crawler, headless-webbläsare eller ett skript."},{"reason":"click_flood","applies":["click"],"rule":"Fler än 20 klick från samma session under samma klocktimme — hela timmen räknas bort (samma regel som debiteringens klickflod, #1236)."},{"reason":"duplicate_view","applies":["view"],"rule":"Andra visningen av samma placering."},{"reason":"too_fast","applies":["click"],"rule":"Klick mindre än 1000 ms efter att placeringen lämnades ut."},{"reason":"duplicate_click","applies":["click"],"rule":"Klick på samma kampanj från samma anonyma session eller samma (hashade) adress inom 30 min efter ett räknat klick."},{"reason":"over_budget","applies":["click"],"rule":"Klicket skulle ta kampanjen över totalbudget eller dagens budget."},{"reason":"duplicate_outbound","applies":["outbound"],"rule":"Andra vidareklicket från samma placering inom 30 min."}],"cost":"Räknade klick × kampanjens bud per klick (SEK). Underlag; det som debiteras (PORTAL_SPONSORED_CLICK, #1591) avgör avstämningen.","privacy":"Ingen cookie, ingen inloggning. Sessionen är ett slumpat id i webbläsarens sessionStorage; adressen lagras aldrig, bara en HMAC med en nyckel som byts varje dygn."}