syntax = "proto3";

package gatewayprotocol.v1;

import "gatewayprotocol/v1/timestamps.proto";

option swift_prefix = "Gateway";

message Campaign {
  // Version of the campaign token
  int32 data_version = 1;
  // Defined in tracking/v1/loaded_campaign_token.proto
  bytes data = 2;
  // Placement ID for which this campaign is loaded
  string placement_id = 3;
  // Impression opportunity ID for which this campaign is loaded
  bytes impression_opportunity_id = 4;
  // Timestamps for when the campaign was loaded (when Ad Loaded event was fired)
  Timestamps load_timestamp = 5;
  // Timestamps for when the campaign was shown (when Show call was made and it was moved from loaded_campaigns to shown_campaigns)
  optional Timestamps show_timestamp = 6;
}

// This structure will be converted to Loaded Campaigns required by exchange.
message CampaignState {
  // List of campaigns currently loaded and ready to be shown by SDK
  repeated Campaign loaded_campaigns = 1;
  // Last N campaigns shown by SDK in current session
  repeated Campaign shown_campaigns = 2;
}
