diff --git a/Documentation/rest-api-changes.txt b/Documentation/rest-api-changes.txt
index f3dc24a..233c514 100644
--- a/Documentation/rest-api-changes.txt
+++ b/Documentation/rest-api-changes.txt
@@ -7617,6 +7617,9 @@
 |`branch`             ||
 The name of the target branch. +
 The `refs/heads/` prefix is omitted.
+|`full_branch`             ||
+The full name of the target branch. +
+Always starts with `refs/`.
 |`subject`            ||
 The commit message of the change. Comment lines (beginning with `#`)
 will be removed. If the commit message contains a Change-Id (as a
diff --git a/java/com/google/gerrit/extensions/common/ChangeInfo.java b/java/com/google/gerrit/extensions/common/ChangeInfo.java
index 28d99de..c7b7054 100644
--- a/java/com/google/gerrit/extensions/common/ChangeInfo.java
+++ b/java/com/google/gerrit/extensions/common/ChangeInfo.java
@@ -40,7 +40,21 @@
   public String tripletId;
 
   public String project;
+
+  /**
+   * The name of the target branch.
+   *
+   * <p>The {@code refs/heads/} prefix is omitted.
+   */
   public String branch;
+
+  /**
+   * The full name of the target branch.
+   *
+   * <p>Always starts with {@code refs/}.
+   */
+  public String fullBranch;
+
   public String topic;
 
   /**
diff --git a/java/com/google/gerrit/server/change/ActionJson.java b/java/com/google/gerrit/server/change/ActionJson.java
index 950d390..3bc3b6d 100644
--- a/java/com/google/gerrit/server/change/ActionJson.java
+++ b/java/com/google/gerrit/server/change/ActionJson.java
@@ -119,6 +119,7 @@
     ChangeInfo copy = new ChangeInfo();
     copy.project = changeInfo.project;
     copy.branch = changeInfo.branch;
+    copy.fullBranch = changeInfo.fullBranch;
     copy.topic = changeInfo.topic;
     copy.attentionSet =
         changeInfo.attentionSet == null ? null : ImmutableMap.copyOf(changeInfo.attentionSet);
diff --git a/java/com/google/gerrit/server/change/ChangeJson.java b/java/com/google/gerrit/server/change/ChangeJson.java
index 41e02ca..fb2db3a 100644
--- a/java/com/google/gerrit/server/change/ChangeJson.java
+++ b/java/com/google/gerrit/server/change/ChangeJson.java
@@ -611,6 +611,7 @@
     if (c != null) {
       info.project = c.getProject().get();
       info.branch = c.getDest().shortName();
+      info.fullBranch = c.getDest().branch();
       info.topic = c.getTopic();
       info.changeId = c.getKey().get();
       info.subject = c.getSubject();
@@ -663,6 +664,7 @@
     Change in = cd.change();
     out.project = in.getProject().get();
     out.branch = in.getDest().shortName();
+    out.fullBranch = in.getDest().branch();
     out.currentRevisionNumber = in.currentPatchSetId().get();
     out.topic = in.getTopic();
     if (!cd.attentionSet().isEmpty()) {
@@ -1136,6 +1138,7 @@
     }
     info.project = c.getProject().get();
     info.branch = c.getDest().shortName();
+    info.fullBranch = c.getDest().branch();
     info.changeId = c.getKey().get();
     info._number = c.getId().get();
     info.subject = "***ERROR***";
diff --git a/javatests/com/google/gerrit/acceptance/api/change/ChangeIT.java b/javatests/com/google/gerrit/acceptance/api/change/ChangeIT.java
index dc1ee97..0801328 100644
--- a/javatests/com/google/gerrit/acceptance/api/change/ChangeIT.java
+++ b/javatests/com/google/gerrit/acceptance/api/change/ChangeIT.java
@@ -270,6 +270,7 @@
     assertThat(changeInfo.id).isEqualTo(change.project() + "~" + change.numericChangeId());
     assertThat(changeInfo.project).isEqualTo(change.project().get());
     assertThat(changeInfo.branch).isEqualTo(change.dest().shortName());
+    assertThat(changeInfo.fullBranch).isEqualTo(change.dest().branch());
     assertThat(changeInfo.status).isEqualTo(ChangeStatus.NEW);
     assertThat(changeInfo.subject).isEqualTo(change.subject());
     assertThat(changeInfo.submitType).isEqualTo(SubmitType.MERGE_IF_NECESSARY);
@@ -2796,7 +2797,8 @@
     in.project = project.get();
     ChangeInfo info = gApi.changes().create(in).get();
     assertThat(info.project).isEqualTo(in.project);
-    assertThat(RefNames.fullName(info.branch)).isEqualTo(RefNames.fullName(in.branch));
+    assertThat(info.branch).isEqualTo(Constants.MASTER);
+    assertThat(info.fullBranch).isEqualTo(RefNames.fullName(Constants.MASTER));
     assertThat(info.subject).isEqualTo(in.subject);
     assertThat(Iterables.getOnlyElement(info.messages).message).isEqualTo("Uploaded patch set 1.");
   }
@@ -3556,7 +3558,8 @@
     in.newBranch = true;
     ChangeInfo info = gApi.changes().create(in).get();
     assertThat(info.project).isEqualTo(in.project);
-    assertThat(RefNames.fullName(info.branch)).isEqualTo(RefNames.fullName(in.branch));
+    assertThat(info.branch).isEqualTo("foo");
+    assertThat(info.fullBranch).isEqualTo(RefNames.fullName("foo"));
     assertThat(info.subject).isEqualTo(in.subject);
     assertThat(Iterables.getOnlyElement(info.messages).message).isEqualTo("Uploaded patch set 1.");
   }
