blob: be04e971ce2a0544357d4ddbeeed32797eba4345 [file] [log] [blame]
// Copyright (C) 2018 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto2";
package devtools.gerritcodereview;
option java_package = "com.google.gerrit.proto";
// Serialized form of com.google.gerrit.entities.Change.Id.
// Next ID: 2
message Change_Id {
required int32 id = 1;
}
// Serialized form of com.google.gerrit.entities.Change.Key.
// Next ID: 2
message Change_Key {
optional string id = 1;
}
// Serialized form of com.google.gerrit.entities.Change.
// Next ID: 26
message Change {
required Change_Id change_id = 1;
optional Change_Key change_key = 2;
optional fixed64 created_on = 4;
optional fixed64 last_updated_on = 5;
optional Account_Id owner_account_id = 7;
optional Branch_NameKey dest = 8;
optional uint32 status = 10;
optional int32 current_patch_set_id = 12;
optional string subject = 13;
optional string topic = 14;
optional string original_subject = 17;
optional string submission_id = 18;
optional bool is_private = 20;
optional bool work_in_progress = 21;
optional bool review_started = 22;
optional Change_Id revert_of = 23;
optional PatchSet_Id cherry_pick_of = 24;
optional string server_id = 25;
// Deleted fields, should not be reused:
reserved 3; // row_version
reserved 6; // sortkey
reserved 9; // open
reserved 11; // nbrPatchSets
reserved 15; // lastSha1MergeTested
reserved 16; // mergeable
reserved 19; // assignee
reserved 101; // note_db_state
}
// Serialized form of com.google.gerrit.extensions.common.ChangeInput.
// Next ID: 19
message ChangeInput {
optional string project = 1;
optional string branch = 2;
optional string subject = 3;
optional string topic = 4;
optional ChangeStatus status = 5;
optional bool is_private = 6;
optional bool work_in_progress = 7;
optional string base_change = 8;
optional string base_commit = 9;
optional bool new_branch = 10;
map<string, string> validation_options = 11;
map<string, string> custom_keyed_values = 12;
optional MergeInput merge = 13;
optional ApplyPatchInput patch = 14;
optional AccountInput author = 15;
repeated ListChangesOption response_format_options = 16;
optional NotifyHandling notify = 17 [default = ALL];
// The key is the string representation of the RecipientType enum.
// We use a string here because proto does not allow enum keys in maps.
map<string, NotifyInfo> notify_details = 18;
}
// Serialized form of com.google.gerrit.enities.ChangeMessage.
// Next ID: 3
message ChangeMessage_Key {
required Change_Id change_id = 1;
required string uuid = 2;
}
// Serialized form of com.google.gerrit.entities.ChangeMessage.
// Next ID: 8
message ChangeMessage {
required ChangeMessage_Key key = 1;
optional Account_Id author_id = 2;
optional fixed64 written_on = 3;
optional string message = 4;
optional PatchSet_Id patchset = 5;
optional string tag = 6;
optional Account_Id real_author = 7;
}
// Serialized form of com.google.gerrit.extensions.client.ChangeStatus.
// Next ID: 3
enum ChangeStatus {
NEW = 0;
MERGED = 1;
ABANDONED = 2;
}
// Serialized form of com.google.gerrit.extensions.common.MergeInput.
// Next ID: 5
message MergeInput {
optional string source = 1;
optional string source_branch = 2;
optional string strategy = 3;
optional bool allow_conflicts = 4;
}
// Serialized form of com.google.gerrit.extensions.api.changes.ApplyPatchInput.
// Next ID: 2
message ApplyPatchInput {
optional string patch = 1;
}
// Serialized form of com.google.gerrit.extensions.api.accounts.AccountInput.
// Next ID: 8
message AccountInput {
optional string username = 1;
optional string name = 2;
optional string display_name = 3;
optional string email = 4;
optional string ssh_key = 5;
optional string http_password = 6;
repeated string groups = 7;
}
// Serialized form of com.google.gerrit.extensions.client.ListChangesOption.
// Next ID: 28
enum ListChangesOption {
LABELS = 0;
CURRENT_REVISION = 1;
ALL_REVISIONS = 2;
CURRENT_COMMIT = 3;
ALL_COMMITS = 4;
CURRENT_FILES = 5;
ALL_FILES = 6;
DETAILED_ACCOUNTS = 7;
DETAILED_LABELS = 8;
MESSAGES = 9;
CURRENT_ACTIONS = 10;
REVIEWED = 11;
DRAFT_COMMENTS = 12;
DOWNLOAD_COMMANDS = 13;
WEB_LINKS = 14;
CHECK = 15;
CHANGE_ACTIONS = 16;
COMMIT_FOOTERS = 17;
PUSH_CERTIFICATES = 18;
REVIEWER_UPDATES = 19;
SUBMITTABLE = 20;
TRACKING_IDS = 21;
SKIP_MERGEABLE = 22;
SKIP_DIFFSTAT = 23;
SUBMIT_REQUIREMENTS = 24;
CUSTOM_KEYED_VALUES = 25;
STAR = 26;
PARENTS = 27;
}
// Serialized form of com.google.gerrit.extensions.api.changes.NotifyHandling.
// Next ID: 4
enum NotifyHandling {
NONE = 0;
OWNER = 1;
OWNER_REVIEWERS = 2;
ALL = 3;
}
// Serialized form of com.google.gerrit.extensions.api.changes.RecipientType.
// Next ID: 3
enum RecipientType {
TO = 0;
CC = 1;
BCC = 2;
}
// Serialized form of com.google.gerrit.extensions.api.changes.NotifyInfo.
// Next ID: 2
message NotifyInfo {
repeated string accounts = 1;
}
// Serialized form of com.google.gerrit.entities.PatchSet.Id.
// Next ID: 3
message PatchSet_Id {
required Change_Id change_id = 1;
required int32 id = 2;
}
// Serialized form of com.google.gerrit.entities.PatchSet.
// Next ID: 12
message PatchSet {
required PatchSet_Id id = 1;
optional ObjectId commitId = 2;
optional Account_Id uploader_account_id = 3;
optional fixed64 created_on = 4;
optional string groups = 6;
optional string push_certificate = 8;
optional string description = 9;
optional Account_Id real_uploader_account_id = 10;
optional string branch = 11;
// Deleted fields, should not be reused:
reserved 5; // draft
reserved 7; // pushCertficate
}
// Serialized form of com.google.gerrit.entities.Account.Id.
// Next ID: 2
message Account_Id {
required int32 id = 1;
}
// Serialized form of com.google.gerrit.entities.LabelId.
// Next ID: 2
message LabelId {
required string id = 1;
}
// Serialized form of com.google.gerrit.entities.PatchSetApproval.Key.
// Next ID: 4
message PatchSetApproval_Key {
required PatchSet_Id patch_set_id = 1;
required Account_Id account_id = 2;
required LabelId label_id = 3;
}
// Serialized form of com.google.gerrit.entities.PatchSetApproval.
// Next ID: 11
message PatchSetApproval {
required PatchSetApproval_Key key = 1;
optional int32 value = 2;
optional fixed64 granted = 3;
optional string tag = 6;
optional Account_Id real_account_id = 7;
optional bool post_submit = 8;
optional bool copied = 9;
optional string uuid = 10;
// Deleted fields, should not be reused:
reserved 4; // changeOpen
reserved 5; // changeSortKey
}
// Serialized form of com.google.gerrit.entities.Project.NameKey.
// Next ID: 2
message Project_NameKey {
optional string name = 1;
}
// Serialized form of com.google.gerrit.entities.Branch.NameKey.
// Next ID: 3
message Branch_NameKey {
optional Project_NameKey project = 1;
optional string branch = 2;
}
// Serialized form of org.eclipse.jgit.lib.ObjectId.
// Next ID: 2
message ObjectId {
// Hex string representation of the ID.
optional string name = 1;
}
// Serialized form of a continuation token used for pagination.
// Next ID: 2
message PaginationToken {
optional string next_page_token = 1;
}
// Proto representation of the User preferences classes
// Next ID: 4
message UserPreferences {
// Next ID: 24
message GeneralPreferencesInfo {
// Number of changes to show in a screen.
optional int32 changes_per_page = 1 [default = 25];
// Type of download URL the user prefers to use. */
optional string download_scheme = 2;
enum Theme {
AUTO = 0;
DARK = 1;
LIGHT = 2;
}
optional Theme theme = 3;
enum DateFormat {
STD = 0;
US = 1;
ISO = 2;
EURO = 3;
UK = 4;
}
optional DateFormat date_format = 4;
enum TimeFormat {
HHMM_12 = 0;
HHMM_24 = 1;
}
optional TimeFormat time_format = 5;
optional bool expand_inline_diffs = 6;
optional bool relative_date_in_change_table = 20;
enum DiffView {
SIDE_BY_SIDE = 0;
UNIFIED_DIFF = 1;
}
optional DiffView diff_view = 21;
optional bool size_bar_in_change_table = 22 [default = true];
optional bool legacycid_in_change_table = 7;
optional bool mute_common_path_prefixes = 8 [default = true];
optional bool signed_off_by = 9;
enum EmailStrategy {
ENABLED = 0;
CC_ON_OWN_COMMENTS = 1;
ATTENTION_SET_ONLY = 2;
DISABLED = 3;
}
optional EmailStrategy email_strategy = 10;
enum EmailFormat {
PLAINTEXT = 0;
HTML_PLAINTEXT = 1;
}
optional EmailFormat email_format = 11 [default = HTML_PLAINTEXT];
enum DefaultBase {
AUTO_MERGE = 0;
FIRST_PARENT = 1;
}
optional DefaultBase default_base_for_merges = 12 [default = FIRST_PARENT];
optional bool publish_comments_on_push = 13;
optional bool disable_keyboard_shortcuts = 14;
optional bool disable_token_highlighting = 15;
optional bool work_in_progress_by_default = 16;
message MenuItem {
optional string url = 1;
optional string name = 2;
optional string target = 3;
optional string id = 4;
}
repeated MenuItem my_menu_items = 17;
repeated string change_table = 18;
optional bool allow_browser_notifications = 19 [default = true];
optional string diff_page_sidebar = 23 [default = "NONE"];
}
optional GeneralPreferencesInfo general_preferences_info = 1;
// Next ID: 25
message DiffPreferencesInfo {
optional int32 context = 1 [default = 10];
optional int32 tab_size = 2 [default = 8];
optional int32 font_size = 3 [default = 12];
optional int32 line_length = 4 [default = 100];
optional int32 cursor_blink_rate = 5;
optional bool expand_all_comments = 6;
optional bool intraline_difference = 7 [default = true];
optional bool manual_review = 8;
optional bool show_line_endings = 9 [default = true];
optional bool show_tabs = 10 [default = true];
optional bool show_whitespace_errors = 11 [default = true];
optional bool syntax_highlighting = 12 [default = true];
optional bool hide_top_menu = 13;
optional bool auto_hide_diff_table_header = 14 [default = true];
optional bool hide_line_numbers = 15;
optional bool render_entire_file = 16;
optional bool hide_empty_pane = 17;
optional bool match_brackets = 18;
optional bool line_wrapping = 19;
enum Whitespace {
IGNORE_NONE = 0;
IGNORE_TRAILING = 1;
IGNORE_LEADING_AND_TRAILING = 2;
IGNORE_ALL = 3;
}
optional Whitespace ignore_whitespace = 20;
optional bool retain_header = 21;
optional bool skip_deleted = 22;
optional bool skip_unchanged = 23;
optional bool skip_uncommented = 24;
}
optional DiffPreferencesInfo diff_preferences_info = 2;
// Next ID: 15
message EditPreferencesInfo {
optional int32 tab_size = 1 [default = 8];
optional int32 line_length = 2 [default = 100];
optional int32 indent_unit = 3 [default = 2];
optional int32 cursor_blink_rate = 4;
optional bool hide_top_menu = 5;
optional bool show_tabs = 6 [default = true];
optional bool show_whitespace_errors = 7;
optional bool syntax_highlighting = 8 [default = true];
optional bool hide_line_numbers = 9;
optional bool match_brackets = 10 [default = true];
optional bool line_wrapping = 11;
optional bool indent_with_tabs = 12;
optional bool auto_close_brackets = 13;
optional bool show_base = 14;
}
optional EditPreferencesInfo edit_preferences_info = 3;
}
// Next Id: 13
message HumanComment {
// Required. Note that the equivalent Java struct does not contain the change
// ID, so we keep the same format here.
optional int32 patchset_id = 1;
optional ObjectId dest_commit_id = 2;
// Required.
optional Account_Id account_id = 3;
optional Account_Id real_author = 4;
// Next Id: 5
message InFilePosition {
optional string file_path = 1;
enum Side {
// Should match the logic in
// http://google3/third_party/java_src/gerritcodereview/gerrit/java/com/google/gerrit/extensions/client/Side.java?rcl=579772037&l=24
PARENT = 0;
REVISION = 1;
}
// Default should match
// http://google3/third_party/java_src/gerritcodereview/gerrit/Documentation/rest-api-changes.txt?l=7423
optional Side side = 2 [default = REVISION];
message Range {
// 1-based
optional int32 start_line = 1;
// 0-based
optional int32 start_char = 2;
// 1-based
optional int32 end_line = 3;
// 0-based
optional int32 end_char = 4;
}
// If neither range nor line number set, the comment is on the file level. It is possible
// (though not required) for both values to be set. in this case, it is expected that the line
// number is identical to the range's end line.
optional Range position_range = 3;
// 1-based
optional int32 line_number = 4;
}
// If not set, the comment is on the patchset level.
optional InFilePosition in_file_position = 5;
// Required.
optional string comment_text = 6;
// Might be set by the user while creating the draft.
// See http://go/gerrit-rest-api-change#comment-info.
optional string tag = 7;
optional bool unresolved = 8 [default = false];
// Required.
optional string comment_uuid = 9;
// Required.
optional string parent_comment_uuid = 10;
// Required. Epoch millis.
optional fixed64 written_on_millis = 11;
// Required.
optional string server_id = 12;
}