diff --git a/README.md b/README.md
index 01d6d17057218730402f08f6eb54c87955a3d7e5..92937115d5ed74bae423a6cbc595242aee334d66 100644
--- a/README.md
+++ b/README.md
@@ -36,8 +36,38 @@ xmllint --valid --noout 11044_17_DCC_v1.8.1_Au.xml
 > ./server
 ```
 
-### Example
+## API
 
-'``
-curl -X POST -H "Content-Type: text/xml" -d @11044_17_DCC_v1.8.1_Au.xml http://localhost:5005/is_valid
-```
\ No newline at end of file
+### /is_valid endpoint [POST]
+
+
+```
+> curl -X POST -H "Content-Type: text/xml" -d @valid_xml_matches_xsd http://localhost:5005/is_valid
+> <ok/>
+```
+
+```
+> curl -X POST -H "Content-Type: text/xml" -d @no_valid_xml http://localhost:5005/is_valid
+> <error>unvalid xml data</error>
+```
+
+```
+> curl -X POST -H "Content-Type: text/xml" -d @valid_xml_but_dont_matches_xsd http://localhost:5005/is_valid
+> <error>not valid</error>
+```
+
+Example:
+
+```
+> curl -X POST -H "Content-Type: text/xml" -d @11044_17_DCC_v1.8.1_Au.xml http://localhost:5005/is_valid
+> <ok/>
+```
+
+### /version [GET]
+
+Returns the version of the validation server:
+
+```
+> curl http://localhost:5005/version
+> <version>0.2.0</version>
+```
diff --git a/server.py b/server.py
index f69351458fb6612b8818e78f2cc68ef9635cdc78..3ffa39482e1059d6fe2ec3a9a5107328063f2f6e 100644
--- a/server.py
+++ b/server.py
@@ -1,4 +1,4 @@
-from flask import Flask, request, Response
+from flask import Flask, request
 from flask_cors import CORS
 import utils as utils
 
@@ -14,7 +14,19 @@ CORS(app)
 @app.route('/version', methods=['get'])
 def version():
     app.logger.debug('hit version')
-    return  Response(git_cmd.describe(), content_type='text/xml; charset=utf-8')
+    ret = '<version>{version}</version>'.format(version=git_cmd.describe())
+
+    return utils.xml_response(ret)
+
+@app.route('/update', methods=['post'])
+def update():
+    app.logger.debug('hit update')
+    req = request.get_json()
+    git_cmd.pull()
+    app.logger.info("pulled {log}".format(log=g.log("-n 1")))
+    ret = '<ok/>'
+
+    return utils.xml_response(ret)
 
 @app.route('/update_xsd', methods=['post'])
 def update_xsd():
@@ -24,7 +36,7 @@ def update_xsd():
     if xsd_xml:
         res = utils.save_xsd(config, xsd_str, xsd_file_name)
     
-    return  Response(res, content_type='text/xml; charset=utf-8')
+    return  utils.xml_response(ret)
 
 
 @app.route('/is_valid', methods=['post'])
@@ -38,11 +50,12 @@ def is_valid():
         if res:
             ret = '<ok/>'
         else:
-            ret = '<error/>'
+            ret = '<error>not valid</error>'
+    else:
+        ret = '<error>unvalid xml data</error>'
 
-    return  Response(ret, content_type='text/xml; charset=utf-8')
+    return  utils.xml_response(ret)
 
 
 if __name__ == '__main__':
-
     app.run(host=config['server']['host'], port=config['server']['port'])
\ No newline at end of file
diff --git a/utils.py b/utils.py
index 44aa9d2e054f0207c45931175c64fd8240828567..d001765d71a2e95ce5a5909563769c2114996515 100644
--- a/utils.py
+++ b/utils.py
@@ -1,6 +1,7 @@
 import json
 import git
 import requests
+from flask import Response
 from xml.etree import ElementTree as ET
 import xmlschema
 
@@ -14,18 +15,25 @@ def get_config_dict():
 def git_cmd(config):
     return git.cmd.Git(config['git']['dir'])
 
+def get_xsd_url(config, xsd_name):
+    return "{uri}/{xsd_name}".format(uri=config['xsd']['url'], xsd_name=xsd_name)
+
+def get_xsd_path_file(config, xsd_name):
+    return "{dir}/{xsd_name}".format(dir=config['xsd']['dir'], xsd_name=xsd_name)
+
 def get_xsd(config, xsd_name, from_server=True):
     if from_server:
-        url = "{uri}/{xsd_name}".format(uri=config['xsd']['url'], xsd_name=xsd_name)
+        url = get_xsd_url(config, xsd_name)
         xsd_str = requests.get(url).text
     else:
-        path_file = "{dir}/{xsd_name}".format(dir=config['xsd']['dir'], xsd_name=xsd_name)
+        path_file = get_xsd_path_file(config, xsd_name)
         xsd_str = open(path_file).read()
 
     return xsd_str
 
-def save_xsd(config, xsd_str, file_name):
-    file = open("{dir}/{file}".format (dir = config['xsd']['dir'], file=file_name), "w")
+def save_xsd(config, xsd_str, xsd_name):
+    path_file = get_xsd_path_file(config, xsd_name)
+    file = open(path_file, "w")
     file.write(xsd_str)  
     
     return 'ok'
@@ -46,4 +54,5 @@ def is_valid(xml_str, xsd_str):
     else:
         return False
     
-    
\ No newline at end of file
+def xml_response(xml_str):
+    return Response(xml_str, content_type='text/xml; charset=utf-8')
\ No newline at end of file