syntax = "proto3";

package spotify.clienttoken.data.v0;

message ConnectivitySdkData {
  PlatformSpecificData platform_specific_data = 1;
  string device_id = 2;
}

message PlatformSpecificData {
  oneof data {
    NativeAndroidData android = 1;
    NativeIOSData ios = 2;
    NativeDesktopMacOSData desktop_macos = 3;
    NativeDesktopWindowsData desktop_windows = 4;
    NativeDesktopLinuxData desktop_linux = 5;
  }
}

message NativeAndroidData {
  Screen screen_dimensions = 1;
  string android_version = 2;
  int32 api_version = 3;
  string device_name = 4;
  string model_str = 5;
  string vendor = 6;
  string vendor_2 = 7;
  int32 unknown_value_8 = 8;
}

message NativeIOSData {
  // https://developer.apple.com/documentation/uikit/uiuserinterfaceidiom
  int32 user_interface_idiom = 1;
  bool target_iphone_simulator = 2;
  string hw_machine = 3;
  string system_version = 4;
  string simulator_model_identifier = 5;
}

message NativeDesktopWindowsData {
  int32 os_version = 1;
  int32 os_build = 3;
  // https://docs.microsoft.com/en-us/dotnet/api/system.platformid?view=net-6.0
  int32 platform_id = 4;
  int32 unknown_value_5 = 5;
  int32 unknown_value_6 = 6;
  // https://docs.microsoft.com/en-us/dotnet/api/system.reflection.imagefilemachine?view=net-6.0
  int32 image_file_machine = 7;
  // https://docs.microsoft.com/en-us/dotnet/api/system.reflection.portableexecutable.machine?view=net-6.0
  int32 pe_machine = 8;
  bool unknown_value_10 = 10;
}

message NativeDesktopLinuxData {
  string system_name = 1;         //  uname -s
  string system_release = 2;      //  -r
  string system_version = 3;      //  -v
  string hardware = 4;            //  -i
}

message NativeDesktopMacOSData {
  string system_version = 1;
  string hw_model = 2;
  string compiled_cpu_type = 3;
}

message Screen {
  int32 width = 1;
  int32 height = 2;
  int32 density = 3;
  int32 unknown_value_4 = 4;
  int32 unknown_value_5 = 5;
}
