diff --git a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/api/EntityApi.java b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/api/EntityApi.java
index e5683ed..b3cae2f 100644
--- a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/api/EntityApi.java
+++ b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/api/EntityApi.java
@@ -221,9 +221,11 @@
             @ApiParam(value = "Entity ID or name", required = true)
             @PathParam("entity") String entity);
 
+    // see http://stackoverflow.com/questions/332129/yaml-mime-type for "@Produces"
     @GET
     @Path("/{entity}/spec")
     @ApiOperation(value = "Get the YAML spec used to create the entity, if available")
+    @Produces({"text/x-yaml", "application/x-yaml", "text/yaml", "text/plain", "application/yaml", MediaType.TEXT_PLAIN})
     @ApiResponses(value = {
             @ApiResponse(code = 404, message = "Application or entity missing")
     })
diff --git a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/EntityResource.java b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/EntityResource.java
index 4d263da..c67eaaa 100644
--- a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/EntityResource.java
+++ b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/EntityResource.java
@@ -218,6 +218,6 @@
         NamedStringTag spec = BrooklynTags.findFirst(BrooklynTags.YAML_SPEC_KIND, entity.tags().getTags());
         if (spec == null)
             return null;
-        return (String) WebResourceUtils.getValueForDisplay(spec.getContents(), true, true);
+        return (String) WebResourceUtils.getValueForDisplay(spec.getContents(), false, true);
     }
 }
diff --git a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/EntityResourceTest.java b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/EntityResourceTest.java
index decbcef..62ee189 100644
--- a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/EntityResourceTest.java
+++ b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/EntityResourceTest.java
@@ -18,6 +18,8 @@
  */
 package org.apache.brooklyn.rest.resources;
 
+import static org.testng.Assert.assertEquals;
+
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
@@ -30,6 +32,7 @@
 import org.apache.brooklyn.core.entity.EntityInternal;
 import org.apache.brooklyn.core.test.entity.TestEntity;
 import org.apache.brooklyn.entity.stock.BasicApplication;
+import org.apache.brooklyn.entity.stock.BasicEntity;
 import org.apache.brooklyn.rest.domain.ApplicationSpec;
 import org.apache.brooklyn.rest.domain.EntitySpec;
 import org.apache.brooklyn.rest.domain.TaskSummary;
@@ -46,6 +49,7 @@
 
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.common.base.Joiner;
 import com.google.common.base.Predicate;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
@@ -85,6 +89,44 @@
     }
 
     @Test
+    public void testGetSpecAcceptingXYaml() throws Exception {
+        testGetSpec("text/x-yaml");
+    }
+    
+    @Test
+    public void testGetSpecWithNoExplicitAccepts() throws Exception {
+        testGetSpec(null);
+    }
+    
+    protected void testGetSpec(String acceptMimeType) throws Exception {
+        String appName = "ent-with-spec";
+        
+        // Create an app with a yaml spec
+        String yaml = Joiner.on("\n").join(
+                "name: " + appName,
+                "services:",
+                "- type: "+BasicEntity.class.getName());
+        Response appResponse = client().path("/applications")
+                .header("Content-Type", "text/x-yaml")
+                .post(yaml);
+        waitForApplicationToBeRunning(appResponse.getLocation());
+
+        // Retrieve the yaml spec, and confirm it is as expected (not wrapped in quotes, and treating \n sensibly)
+        Response response;
+        if (acceptMimeType != null) {
+            response = client().path("/applications/" + appName + "/entities/" + appName + "/spec")
+                    .accept(acceptMimeType)
+                    .get();
+        } else {
+            response = client().path("/applications/" + appName + "/entities/" + appName + "/spec")
+                    .get();
+        }
+        String data = response.readEntity(String.class);
+
+        assertEquals(data.trim(), yaml.trim());
+    }
+    
+    @Test
     public void testTagsSanity() throws Exception {
         entity.tags().addTag("foo");
         
