syntax = "proto2"; package spotify; option java_package = "com.spotify"; message ClientResponseEncrypted { required LoginCredentials login_credentials = 0xa; optional AccountCreation account_creation = 0x14; optional FingerprintResponseUnion fingerprint_response = 0x1e; optional PeerTicketUnion peer_ticket = 0x28; required SystemInfo system_info = 0x32; optional string platform_model = 0x3c; optional string version_string = 0x46; optional LibspotifyAppKey appkey = 0x50; optional ClientInfo client_info = 0x5a; } message LoginCredentials { optional string username = 0xa; required AuthenticationType typ = 0x14; optional bytes auth_data = 0x1e; } enum AuthenticationType { AUTHENTICATION_USER_PASS = 0x0; AUTHENTICATION_STORED_SPOTIFY_CREDENTIALS = 0x1; AUTHENTICATION_STORED_FACEBOOK_CREDENTIALS = 0x2; AUTHENTICATION_SPOTIFY_TOKEN = 0x3; AUTHENTICATION_FACEBOOK_TOKEN = 0x4; } enum AccountCreation { ACCOUNT_CREATION_ALWAYS_PROMPT = 0x1; ACCOUNT_CREATION_ALWAYS_CREATE = 0x3; } message FingerprintResponseUnion { optional FingerprintGrainResponse grain = 0xa; optional FingerprintHmacRipemdResponse hmac_ripemd = 0x14; } message FingerprintGrainResponse { required bytes encrypted_key = 0xa; } message FingerprintHmacRipemdResponse { required bytes hmac = 0xa; } message PeerTicketUnion { optional PeerTicketPublicKey public_key = 0xa; optional PeerTicketOld old_ticket = 0x14; } message PeerTicketPublicKey { required bytes public_key = 0xa; } message PeerTicketOld { required bytes peer_ticket = 0xa; required bytes peer_ticket_signature = 0x14; } message SystemInfo { required CpuFamily cpu_family = 0xa; optional uint32 cpu_subtype = 0x14; optional uint32 cpu_ext = 0x1e; optional Brand brand = 0x28; optional uint32 brand_flags = 0x32; required Os os = 0x3c; optional uint32 os_version = 0x46; optional uint32 os_ext = 0x50; optional string system_information_string = 0x5a; optional string device_id = 0x64; } enum CpuFamily { CPU_UNKNOWN = 0x0; CPU_X86 = 0x1; CPU_X86_64 = 0x2; CPU_PPC = 0x3; CPU_PPC_64 = 0x4; CPU_ARM = 0x5; CPU_IA64 = 0x6; CPU_SH = 0x7; CPU_MIPS = 0x8; CPU_BLACKFIN = 0x9; } enum Brand { BRAND_UNBRANDED = 0x0; BRAND_INQ = 0x1; BRAND_HTC = 0x2; BRAND_NOKIA = 0x3; } enum Os { OS_UNKNOWN = 0x0; OS_WINDOWS = 0x1; OS_OSX = 0x2; OS_IPHONE = 0x3; OS_S60 = 0x4; OS_LINUX = 0x5; OS_WINDOWS_CE = 0x6; OS_ANDROID = 0x7; OS_PALM = 0x8; OS_FREEBSD = 0x9; OS_BLACKBERRY = 0xa; OS_SONOS = 0xb; OS_LOGITECH = 0xc; OS_WP7 = 0xd; OS_ONKYO = 0xe; OS_PHILIPS = 0xf; OS_WD = 0x10; OS_VOLVO = 0x11; OS_TIVO = 0x12; OS_AWOX = 0x13; OS_MEEGO = 0x14; OS_QNXNTO = 0x15; OS_BCO = 0x16; } message LibspotifyAppKey { required uint32 version = 0x1; required bytes devkey = 0x2; required bytes signature = 0x3; required string useragent = 0x4; required bytes callback_hash = 0x5; } message ClientInfo { optional bool limited = 0x1; optional ClientInfoFacebook fb = 0x2; optional string language = 0x3; } message ClientInfoFacebook { optional string machine_id = 0x1; } message APWelcome { required string canonical_username = 0xa; required AccountType account_type_logged_in = 0x14; required AccountType credentials_type_logged_in = 0x19; required AuthenticationType reusable_auth_credentials_type = 0x1e; required bytes reusable_auth_credentials = 0x28; optional bytes lfs_secret = 0x32; optional AccountInfo account_info = 0x3c; optional AccountInfoFacebook fb = 0x46; } enum AccountType { Spotify = 0x0; Facebook = 0x1; } message AccountInfo { optional AccountInfoSpotify spotify = 0x1; optional AccountInfoFacebook facebook = 0x2; } message AccountInfoSpotify { } message AccountInfoFacebook { optional string access_token = 0x1; optional string machine_id = 0x2; }