diff --git a/moondb.py b/moondb.py
new file mode 100755
index 0000000000000000000000000000000000000000..de3cc4e60031f56e7ac2964fa848ddd04c53fe8a
--- /dev/null
+++ b/moondb.py
@@ -0,0 +1,87 @@
+#!/usr/bin/python
+# 
+# Alessandro Frigeri 2019 
+# 
+# MoonDB Python module
+# https://realpython.com/api-integration-in-python/
+
+import requests
+import json 
+
+def _url(path):
+   return "http://api.moondb.org" + path
+
+def get_specimen():
+   pass
+
+def get_specimentype():
+   pass
+
+def get_mission():
+   pass
+
+def _check_resp(resp):
+   if resp.status_code != 200:
+      #raise ApiError('Cannot fetch all objects: {}'.format(resp.status_code))
+      pass
+
+def _json_object_hook(d): 
+   return namedtuple('X', d.keys())(*d.values())
+
+def json2obj(data): 
+   return json.loads(data, object_hook=_json_object_hook)
+
+def get_analytes():
+   analytes = []
+   resp = requests.get(_url('/cv/analytes/'))
+   _check_resp(resp)
+   for m_item in resp.json()['result']:
+      analytes.append( Analyte(m_item['name'] ))
+   return analytes
+
+def get_missions():
+   missions = []
+   resp = requests.get(_url('/authorities/missions/'))
+   _check_resp(resp)
+   for m_item in resp.json()['result']:
+      missions.append( Mission(m_item['name'] ))
+      print(m_item)
+      this_m = json.loads( "{'name': 'Apollo 11'}" )
+   return missions
+
+def get_missions2():
+   resp = requests.get(_url('/authorities/missions/'))
+   #m2 = json.loads(resp)
+   print(resp)
+   return resp.json()['result']   
+
+def get_landmark():
+   pass
+
+def get_samplingtechnique():
+   pass
+
+
+class Filter:
+   def __init__(self):
+      self.mission = None
+      
+
+class Mission:
+   def __init__(self,name):
+      self.name = name
+
+class AnalysisMethos:
+   def __init__(self,code,name):
+      self.name = name
+      self.code = code
+
+class Analyte:
+   def __init__(self,name):
+      self.name = name
+
+
+
+if __name__ == "__main__":
+   m = get_missions()
+   print m