chromium/third_party/blink/public/mojom/parakeet/ad_request.mojom

// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

module blink.mojom;

import "url/mojom/url.mojom";

// Used with AdRequestConfig.
struct AdProperties {
  string width;
  string height;
  string slot;
  string lang;
  string ad_type;
  double bid_floor;
};

// Used with AdRequestConfig => AdTargeting.
struct AdGeolocation {
  double latitude;
  double longitude;
};

// Used with AdRequestConfig.
struct AdTargeting {
  // Contextual interests from the current page to include with the request.
  array<string>? interests;
  AdGeolocation? geolocation;
};

// Used with AdRequestConfig.
enum AdSignals {
  kCourseGeolocation = 0,
  kCourseUserAgent = 1,
  kTargeting = 2,
  kUserAdInterests = 3,
};

// Configuration to pass to CreateAdRequest().
//
// All URLs and origins must use https.
//
// https://github.com/WICG/privacy-preserving-ads/blob/main/Parakeet.md#potential-api-shape
struct AdRequestConfig {
  // URL of the ad tech server PARAKEET will contact with anonymized ad request
  // data.
  url.mojom.Url ad_request_url;

  // All the properties of the ads needed for placements on this page.
  array<AdProperties> ad_properties;

  // Ad publisher specific data
  string? publisher_code;

  // Targeting information from contextual signals on the current page.
  AdTargeting? targeting;

  // Collection of AdSignals that should be used for this request.
  array<AdSignals>? anonymized_proxied_signals;

  // Fallback creative URL to use in even of missing or unavailable PARKEET
  // service.
  url.mojom.Url? fallback_source;
};