chromium/components/privacy_sandbox/masked_domain_list/masked_domain_list.proto

syntax = "proto2";

package masked_domain_list;

option optimize_for = LITE_RUNTIME;

// Resource that is used in a 3rd party context.
message Resource {
  reserved 2;

  enum Experiment {
    EXPERIMENT_UNKNOWN = 0;
    EXPERIMENT_AFP = 1;
  }

  optional string domain = 1;
  repeated Experiment experiments = 3 [packed = true];

  // If true, clients not part of an experiment group will ignore this Resource.
  optional bool exclude_default_group = 4;

  // Non-zero IDs of experiment groups that include this Resource.
  repeated int64 experiment_group_ids = 5;
}

// Contains ownership information about resources that are used in a 3rd party
// context and domains that should treat those resources as 1st party.
message ResourceOwner {
  // Required.
  optional string owner_name = 1;

  // Sites that are all under the same ownership.
  // Requests to this owner's resources from pages on these sites will
  // not go through the Privacy Proxy.
  repeated string owned_properties = 2;

  // Resources that are used in a 3rd party context.
  repeated Resource owned_resources = 3;
}

// Contains information to create rules based on the Public Suffix List.
message PublicSuffixListRule {
  // Privately-owned domain listed on the PSL.
  optional string private_domain = 1;
}

message MaskedDomainList {
  repeated ResourceOwner resource_owners = 1;
  // Public Suffix List rules that modify the MDL.
  repeated PublicSuffixListRule public_suffix_list_rules = 2;
}