diff --git a/common/recipes-devtools/python/bottle/LICENSE b/common/recipes-devtools/python/bottle/LICENSE
new file mode 100644
index 0000000..5f3e8de
--- /dev/null
+++ b/common/recipes-devtools/python/bottle/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2014, Marcel Hellkamp.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/common/recipes-devtools/python/bottle/json-format.patch b/common/recipes-devtools/python/bottle/json-format.patch
new file mode 100644
index 0000000..9e754a9
--- /dev/null
+++ b/common/recipes-devtools/python/bottle/json-format.patch
@@ -0,0 +1,31 @@
+Index: bottle-0.12.9/bottle.py
+===================================================================
+--- bottle-0.12.9.orig/bottle.py
++++ bottle-0.12.9/bottle.py
+@@ -1721,8 +1721,10 @@ class JSONPlugin(object):
+     name = 'json'
+     api  = 2
+ 
+-    def __init__(self, json_dumps=json_dumps):
++    def __init__(self, json_dumps=json_dumps, **kw):
+         self.json_dumps = json_dumps
++        self.json_kw = { x:y for x,y in kw.iteritems() \
++                     if x in ['indent','sort_keys'] }
+ 
+     def apply(self, callback, route):
+         dumps = self.json_dumps
+@@ -1735,12 +1737,12 @@ class JSONPlugin(object):
+ 
+             if isinstance(rv, dict):
+                 #Attempt to serialize, raises exception on failure
+-                json_response = dumps(rv)
++                json_response = dumps(rv, **self.json_kw)
+                 #Set content type only if serialization succesful
+                 response.content_type = 'application/json'
+                 return json_response
+             elif isinstance(rv, HTTPResponse) and isinstance(rv.body, dict):
+-                rv.body = dumps(rv.body)
++                rv.body = dumps(rv.body, **self.json_kw)
+                 rv.content_type = 'application/json'
+             return rv
+ 
