syntax = "proto3";

package gatewayprotocol.v1;

import "gatewayprotocol/v1/client_info.proto";

option swift_prefix = "Gateway";

// InitializationRequest is the request sent by the SDK to the gateway.
// This information is also required to generate Install Event.
message InitializationDeviceInfo {
  string bundle_id = 1;
  string device_make = 2;
  string device_model = 3;
  string os_version = 4;
  optional int32 tracking_auth_status = 5; 
  int64 total_disk_space = 6;
  int64 total_ram_memory = 7;
  string hashed_device_name = 8;
  int64 current_ui_theme = 9;
  string network_operator = 10;
  double battery_level = 11;
  int32 battery_status = 12;
  int64 system_boot_time = 13;
  string language = 14;
  string local_list = 15;
  string connection_type = 16;
}

// InitializationRequest is the request sent by the SDK to the gateway
message InitializationRequest {
  ClientInfo client_info = 1;
  // User Consent and privacy context stored on the device
  optional bytes privacy = 2;
  // Install Identifier stored on the device
  string idfi = 3;
  // Session ID generated on the device. This can be shared across multiple SDK/products.
  bytes session_id = 4;
  // Optional cache that can be provided by the gateway and stored locally on
  // the SDK this allows for a reduction in cross cluster traffic + latency
  // controlled by the gateway
  optional bytes cache = 5;
  // Optional legacy flow user consent. This structure is locally stored in Storage API
  // Stored in private storage with keys `privacy.*`, `pipl.*` and `unity.privacy.permissions.*`; contains JSON with flatten tree
  optional string legacy_flow_user_consent = 6;
  // AUID provided by Level Play SDK
  optional bytes auid = 7;
  // Unity Analytics User ID
  // from Unity engine Modules/UnityAnalytics/CoreStats/UnityConnectService.cpp
  // stored using 'unity.cloud_userid' key
  optional string analytics_user_id = 8;
  // Device Info which is requried by initialization request
  InitializationDeviceInfo device_info = 9;
  // Flag which indicates if it is first initialization after install
  // Should be backward compatible with legacy flow
  // store using Storage API under key configuration.hasInitialized
  bool is_first_init = 10;
   // AUID provided by Level Play SDK in string format
  optional string auid_string = 11;
}
