syntax = "proto2";

message ProtocolMessage {
  extensions 6 to max;

  enum Type {
    UNKNOWN_MESSAGE = 0;
    SEND_COMMAND_MESSAGE = 1;
    SEND_COMMAND_RESULT_MESSAGE = 2;
    GET_STATE_MESSAGE = 3;
    SET_STATE_MESSAGE = 4;
    SET_ARTWORK_MESSAGE = 5;
    REGISTER_HID_DEVICE_MESSAGE = 6;
    REGISTER_HID_DEVICE_RESULT_MESSAGE = 7;
    SEND_HID_EVENT_MESSAGE = 8;
    SEND_HID_REPORT_MESSAGE = 9;
    SEND_VIRTUAL_TOUCH_EVENT_MESSAGE = 10;
    NOTIFICATION_MESSAGE = 11;
    CONTENT_ITEMS_CHANGED_NOTIFICATION_MESSAGE = 12;
    DEVICE_INFO_MESSAGE = 15; 
    CLIENT_UPDATES_CONFIG_MESSAGE = 16;
    VOLUME_CONTROL_AVAILABILITY_MESSAGE = 17;
    GAME_CONTROLLER_MESSAGE = 18;
    REGISTER_GAME_CONTROLLER_MESSAGE = 19;
    REGISTER_GAME_CONTROLLER_RESPONSE_MESSAGE = 20;
    UNREGISTER_GAME_CONTROLLER_MESSAGE = 21;
    REGISTER_FOR_GAME_CONTROLLER_EVENTS_MESSAGE = 22;
    KEYBOARD_MESSAGE = 23;
    GET_KEYBOARD_SESSION_MESSAGE = 24;
    TEXT_INPUT_MESSAGE = 25;
    GET_VOICE_INPUT_DEVICES_MESSAGE = 26;
    GET_VOICE_INPUT_DEVICES_RESPONSE_MESSAGE = 27;
    REGISTER_VOICE_INPUT_DEVICE_MESSAGE = 28;
    REGISTER_VOICE_INPUT_DEVICE_RESPONSE_MESSAGE = 29;
    SET_RECORDING_STATE_MESSAGE = 30;
    SEND_VOICE_INPUT_MESSAGE = 31;
    PLAYBACK_QUEUE_REQUEST_MESSAGE = 32;
    TRANSACTION_MESSAGE = 33;
    CRYPTO_PAIRING_MESSAGE = 34; 
    GAME_CONTROLLER_PROPERTIES_MESSAGE = 35;
    SET_READY_STATE_MESSAGE = 36;
    DEVICE_INFO_UPDATE_MESSAGE = 37;
    SET_CONNECTION_STATE_MESSAGE = 38;
    SEND_BUTTON_EVENT = 39;
    SET_HILITE_MODE_MESSAGE = 40;
    WAKE_DEVICE_MESSAGE = 41;
    GENERIC_MESSAGE = 42;
    SEND_PACKED_VIRTUAL_TOUCH_EVENT_MESSAGE = 43;
    SEND_LYRICS_EVENT = 44;
    SET_NOW_PLAYING_CLIENT_MESSAGE = 46;
    SET_NOT_PLAYING_PLAYER_MESSAGE = 47;
    UPDATE_CLIENT_MESSAGE = 55;
    UPDATE_CONTENT_ITEM_MESSAGE = 56;
    UPDATE_OUTPUT_DEVICE_MESSAGE = 65;
    SET_DEFAULT_SUPPORTED_COMMANDS_MESSAGE = 72;
  }

  optional Type type = 1; // Identifies which underlying message is filled in.
  optional string identifier = 2;
  optional string authenticationToken = 3;
  optional uint32 errorCode = 4;
  optional uint64 timestamp = 5;
}
