// Copyright 2009 Google Inc. All Rights Reserved.
// Author: morgwai@google.com (Morgwai Kotarbinski)
//
// Basic messages used by all systems (extension, feedbackserver,
// silver-bullet clustering, android etc).

syntax = "proto2";

option optimize_for = LITE_RUNTIME;

package userfeedback;

// Data present in all kinds of feedbacks, regardless of source (Web, Android,
// other).
message CommonData {
  optional fixed64 gaia_id = 1;

  // Description of the problem entered by user.
  optional string description = 2;
  optional string description_translated = 4;
  optional string source_description_language = 5 [ default = "en" ];
  optional string ui_language = 6 [ default = "en_US" ];

  optional string user_email = 3;
  
  // Unique identifier of feedback report. If set than only one report
  // with the same identifier is stored in the system.
  // If you are not sure how to use it leave it not set.
  optional string unique_report_identifier = 7;
};
