update Documentation
authorSandro Knauß <knauss@netzguerilla.net>
Tue, 06 Dec 2011 23:53:18 +0100
changeset 73 f2f247a5b6c9
parent 72 e7b44716a564
child 74 c471fed3cab8
update Documentation
createdoc.py
doc/current.html
doc/new.html
doc/tmpl/current.html
doc/tmpl/new.html
iro/newuser.py
iro/user.py
--- a/createdoc.py	Tue Dec 06 19:46:00 2011 +0100
+++ b/createdoc.py	Tue Dec 06 23:53:18 2011 +0100
@@ -7,10 +7,10 @@
 
 import re
 import inspect
-from iro.user import User
+from iro.user import User as Current
+from iro.newuser import User as New
 
 
-user_methods = dict(inspect.getmembers(User(None,None)))
 
 class Link():
     def __init__(self,name,title):
@@ -47,7 +47,7 @@
             if kw:
                 ret[kw.name]=kw
                 li.append(kw)
-            l=re.match(r"^(?P<name>[a-zA-Z0-9-_.]*)\[(?P<typ>[a-zA-Z0-9-_]*)\]:(?P<d>.*)$",line)
+            l=re.match(r"^(?P<name>[a-zA-Z0-9-_.]*)\[(?P<typ>[a-zA-Z0-9-_|]*)\]:(?P<d>.*)$",line)
             kw=Keyword(name=l.group("name"),typ=l.group("typ"),description=l.group("d"))
         else:
             kw.description+="\n"+line.strip()
@@ -87,9 +87,11 @@
         
 
 class Method(Link):
-    def __init__(self,name,title):
+    def __init__(self,name,methods):
+        title=name[0].upper()+name[1:]
         Link.__init__(self,name,title)
-        m=user_methods[name]
+        m=methods[name]
+        self.func_line=inspect.formatargspec(*inspect.getargspec(m))
         self.description = m.__doc__.split("\n")[0]
         a=inspect.getargspec(m)
         self.args=[Arg(a,m) for a in a.args if a is not "self"]
@@ -103,24 +105,40 @@
            Site("impressum.html","Impressum"),
            ]
 
-    methods=[
-            Method("startSMS","StartSMS"),
-            Method("startFAX","StartFAX"),
-            Method("startMail","StartMail"),
+    current_methods = dict(inspect.getmembers(Current(None,None)))
+    current=[
+            Method("startSMS",current_methods),
+            Method("startFAX",current_methods),
+            Method("startMail",current_methods),
+            
+            Method("status",current_methods),
+            Method("stop",current_methods),
             
-            Method("status","Status"),
-            Method("stop","Stop"),
+            Method("getProvider",current_methods),
+            Method("getDefaultProvider",current_methods),
+            ]
+
+    new_methods = dict(inspect.getmembers(New()))
+    newm=[
+            Method("sms",new_methods),
+            Method("fax",new_methods),
+            Method("mail",new_methods),
             
-            Method("getProvider","GetProvider"),
-            Method("getDefaultProvider","GetDefaultProvider"),
+            Method("status",new_methods),
+            Method("stop",new_methods),
+            
+            Method("routes",new_methods),
+            Method("defaultRoute",new_methods),
             ]
+
+
     for site in sites:
         print("generiere %s" % site.name)
         tmpl = loader.load(site.name)
         def a(s):
             if s == site:
                 return {"class":"menu active"}
-        stream = tmpl.generate(sites=sites,active=a,methods=methods)
+        stream = tmpl.generate(sites=sites,active=a,current=current,new=newm)
         with open('doc/'+site.name, "w") as g:
             g.write(stream.render('html', doctype='html'))
 
--- a/doc/current.html	Tue Dec 06 19:46:00 2011 +0100
+++ b/doc/current.html	Tue Dec 06 23:53:18 2011 +0100
@@ -68,7 +68,7 @@
 			<h3>Methoden</h3>
 			<div class="item" id="method-startSMS">
 				<h4>StartSMS</h4>
-				<p><code>startSMS</code></p>
+				<p><code>startSMS(self, message, recipients, provider='default')</code></p>
 				<p>Versendet eine SMS.</p>
 				<h5>Parameter</h5>
 				<table class="docs">
@@ -91,8 +91,7 @@
 						</tr><tr>
 							<td>provider</td>
 							<td>string</td>
-							<td> Provider über den geschickt werden soll;
-default - verschickt über den Standardprovider</td>
+							<td> Provider über den geschickt werden soll</td>
 						</tr>
 					</tbody>
 				</table>
@@ -115,7 +114,7 @@
 				</table>
 			</div><div class="item" id="method-startFAX">
 				<h4>StartFAX</h4>
-				<p><code>startFAX</code></p>
+				<p><code>startFAX(self, subject, fax, recipients, provider='default')</code></p>
 				<p>Versendet ein FAX.</p>
 				<h5>Parameter</h5>
 				<table class="docs">
@@ -142,8 +141,7 @@
 						</tr><tr>
 							<td>provider</td>
 							<td>string</td>
-							<td> Provider über den geschickt werden soll;
-default - verschickt über den Standardprovider</td>
+							<td> Provider über den geschickt werden soll</td>
 						</tr>
 					</tbody>
 				</table>
@@ -166,7 +164,7 @@
 				</table>
 			</div><div class="item" id="method-startMail">
 				<h4>StartMail</h4>
-				<p><code>startMail</code></p>
+				<p><code>startMail(self, subject, body, recipients, frm, provider='default')</code></p>
 				<p>Versendet eine Email.</p>
 				<h5>Parameter</h5>
 				<table class="docs">
@@ -197,8 +195,7 @@
 						</tr><tr>
 							<td>provider</td>
 							<td>string</td>
-							<td> Provider über den geschickt werden soll;
-default - verschickt über den Standardprovider</td>
+							<td> Provider über den geschickt werden soll</td>
 						</tr>
 					</tbody>
 				</table>
@@ -221,7 +218,7 @@
 				</table>
 			</div><div class="item" id="method-status">
 				<h4>Status</h4>
-				<p><code>status</code></p>
+				<p><code>status(self, id=None, detailed=False)</code></p>
 				<p>Gibt den aktuellen Status eines Auftrages zurück.</p>
 				<h5>Parameter</h5>
 				<table class="docs">
@@ -236,13 +233,11 @@
 						<tr>
 							<td>id</td>
 							<td>hash</td>
-							<td> Eine Auftragsnummer
-default - alle Aufträge ausgeben</td>
+							<td> Eine Auftragsnummer</td>
 						</tr><tr>
 							<td>detailed</td>
 							<td>boolean</td>
-							<td> Details ausgeben
-default - False</td>
+							<td> Details ausgeben</td>
 						</tr>
 					</tbody>
 				</table>
@@ -273,7 +268,7 @@
 				</table>
 			</div><div class="item" id="method-stop">
 				<h4>Stop</h4>
-				<p><code>stop</code></p>
+				<p><code>stop(self, id)</code></p>
 				<p>Stoppt den angegeben Auftrag.</p>
 				<h5>Parameter</h5>
 				<table class="docs">
@@ -294,7 +289,7 @@
 				</table>
 			</div><div class="item" id="method-getProvider">
 				<h4>GetProvider</h4>
-				<p><code>getProvider</code></p>
+				<p><code>getProvider(self, typ)</code></p>
 				<p>Gibt eine Liste aller verfügbaren Provider zurück.</p>
 				<h5>Parameter</h5>
 				<table class="docs">
@@ -333,7 +328,7 @@
 				</table>
 			</div><div class="item" id="method-getDefaultProvider">
 				<h4>GetDefaultProvider</h4>
-				<p><code>getDefaultProvider</code></p>
+				<p><code>getDefaultProvider(self, typ)</code></p>
 				<p>Gibt den Standardprovider zurück.</p>
 				<h5>Parameter</h5>
 				<table class="docs">
--- a/doc/new.html	Tue Dec 06 19:46:00 2011 +0100
+++ b/doc/new.html	Tue Dec 06 23:53:18 2011 +0100
@@ -36,6 +36,7 @@
 				<a href="#api-interfaces">Interfaces</a>
 				<ol>
 					<li value="2.1">2.1 <a href="#interface-xmlrpc">XML-RPC</a></li>
+					<li value="2.1">2.1 <a href="#interface-soap">SOAP</a></li>
 					<li value="2.2">2.2 <a href="#interface-xml">XML</a></li>
 					<li value="2.3">2.3 <a href="#interface-json">JSON</a></li>
 					<li value="2.4">2.4 <a href="#interface-jsonp">JSONP</a></li>
@@ -43,49 +44,44 @@
 				</ol>
 				</li>
 				<li value="3">3.
-				<a href="#api-methods">Methoden</a>
-				<ol>
-					<li value="3.1">3.1 <a href="#method-route">Route</a></li>
-					<li value="3.2">3.2 <a href="#method-dist">Dist</a></li>
-					<li value="3.3">3.3 <a href="#method-geocode">Geocode</a></li>
-					<li value="3.4">3.4 <a href="#method-sms">SMS</a></li>
-					<li value="3.5">3.5 <a href="#method-bank">Bank</a></li>
-					<li value="3.6">3.6 <a href="#method-bank">Boxcar</a></li>
-					<li value="3.7">3.7 <a href="#method-postcode-match">Postcode-Match</a></li>
-					<li value="3.8">3.8 <a href="#method-postcode-shape">Postcode-Shape</a></li>
-				</ol>
+					<a href="#api-methods">Methoden</a>
+					<ol>
+						<li value="3.1">3.1 <a href="#method-sms">Sms</a></li><li value="3.2">3.2 <a href="#method-fax">Fax</a></li><li value="3.3">3.3 <a href="#method-mail">Mail</a></li><li value="3.4">3.4 <a href="#method-status">Status</a></li><li value="3.5">3.5 <a href="#method-stop">Stop</a></li><li value="3.6">3.6 <a href="#method-routes">Routes</a></li><li value="3.7">3.7 <a href="#method-defaultRoute">DefaultRoute</a></li>
+					</ol>
 				</li>
-				<li value="4">4. <a href="#api-errors">Fehlermeldungen</a></li>
 			</ol>
 		</div><div class="item" id="api-intro">
 			<h3>Einführung</h3>
 			<p>
-				Die Mesngr API enthält viele Funktionen, die von Fahrradkurierdiensten benötigt werden.
+				Die Iro API enthält Funktion, die für den Massenversand nützlich sind.
 			</p>
 		</div><div class="item" id="api-interfaces">
 			<h3>Interfaces</h3>
 			<p>
-				Die Mesngr API stellt verschiedene Interfaces bereit, die unterschiedlich angesprochen werden, aber das selbe tun.
+				Die Iro API wird über verschiedene Interfaces bereit gestellt, die unterschiedlich angesprochen werden, aber das selbe tun.
 			</p>
 			<div class="item" id="interface-xmlrpc">
 				<h4>XML-RPC</h4>
 				<p>
-					Interface-URI: <code>http://api.mesngr.de/xmlrpc</code>
+					Interface-URI: <code>http://localhost:8000/xmlrpc</code>
 				</p>
 				<p>
 					Die aufgerufene Methode wird dabei im <code>&lt;methodName /&gt;</code> übergeben.
 				</p>
+			</div>
+			<div class="item" id="interface-soap">
+				<h4>SOAP</h4>
 				<p>
-					Das XML-RPC Interface nimmt die Parameter der aufgerufenen Methode als <code>&lt;struct /&gt;</code> inerhalb des ersten <code>&lt;param /&gt;</code> entgegen, alle weiteren <code>&lt;param /&gt;</code>s werden ignoriert.
+					Interface-URI: <code>http://localhost:8000/soap</code>
 				</p>
 				<p>
-					Zeichen außerhalb des ASCII-Sets sind als HTML Entities zu übergeben.
+					Die aufgerufene Methode wird dabei im <code>&lt;methodName /&gt;</code> übergeben.
 				</p>
 			</div>
 			<div class="item" id="interface-xml">
 				<h4>XML</h4>
 				<p>
-					Interface-URI: <code>http://api.mesngr.de/xml/<em>&lt;methode&gt;</em></code>
+					Interface-URI: <code>http://localhost:8000/xml/<em>&lt;methode&gt;</em></code>
 				</p>
 				<p>
 					Die aufgerufene Methode wird im Pfad der Interface-URI übergeben.
@@ -100,7 +96,7 @@
 			<div class="item" id="interface-json">
 				<h4>JSON</h4>
 				<p>
-					Interface-URI: <code>http://api.mesngr.de/json/<em>&lt;methode&gt;</em></code>
+					Interface-URI: <code>http://localhost:8000/json/<em>&lt;methode&gt;</em></code>
 				</p>
 				<p>
 					Die aufgerufene Methode wird im Pfad der Interface-URI übergeben.
@@ -112,10 +108,10 @@
 					Die Ausgabe erfolgt als JSON-Objekt.
 				</p>
 			</div>
-			<div class="item" id="interface-json">
+			<div class="item" id="interface-jsonp">
 				<h4>JSONP</h4>
 				<p>
-					Interface-URI: <code>http://api.mesngr.de/jsonp/<em>&lt;methode&gt;</em>?callback=&lt;callback&gt;</code>
+					Interface-URI: <code>http://localhost:8000/jsonp/<em>&lt;methode&gt;</em>?callback=&lt;callback&gt;</code>
 				</p>
 				<p>
 					Die aufgerufene Methode wird im Pfad der Interface-URI übergeben.
@@ -130,899 +126,340 @@
 					Die Ausgabe erfolgt als Javascript-Funktionsaufruf mit einem JSON-Objekt als Parameter.
 				</p>
 			</div>
-			<div class="item" id="interface-php">
-				<h4>PHP</h4>
-				<p>
-					Interface-URI: <code>http://api.mesngr.de/php/<em>&lt;methode&gt;</em></code>
-				</p>
-				<p>
-					Die aufgerufene Methode wird im Pfad der Interface-URI übergeben.
-				</p>
-				<p>
-					Parameter können via HTTP per GET oder POST im Format <em>application/x-www-form-urlencoded</em> übergeben werden.
-				</p>
-				<p>
-					Die Ausgabe erfolgt als serialisiertes PHP-Objekt.
-				</p>
+		</div><div class="item" id="api-methods">
+			<h3>Methoden</h3>
+			<div class="item" id="method-sms">
+				<h4>Sms</h4>
+				<p><code>sms(self, apikey, message, recipients, route='default')</code></p>
+				<p>Versendet eine SMS.</p>
+				<h5>Parameter</h5>
+				<table class="docs">
+					<thead>
+						<tr>
+							<td>Parameter</td>
+							<td>Typ</td>
+							<td>Beschreibung</td>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>apikey</td>
+							<td>string</td>
+							<td> Der API Key</td>
+						</tr><tr>
+							<td>message</td>
+							<td>string</td>
+							<td> Nachricht</td>
+						</tr><tr>
+							<td>recipients</td>
+							<td>list</td>
+							<td> eine Liste von Emfänger-Nummern (gemäß ITU-T E.123)</td>
+						</tr><tr>
+							<td>route</td>
+							<td>string|list</td>
+							<td> Route über den geschickt werden soll,
+oder eine Liste von Routen, um Fallbacks anzugeben</td>
+						</tr>
+					</tbody>
+				</table>
+				<h5>Ausgabe</h5>
+				<table class="docs">
+					<thead>
+						<tr>
+							<td>Parameter</td>
+							<td>Typ</td>
+							<td>Beschreibung</td>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>id</td>
+							<td>hash</td>
+							<td> Die ID des Auftrages</td>
+						</tr>
+					</tbody>
+				</table>
+			</div><div class="item" id="method-fax">
+				<h4>Fax</h4>
+				<p><code>fax(self, apikey, subject, fax, recipients, route='default')</code></p>
+				<p>Versendet ein FAX.</p>
+				<h5>Parameter</h5>
+				<table class="docs">
+					<thead>
+						<tr>
+							<td>Parameter</td>
+							<td>Typ</td>
+							<td>Beschreibung</td>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>apikey</td>
+							<td>string</td>
+							<td> Der API Key</td>
+						</tr><tr>
+							<td>subject</td>
+							<td>string</td>
+							<td> Der Betreff</td>
+						</tr><tr>
+							<td>fax</td>
+							<td>string</td>
+							<td> Das PDF base64 kodiert</td>
+						</tr><tr>
+							<td>recipients</td>
+							<td>list</td>
+							<td> Eine Liste von Emfänger-Nummern (gemäß ITU-T E.123)</td>
+						</tr><tr>
+							<td>route</td>
+							<td>string|list</td>
+							<td> Route über den geschickt werden soll,
+oder eine Liste von Routen, um Fallbacks anzugeben</td>
+						</tr>
+					</tbody>
+				</table>
+				<h5>Ausgabe</h5>
+				<table class="docs">
+					<thead>
+						<tr>
+							<td>Parameter</td>
+							<td>Typ</td>
+							<td>Beschreibung</td>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>id</td>
+							<td>hash</td>
+							<td> Die ID des Auftrages</td>
+						</tr>
+					</tbody>
+				</table>
+			</div><div class="item" id="method-mail">
+				<h4>Mail</h4>
+				<p><code>mail(self, apikey, subject, body, recipients, frm, route='default')</code></p>
+				<p>Versendet eine Email.</p>
+				<h5>Parameter</h5>
+				<table class="docs">
+					<thead>
+						<tr>
+							<td>Parameter</td>
+							<td>Typ</td>
+							<td>Beschreibung</td>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>apikey</td>
+							<td>string</td>
+							<td> Der API Key</td>
+						</tr><tr>
+							<td>subject</td>
+							<td>string</td>
+							<td> Der Betreff</td>
+						</tr><tr>
+							<td>body</td>
+							<td>string</td>
+							<td> Der Email Body</td>
+						</tr><tr>
+							<td>recipients</td>
+							<td>list</td>
+							<td> Eine Liste von Emailadressen</td>
+						</tr><tr>
+							<td>frm</td>
+							<td>string</td>
+							<td> Die Absender Emailadresse</td>
+						</tr><tr>
+							<td>route</td>
+							<td>string|list</td>
+							<td> Route über den geschickt werden soll,
+oder eine Liste von Routen, um Fallbacks anzugeben</td>
+						</tr>
+					</tbody>
+				</table>
+				<h5>Ausgabe</h5>
+				<table class="docs">
+					<thead>
+						<tr>
+							<td>Parameter</td>
+							<td>Typ</td>
+							<td>Beschreibung</td>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>id</td>
+							<td>hash</td>
+							<td> Die ID des Auftrages</td>
+						</tr>
+					</tbody>
+				</table>
+			</div><div class="item" id="method-status">
+				<h4>Status</h4>
+				<p><code>status(self, apikey, id=None, detailed=False)</code></p>
+				<p>Gibt den aktuellen Status eines Auftrages zurück.</p>
+				<h5>Parameter</h5>
+				<table class="docs">
+					<thead>
+						<tr>
+							<td>Parameter</td>
+							<td>Typ</td>
+							<td>Beschreibung</td>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>apikey</td>
+							<td>string</td>
+							<td> Der API Key</td>
+						</tr><tr>
+							<td>id</td>
+							<td>hash</td>
+							<td> Eine Auftragsnummer</td>
+						</tr><tr>
+							<td>detailed</td>
+							<td>boolean</td>
+							<td> Details ausgeben</td>
+						</tr>
+					</tbody>
+				</table>
+				<h5>Ausgabe</h5>
+				<table class="docs">
+					<thead>
+						<tr>
+							<td>Parameter</td>
+							<td>Typ</td>
+							<td>Beschreibung</td>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>jobs</td>
+							<td>list</td>
+							<td> Eine Liste der Aufträge.</td>
+						</tr><tr>
+							<td>job.name</td>
+							<td>string</td>
+							<td> Angebener Name</td>
+						</tr><tr>
+							<td>job.status</td>
+							<td>string</td>
+							<td> Status des Auftrages</td>
+						</tr>
+					</tbody>
+				</table>
+			</div><div class="item" id="method-stop">
+				<h4>Stop</h4>
+				<p><code>stop(self, apikey, id)</code></p>
+				<p>Stoppt den angegeben Auftrag.</p>
+				<h5>Parameter</h5>
+				<table class="docs">
+					<thead>
+						<tr>
+							<td>Parameter</td>
+							<td>Typ</td>
+							<td>Beschreibung</td>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>apikey</td>
+							<td>string</td>
+							<td> Der API Key</td>
+						</tr><tr>
+							<td>id</td>
+							<td>hash</td>
+							<td> Eine Auftragsnummer</td>
+						</tr>
+					</tbody>
+				</table>
+			</div><div class="item" id="method-routes">
+				<h4>Routes</h4>
+				<p><code>routes(self, apikey, typ)</code></p>
+				<p>Gibt eine Liste aller verfügbaren Provider zurück.</p>
+				<h5>Parameter</h5>
+				<table class="docs">
+					<thead>
+						<tr>
+							<td>Parameter</td>
+							<td>Typ</td>
+							<td>Beschreibung</td>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>apikey</td>
+							<td>string</td>
+							<td> Der API Key</td>
+						</tr><tr>
+							<td>typ</td>
+							<td>string</td>
+							<td> Der Typ zu dem die Providerloste ausgeben werden soll
+Einer der Liste ["sms","fax","mail"]</td>
+						</tr>
+					</tbody>
+				</table>
+				<h5>Ausgabe</h5>
+				<table class="docs">
+					<thead>
+						<tr>
+							<td>Parameter</td>
+							<td>Typ</td>
+							<td>Beschreibung</td>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>providerlist</td>
+							<td>list</td>
+							<td> Eine Liste aller möglichen Provider</td>
+						</tr>
+					</tbody>
+				</table>
+			</div><div class="item" id="method-defaultRoute">
+				<h4>DefaultRoute</h4>
+				<p><code>defaultRoute(self, apikey, typ)</code></p>
+				<p>Gibt den Standardprovider zurück.</p>
+				<h5>Parameter</h5>
+				<table class="docs">
+					<thead>
+						<tr>
+							<td>Parameter</td>
+							<td>Typ</td>
+							<td>Beschreibung</td>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>apikey</td>
+							<td>string</td>
+							<td> Der API Key</td>
+						</tr><tr>
+							<td>typ</td>
+							<td>string</td>
+							<td> Der Typ zu dem die Providerloste ausgeben werden soll
+Einer der Liste ["sms","fax","mail"]</td>
+						</tr>
+					</tbody>
+				</table>
+				<h5>Ausgabe</h5>
+				<table class="docs">
+					<thead>
+						<tr>
+							<td>Parameter</td>
+							<td>Typ</td>
+							<td>Beschreibung</td>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>provider</td>
+							<td>string</td>
+							<td> Der Standardprovider für den angeben Typ</td>
+						</tr>
+					</tbody>
+				</table>
 			</div>
-		</div><div class="item" id="api-methods">
-		<h3>Methoden</h3>
-		<div class="item" id="method-route">
-			<h4>Route</h4>
-			<p><code>route</code></p>
-			<p>
-				Diese Methode ermittelt die Routing-Entfernung zwischen zwei Koordinaten.
-			</p>
-			<h5>Parameter</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>
-				</thead>
-				<tbody>
-					<tr>
-						<td>apikey</td>
-						<td>str[20]</td>
-						<td>Der API Key</td>
-					</tr>
-					<tr>
-						<td>type</td>
-						<td>enum[car,bicycle,foot]</td>
-						<td>Die gewünschte Routing-Methode</td>
-					</tr>
-					<tr>
-						<td>flon</td>
-						<td>float</td>
-						<td>Der Längengrad des Startpunktes</td>
-					</tr>
-					<tr>
-						<td>flat</td>
-						<td>float</td>
-						<td>Der Breitengrad des Startpunktes</td>
-					</tr>
-					<tr>
-						<td>tlon</td>
-						<td>float</td>
-						<td>Der Längengrad des Zielpunktes</td>
-					</tr>
-					<tr>
-						<td>tlat</td>
-						<td>float</td>
-						<td>Der Breitengrad des Zielpunktes</td>
-					</tr>
-				</tbody>
-			</table>
-			<h5>Ausgabe</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>
-				</thead>
-				<tbody>
-					<tr>
-						<td>status</td>
-						<td>bool</td>
-						<td>Fehlerindikator</td>
-					</tr>
-					<tr>
-						<td>distance</td>
-						<td>float</td>
-						<td>Die ermittelte Routing-Distanz in km</td>
-					</tr>
-				</tbody>
-			</table>
-		</div>
-		<div class="item" id="method-dist">
-			<h4>Dist</h4>
-			<p><code>dist</code></p>
-			<p>
-				Diese Methode ermittelt die direkte Entfernung zwischen zwei Koordinaten.
-			</p>
-			<h5>Parameter</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>
-				</thead>
-				<tbody>
-					<tr>
-						<td>apikey</td>
-						<td>str[20]</td>
-						<td>Der API Key</td>
-					</tr>
-					<tr>
-						<td>flon</td>
-						<td>float</td>
-						<td>Der Längengrad des Startpunktes</td>
-					</tr>
-					<tr>
-						<td>flat</td>
-						<td>float</td>
-						<td>Der Breitengrad des Startpunktes</td>
-					</tr>
-					<tr>
-						<td>tlon</td>
-						<td>float</td>
-						<td>Der Längengrad des Zielpunktes</td>
-					</tr>
-					<tr>
-						<td>tlat</td>
-						<td>float</td>
-						<td>Der Breitengrad des Zielpunktes</td>
-					</tr>
-				</tbody>
-			</table>
-			<h5>Ausgabe</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>
-				</thead>
-				<tbody>
-					<tr>
-						<td>status</td>
-						<td>bool</td>
-						<td>Fehlerindikator</td>
-					</tr>
-					<tr>
-						<td>distance</td>
-						<td>float</td>
-						<td>Die ermittelte Routing-Distanz in km</td>
-					</tr>
-				</tbody>
-			</table>
-		</div>
-		<div class="item" id="method-geocode">
-			<h4>Geocode</h4>
-			<p><code>geocode</code></p>
-			<p>
-				Ermittelt die Koordinaten zu einer Adresse. Diese Methode ist Kostenpflichtig.
-			</p>
-			<h5>Parameter</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>
-				</thead>
-				<tbody>
-					<tr>
-						<td>apikey</td>
-						<td>str[20]</td>
-						<td>Der API Key</td>
-					</tr>
-					<tr>
-						<td>type</td>
-						<td>enum[fast, complete]</td>
-						<td>Die Eingabemethode. Im Modus <em>fast</em> wird der Parameter <code>number</code> an den Parameter <code>street</code> angehängt sowie der Parameter <code>postcode</code> vor den Parameter <code>city</code>; Die Parameter <code>postcode</code> und <code>number</code> werden dann ignoriert.</td>
-					</tr>
-					<tr>
-						<td>street</td>
-						<td>str</td>
-						<td>Der Straßenname der Adresse</td>
-					</tr>
-					<tr>
-						<td>number</td>
-						<td>str</td>
-						<td>Die Hausnummer der Adresse</td>
-					</tr>
-					<tr>
-						<td>postcode</td>
-						<td>str</td>
-						<td>Die Postleitzahl der Adresse</td>
-					</tr>
-					<tr>
-						<td>city</td>
-						<td>str</td>
-						<td>Die Stadt der Adresse</td>
-					</tr>
-					<tr>
-						<td>country</td>
-						<td>str</td>
-						<td>Das Land der Adresse, ISO 3166</td>
-					</tr>
-				</tbody>
-			</table>
-			<h5>Ausgabe</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>
-				</thead>
-				<tbody>
-					<tr>
-						<td>status</td>
-						<td>bool</td>
-						<td>Fehlerindikator</td>
-					</tr>
-					<tr>
-						<td>stage</td>
-						<td>enum[1,2,3]</td>
-						<td>
-							Grad des Erfolges des Geocodings:<br>
-							1 → Es stehen mehrere mögliche Adressen zur Auswahl.<br>
-							2 → Eine mögliche Adresse als Korrekturvorschlag.<br>
-							3 → Die Adresse konnte verifiziert und zugehörige Geokoordinaten ermittelt werden.
-						</td>
-					</tr>
-					<tr>
-						<td>data</td>
-						<td>array</td>
-						<td>
-							Die ermittelten Adressdaten
-						</td>
-					</tr>
-					<tr>
-						<td>data[i]</td>
-						<td>array</td>
-						<td>
-							Ein ermittelter Adressdatensatz
-						</td>
-					</tr>
-					<tr>
-						<td>data[i][street]</td>
-						<td>str</td>
-						<td>Name der Straße</td>
-					</tr>
-					<tr>
-						<td>data[i][nr]</td>
-						<td>str</td>
-						<td>Hausnummer</td>
-					</tr>
-					<tr>
-						<td>data[i][fragment]</td>
-						<td>str</td>
-						<td>Hausnummernzusatz (z.B. <em>a</em> bei <em>12a</em>)</td>
-					</tr>
-					<tr>
-						<td>data[i][postcode]</td>
-						<td>str</td>
-						<td>Postleitzahl</td>
-					</tr>
-					<tr>
-						<td>data[i][city]</td>
-						<td>str</td>
-						<td>Ort</td>
-					</tr>
-					<tr>
-						<td>data[i][country]</td>
-						<td>str[2]</td>
-						<td>Land (gemäß ISO 3166)</td>
-					</tr>
-					<tr>
-						<td>data[i][accuracy]</td>
-						<td>int</td>
-						<td>Genauigkeit (Genau &gt; Ungenau)</td>
-					</tr>
-					<tr>
-						<td>data[i][lat]</td>
-						<td>float</td>
-						<td>Breitengrad</td>
-					</tr>
-					<tr>
-						<td>data[i][lon]</td>
-						<td>float</td>
-						<td>Längengrad</td>
-					</tr>
-				</tbody>
-			</table>
-		</div>
-		<div class="item" id="method-sms">
-			<h4>SMS</h4>
-			<p><code>sms</code></p>
-			<p>
-				Versendet eine SMS-Nachricht. Diese Methode ist kostenpflichtig.
-			</p>
-			<h5>Parameter</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>
-				</thead>
-				<tbody>
-					<tr>
-						<td>apikey</td>
-						<td>str[20]</td>
-						<td>Der API Key</td>
-					</tr>
-					<tr>
-						<td>from</td>
-						<td>str[11]|tel[16]</td>
-						<td>Der gewünschte Absender (optional)</td>
-					</tr>
-					<tr>
-						<td>to</td>
-						<td>tel[15]</td>
-						<td>Emfänger-Nummer (gemäß ITU-T E.123)</td>
-					</tr>
-					<tr>
-						<td>ref</td>
-						<td>str</td>
-						<td>Referenz für Antworten</td>
-					</tr>
-					<tr>
-						<td>callback</td>
-						<td>str</td>
-						<td>Callback-URL für SMS-Antworten. Noch nicht implementiert.</td>
-					</tr>
-				</tbody>
-			</table>
-			<h5>Ausgabe</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>
-				</thead>
-				<tbody>
-					<tr>
-						<td>status</td>
-						<td>bool</td>
-						<td>Fehlerindikator</td>
-					</tr>
-				</tbody>
-			</table>
-		</div>
-		<div class="item" id="method-bank">
-			<h4>Bank</h4>
-			<p><code>bank</code></p>
-			<p>
-				Prüft Bankdaten auf Plausibilität.
-			</p>
-			<h5>Parameter</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>
-				</thead>
-				<tbody>
-					<tr>
-						<td>apikey</td>
-						<td>str[20]</td>
-						<td>Der API Key</td>
-					</tr>
-					<tr>
-						<td>country</td>
-						<td>[de]</td>
-						<td>Das Land des Bankdatenformates</td>
-					</tr>
-					<tr>
-						<td>bank</td>
-						<td>int[8]</td>
-						<td>Die Bankleitzahl</td>
-					</tr>
-					<tr>
-						<td>account</td>
-						<td>int[10]</td>
-						<td>Die Kontonummer (optional)</td>
-					</tr>
-				</tbody>
-			</table>
-			<h5>Ausgabe</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>
-				</thead>
-				<tbody>
-					<tr>
-						<td>status</td>
-						<td>bool</td>
-						<td>Fehlerindikator</td>
-					</tr>
-					<tr>
-						<td>bank</td>
-						<td>array</td>
-						<td>Der Bankdatensatz</td>
-					</tr>
-					<tr>
-						<td>bank[id]</td>
-						<td>int[8]</td>
-						<td>Die Bankleitzahl</td>
-					</tr>
-					<tr>
-						<td>bank[name]</td>
-						<td>str</td>
-						<td>Name der Bank</td>
-					</tr>
-					<tr>
-						<td>bank[city]</td>
-						<td>str</td>
-						<td>Stadt</td>
-					</tr>
-					<tr>
-						<td>bank[bic]</td>
-						<td>str</td>
-						<td>Der BIC der Bank</td>
-					</tr>
-					<tr>
-						<td>account</td>
-						<td>array</td>
-						<td>Der Kontodatensatz</td>
-					</tr>
-					<tr>
-						<td>account[id]</td>
-						<td>int[10]</td>
-						<td>Die Kontonummer</td>
-					</tr>
-				</tbody>
-			</table>
 		</div>
-		<div class="item" id="method-bank">
-			<h4>Boxcar</h4>
-			<p><code>boxcar</code></p>
-			<p>
-				Sendet eine Push-Notification via Boxcar. Ist der Boxcar-user nicht subskribiert, wird statt der Nachricht eine Subskriptions-Anfrage gesendet.
-			</p>
-			<h5>Parameter</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>
-				</thead>
-				<tbody>
-					<tr>
-						<td>apikey</td>
-						<td>str[20]</td>
-						<td>Der API Key</td>
-					</tr>
-					<tr>
-						<td>to</td>
-						<td>str</td>
-						<td>E-Mail-Adresse des Boxcar-Accounts</td>
-					</tr>
-					<tr>
-						<td>from</td>
-						<td>str</td>
-						<td>Absender</td>
-					</tr>
-					<tr>
-						<td>message</td>
-						<td>str</td>
-						<td>Die Nachricht</td>
-					</tr>
-					<tr>
-						<td>url</td>
-						<td>str</td>
-						<td>Die URL die aufgerufen werden soll</td>
-					</tr>
-				</tbody>
-			</table>
-			<h5>Ausgabe</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>
-				</thead>
-				<tbody>
-					<tr>
-						<td>status</td>
-						<td>bool</td>
-						<td>Fehlerindikator</td>
-					</tr>
-				</tbody>
-			</table>
-		</div>
-		<div class="item" id="method-postcode-match">
-			<h4>Postcode-Match</h4>
-			<p><code>postcodematch</code></p>
-			<p>
-				Liefert die Schwerpunkt-Koordinaten aller Postleizahlengebiete innerhalb eines Bereiches.
-			</p>
-			<h5>Parameter</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>
-				</thead>
-				<tbody>
-					<tr>
-						<td>apikey</td>
-						<td>str[20]</td>
-						<td>Der API Key</td>
-					</tr>
-					<tr>
-						<td>bbox_n</td>
-						<td>float</td>
-						<td>Maximale Latitude</td>
-					</tr>
-					<tr>
-						<td>bbox_s</td>
-						<td>float</td>
-						<td>Minimale Latitude</td>
-					</tr>
-					<tr>
-						<td>bbox_e</td>
-						<td>float</td>
-						<td>Maximale Longitude</td>
-					</tr>
-					<tr>
-						<td>bbox_w</td>
-						<td>float</td>
-						<td>Minimale Longitude</td>
-					</tr>
-				</tbody>
-			</table>
-			<h5>Ausgabe</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>
-				</thead>
-				<tbody>
-					<tr>
-						<td>status</td>
-						<td>bool</td>
-						<td>Fehlerindikator</td>
-					</tr>
-					<tr>
-						<td>postcodes</td>
-						<td>array</td>
-						<td>Ergebnisse</td>
-					</tr>
-					<tr>
-						<td>postcodes[i]</td>
-						<td>array</td>
-						<td>Ergebnis</td>
-					</tr>
-					<tr>
-						<td>postcodes[i][postcode]</td>
-						<td>str</td>
-						<td>Postleitzahl</td>
-					</tr>
-					<tr>
-						<td>postcodes[i][lat]</td>
-						<td>float</td>
-						<td>Latitude des Schwerpunktes</td>
-					</tr>
-					<tr>
-						<td>postcodes[i][lon]</td>
-						<td>float</td>
-						<td>Longitude des Schwerpunktes</td>
-					</tr>
-				</tbody>
-			</table>
-		</div>
-		<div class="item" id="method-postcode-shape">
-			<h4>Postcode-Shape</h4>
-			<p><code>postcodeshape</code></p>
-			<p>
-				Gibt eine Näherung an die geografische Definition eines Postleitzahlengebietes aus.
-			</p>
-			<h5>Parameter</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>
-				</thead>
-				<tbody>
-					<tr>
-						<td>apikey</td>
-						<td>str[20]</td>
-						<td>Der API Key</td>
-					</tr>
-					<tr>
-						<td>postcode</td>
-						<td>str</td>
-						<td>Die Postleitzahl des Gebietes</td>
-					</tr>
-				</tbody>
-			</table>
-			<h5>Ausgabe</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>
-				</thead>
-				<tbody>
-					<tr>
-						<td>status</td>
-						<td>bool</td>
-						<td>Fehlerindikator</td>
-					</tr>
-					<tr>
-						<td>postcode</td>
-						<td>str</td>
-						<td></td>
-					</tr>
-					<tr>
-						<td>center</td>
-						<td>array</td>
-						<td></td>
-					</tr>
-					<tr>
-						<td>center[lat]</td>
-						<td>flaot</td>
-						<td></td>
-					</tr>
-					<tr>
-						<td>center[lon]</td>
-						<td>flaot</td>
-						<td></td>
-					</tr>
-					<tr>
-						<td>bbox</td>
-						<td>array</td>
-						<td></td>
-					</tr>
-					<tr>
-						<td>bbox[n]</td>
-						<td>float</td>
-						<td></td>
-					</tr>
-					<tr>
-						<td>bbox[s]</td>
-						<td>float</td>
-						<td></td>
-					</tr>
-					<tr>
-						<td>bbox[w]</td>
-						<td>float</td>
-						<td></td>
-					</tr>
-					<tr>
-						<td>bbox[e]</td>
-						<td>float</td>
-						<td></td>
-					</tr>
-					<tr>
-						<td>shape</td>
-						<td>array</td>
-						<td>Alle Shapes dieses Postleitzahlengebietes</td>
-					</tr>
-					<tr>
-						<td>shape[i]</td>
-						<td>array</td>
-						<td>Ein Shape des Postleitzahlengebietes</td>
-					</tr>
-					<tr>
-						<td>shape[i][j]</td>
-						<td>array</td>
-						<td>Ein Punkt des Shapes</td>
-					</tr>
-					<tr>
-						<td>shape[i][j][lat]</td>
-						<td>array</td>
-						<td>Die Latitude des Punktes</td>
-					</tr>
-					<tr>
-						<td>shape[i][j][lon]</td>
-						<td>array</td>
-						<td>Die Longitude des Punktes</td>
-					</tr>
-				</tbody>
-			</table>
-		</div>
-	</div><div class="item" id="api-errors">
-		<h3>Fehlercode</h3>
-		<p>
-			Wenn der Ausgabeparameter <code>status</code> einen Fehler indiziert, werden alle weiteren Ausgabeparameter ersetzt durch die Parameter <code>code</code> und <code>msg</code>.
-		</p>
-		<table class="docs">
-			<thead>
-				<tr>
-					<td>Parameter</td>
-					<td>Typ</td>
-					<td>Beschreibung</td>
-				</tr>
-			</thead>
-			<tbody>
-				<tr>
-					<td>status</td>
-					<td>bool</td>
-					<td>Fehlerindikator</td>
-				</tr>
-				<tr>
-					<td>code</td>
-					<td>int[3]</td>
-					<td>Fehlercode</td>
-				</tr>
-				<tr>
-					<td>msg</td>
-					<td>str</td>
-					<td>Fehlermeldung</td>
-				</tr>
-				<tr>
-					<td>result</td>
-					<td></td>
-					<td>Optionale weitere Daten</td>
-				</tr>
-			</tbody>
-		</table>
-		<h4>Fehlercodes</h4>
-		<table class="docs">
-			<thead>
-				<tr>
-					<td>Code</td>
-					<td>Bedeutung</td>
-				</tr>
-			</thead>
-			<tbody>
-				<tr>
-					<td>900</td>
-					<td>Die aufgerufene Methode existiert nicht</td>
-				</tr>
-				<tr>
-					<td>901</td>
-					<td>Der API-Key ist ungültig</td>
-				</tr>
-				<tr>
-					<td>902</td>
-					<td>Fehler in externer API</td>
-				</tr>
-				<tr>
-					<td>903</td>
-					<td>Encoding-Problem: Ein Nicht-UTF-8-Zeichen hat den Parser gestoppt</td>
-				</tr>
-				<tr>
-					<td>904</td>
-					<td>Es wurden keine gültigen JSON-Daten im POST-Request gefunden</td>
-				</tr>
-				<tr>
-					<td>910</td>
-					<td>Ungültige Eingabemethode</td>
-				</tr>
-				<tr>
-					<td>911</td>
-					<td>Die eingegebenen Daten reichen nicht aus, um die Adresse zu bestimmen</td>
-				</tr>
-				<tr>
-					<td>912</td>
-					<td>Die Adresse wurde nicht gefunden</td>
-				</tr>
-				<tr>
-					<td>913</td>
-					<td>Für diese Adresse wurden keine Koordinaten gefunden</td>
-				</tr>
-				<tr>
-					<td>914</td>
-					<td>Die Koordinaten für diese Adresse sind nicht eindeutig</td>
-				</tr>
-				<tr>
-					<td>921</td>
-					<td>Ungültige Koordinaten</td>
-				</tr>
-				<tr>
-					<td>922</td>
-					<td>Keine Route gefunden</td>
-				</tr>
-				<tr>
-					<td>930</td>
-					<td>Keine Verbindung zum Gateway</td>
-				</tr>
-				<tr>
-					<td>931</td>
-					<td>Empfänger fehlerhaft</td>
-				</tr>
-				<tr>
-					<td>932</td>
-					<td>Absenderkennung zu lang</td>
-				</tr>
-				<tr>
-					<td>933</td>
-					<td>Nachrichtentext zu lang</td>
-				</tr>
-				<tr>
-					<td>934</td>
-					<td>Messagetyp nicht korrekt</td>
-				</tr>
-				<tr>
-					<td>935</td>
-					<td>Falscher SMS-Typ</td>
-				</tr>
-				<tr>
-					<td>936</td>
-					<td>Fehler bei Login</td>
-				</tr>
-				<tr>
-					<td>937</td>
-					<td>Guthaben zu gering</td>
-				</tr>
-				<tr>
-					<td>938</td>
-					<td>Netz wird von Route nicht unterstützt</td>
-				</tr>
-				<tr>
-					<td>939</td>
-					<td>Feature nicht über diese Route möglich</td>
-				</tr>
-				<tr>
-					<td>940</td>
-					<td>Ungültige BLZ</td>
-				</tr>
-				<tr>
-					<td>941</td>
-					<td>Ungültige Kontonummer</td>
-				</tr>
-				<tr>
-					<td>942</td>
-					<td>Ungültiges Land</td>
-				</tr>
-				<tr>
-					<td>945</td>
-					<td>Ungültiger Empfänger</td>
-				</tr>
-				<tr>
-					<td>946</td>
-					<td>Keine Nachricht angegeben</td>
-				</tr>
-				<tr>
-					<td>947</td>
-					<td>Der Empfänger ist nicht subskribiert</td>
-				</tr>
-				<tr>
-					<td>948</td>
-					<td>Der Empfänger hat den Dienst abgeschaltet</td>
-				</tr>
-				<tr>
-					<td>950</td>
-					<td>Die Postleitzahl ist ungültig.</td>
-				</tr>
-				<tr>
-					<td>951</td>
-					<td>Für diese Postleitzahl gibt es keine Shapes.</td>
-				</tr>
-				<tr>
-					<td>952</td>
-					<td>In diesem Bereich wurden keine Postleitzahlen gefunden.</td>
-				</tr>
-				<tr>
-					<td>953</td>
-					<td>Dieser Bereich enthält zu viele Postleitzahlen.</td>
-				</tr>
-				<tr>
-					<td>999</td>
-					<td>Unbekannter Fehler</td>
-				</tr>
-			</tbody>
-		</table>
-	</div>
 			</div>
 			<div class="clear"></div>
 		</div>
--- a/doc/tmpl/current.html	Tue Dec 06 19:46:00 2011 +0100
+++ b/doc/tmpl/current.html	Tue Dec 06 23:53:18 2011 +0100
@@ -24,7 +24,7 @@
 				<li value="3">3. 
 					<a href="#api-methods">Methoden</a>
 					<ol>
-						<li py:for="(key,method) in enumerate(methods)" value="3.${key+1}">3.${key+1} <a href="#method-${method.name}">${method.title}</a></li>
+						<li py:for="(key,method) in enumerate(current)" value="3.${key+1}">3.${key+1} <a href="#method-${method.name}">${method.title}</a></li>
 					</ol>				
 				</li>
 			</ol>
@@ -52,9 +52,9 @@
 		</div>
 		<div class="item" id="api-methods">
 			<h3>Methoden</h3>
-			<div py:for="method in methods" class="item" id="method-${method.name}">
+			<div py:for="method in current" class="item" id="method-${method.name}">
 				<h4>${method.title}</h4>
-				<p><code>${method.name}</code></p>
+				<p><code>${method.name}${method.func_line}</code></p>
 				<p py:content="method.description">
 					Diese Methode at bis jetzt noch keine Beschreibung.
 				</p>
--- a/doc/tmpl/new.html	Tue Dec 06 19:46:00 2011 +0100
+++ b/doc/tmpl/new.html	Tue Dec 06 23:53:18 2011 +0100
@@ -19,6 +19,7 @@
 				<a href="#api-interfaces">Interfaces</a>
 				<ol>
 					<li value="2.1">2.1 <a href="#interface-xmlrpc">XML-RPC</a></li>
+					<li value="2.1">2.1 <a href="#interface-soap">SOAP</a></li>
 					<li value="2.2">2.2 <a href="#interface-xml">XML</a></li>
 					<li value="2.3">2.3 <a href="#interface-json">JSON</a></li>
 					<li value="2.4">2.4 <a href="#interface-jsonp">JSONP</a></li>
@@ -26,51 +27,48 @@
 				</ol>
 				</li>
 				<li value="3">3. 
-				<a href="#api-methods">Methoden</a>
-				<ol>
-					<li value="3.1">3.1 <a href="#method-route">Route</a></li>
-					<li value="3.2">3.2 <a href="#method-dist">Dist</a></li>
-					<li value="3.3">3.3 <a href="#method-geocode">Geocode</a></li>
-					<li value="3.4">3.4 <a href="#method-sms">SMS</a></li>
-					<li value="3.5">3.5 <a href="#method-bank">Bank</a></li>
-					<li value="3.6">3.6 <a href="#method-bank">Boxcar</a></li>
-					<li value="3.7">3.7 <a href="#method-postcode-match">Postcode-Match</a></li>
-					<li value="3.8">3.8 <a href="#method-postcode-shape">Postcode-Shape</a></li>
-				</ol>				
+					<a href="#api-methods">Methoden</a>
+					<ol>
+						<li py:for="(key,method) in enumerate(new)" value="3.${key+1}">3.${key+1} <a href="#method-${method.name}">${method.title}</a></li>
+					</ol>				
 				</li>
-				<li value="4">4. <a href="#api-errors">Fehlermeldungen</a></li>
+
 			</ol>
 		</div>
 		<div class="item" id="api-intro">
 			<h3>Einführung</h3>
 			<p>
-				Die Mesngr API enthält viele Funktionen, die von Fahrradkurierdiensten benötigt werden.
+				Die Iro API enthält Funktion, die für den Massenversand nützlich sind.
 			</p>
 		</div>
 		<div class="item" id="api-interfaces">
 			<h3>Interfaces</h3>
 			<p>
-				Die Mesngr API stellt verschiedene Interfaces bereit, die unterschiedlich angesprochen werden, aber das selbe tun.
+
+				Die Iro API wird über verschiedene Interfaces bereit gestellt, die unterschiedlich angesprochen werden, aber das selbe tun.
 			</p>
 			<div class="item" id="interface-xmlrpc">
 				<h4>XML-RPC</h4>
 				<p>
-					Interface-URI: <code>http://api.mesngr.de/xmlrpc</code>
+					Interface-URI: <code>http://localhost:8000/xmlrpc</code>
 				</p>
 				<p>
 					Die aufgerufene Methode wird dabei im <code>&lt;methodName /&gt;</code> übergeben.
 				</p>
+			</div>
+			<div class="item" id="interface-soap">
+				<h4>SOAP</h4>
 				<p>
-					Das XML-RPC Interface nimmt die Parameter der aufgerufenen Methode als <code>&lt;struct /&gt;</code> inerhalb des ersten <code>&lt;param /&gt;</code> entgegen, alle weiteren <code>&lt;param /&gt;</code>s werden ignoriert.
+					Interface-URI: <code>http://localhost:8000/soap</code>
 				</p>
 				<p>
-					Zeichen außerhalb des ASCII-Sets sind als HTML Entities zu übergeben.
+					Die aufgerufene Methode wird dabei im <code>&lt;methodName /&gt;</code> übergeben.
 				</p>
 			</div>
 			<div class="item" id="interface-xml">
 				<h4>XML</h4>
 				<p>
-					Interface-URI: <code>http://api.mesngr.de/xml/<em>&lt;methode&gt;</em></code>
+					Interface-URI: <code>http://localhost:8000/xml/<em>&lt;methode&gt;</em></code>
 				</p>
 				<p>
 					Die aufgerufene Methode wird im Pfad der Interface-URI übergeben.
@@ -85,7 +83,7 @@
 			<div class="item" id="interface-json">
 				<h4>JSON</h4>
 				<p>
-					Interface-URI: <code>http://api.mesngr.de/json/<em>&lt;methode&gt;</em></code>
+					Interface-URI: <code>http://localhost:8000/json/<em>&lt;methode&gt;</em></code>
 				</p>
 				<p>
 					Die aufgerufene Methode wird im Pfad der Interface-URI übergeben.
@@ -97,10 +95,10 @@
 					Die Ausgabe erfolgt als JSON-Objekt.
 				</p>
 			</div>
-			<div class="item" id="interface-json">
+			<div class="item" id="interface-jsonp">
 				<h4>JSONP</h4>
 				<p>
-					Interface-URI: <code>http://api.mesngr.de/jsonp/<em>&lt;methode&gt;</em>?callback=&lt;callback&gt;</code>
+					Interface-URI: <code>http://localhost:8000/jsonp/<em>&lt;methode&gt;</em>?callback=&lt;callback&gt;</code>
 				</p>
 				<p>
 					Die aufgerufene Methode wird im Pfad der Interface-URI übergeben.
@@ -115,901 +113,52 @@
 					Die Ausgabe erfolgt als Javascript-Funktionsaufruf mit einem JSON-Objekt als Parameter.
 				</p>
 			</div>
-			<div class="item" id="interface-php">
-				<h4>PHP</h4>
-				<p>
-					Interface-URI: <code>http://api.mesngr.de/php/<em>&lt;methode&gt;</em></code>
+		</div>
+		<div class="item" id="api-methods">
+			<h3>Methoden</h3>
+			<div py:for="method in new" class="item" id="method-${method.name}">
+				<h4>${method.title}</h4>
+				<p><code>${method.name}${method.func_line}</code></p>
+				<p py:content="method.description">
+					Diese Methode at bis jetzt noch keine Beschreibung.
 				</p>
-				<p>
-					Die aufgerufene Methode wird im Pfad der Interface-URI übergeben.
-				</p>
-				<p>
-					Parameter können via HTTP per GET oder POST im Format <em>application/x-www-form-urlencoded</em> übergeben werden.
-				</p>
-				<p>
-					Die Ausgabe erfolgt als serialisiertes PHP-Objekt.
-				</p>
+				<h5>Parameter</h5>
+				<table class="docs">
+					<thead>
+						<tr>
+							<td>Parameter</td>
+							<td>Typ</td>
+							<td>Beschreibung</td>
+						</tr>					
+					</thead>
+					<tbody>
+						<tr py:for="arg in method.args">
+							<td>${arg.name}</td>
+							<td>${arg.typ}</td>
+							<td>${arg.description}</td>
+						</tr>
+					</tbody>
+				</table>
+				<py:if test="method.rets">
+				<h5>Ausgabe</h5>
+				<table class="docs">
+					<thead>
+						<tr>
+							<td>Parameter</td>
+							<td>Typ</td>
+							<td>Beschreibung</td>
+						</tr>					
+					</thead>
+					<tbody>
+						<tr py:for="arg in method.rets">
+							<td>${arg.name}</td>
+							<td>${arg.typ}</td>
+							<td>${arg.description}</td>
+						</tr>
+					</tbody>
+				</table>	
+				</py:if>
 			</div>
 		</div>
-	<div class="item" id="api-methods">
-		<h3>Methoden</h3>
-		<div class="item" id="method-route">
-			<h4>Route</h4>
-			<p><code>route</code></p>
-			<p>
-				Diese Methode ermittelt die Routing-Entfernung zwischen zwei Koordinaten.
-			</p>
-			<h5>Parameter</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>					
-				</thead>
-				<tbody>
-					<tr>
-						<td>apikey</td>
-						<td>str[20]</td>
-						<td>Der API Key</td>
-					</tr>
-					<tr>
-						<td>type</td>
-						<td>enum[car,bicycle,foot]</td>
-						<td>Die gewünschte Routing-Methode</td>
-					</tr>
-					<tr>
-						<td>flon</td>
-						<td>float</td>
-						<td>Der Längengrad des Startpunktes</td>
-					</tr>
-					<tr>
-						<td>flat</td>
-						<td>float</td>
-						<td>Der Breitengrad des Startpunktes</td>
-					</tr>
-					<tr>
-						<td>tlon</td>
-						<td>float</td>
-						<td>Der Längengrad des Zielpunktes</td>
-					</tr>
-					<tr>
-						<td>tlat</td>
-						<td>float</td>
-						<td>Der Breitengrad des Zielpunktes</td>
-					</tr>
-				</tbody>
-			</table>
-			<h5>Ausgabe</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>					
-				</thead>
-				<tbody>
-					<tr>
-						<td>status</td>
-						<td>bool</td>
-						<td>Fehlerindikator</td>
-					</tr>
-					<tr>
-						<td>distance</td>
-						<td>float</td>
-						<td>Die ermittelte Routing-Distanz in km</td>
-					</tr>
-				</tbody>
-			</table>	
-		</div>
-		<div class="item" id="method-dist">
-			<h4>Dist</h4>
-			<p><code>dist</code></p>
-			<p>
-				Diese Methode ermittelt die direkte Entfernung zwischen zwei Koordinaten.
-			</p>
-			<h5>Parameter</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>					
-				</thead>
-				<tbody>
-					<tr>
-						<td>apikey</td>
-						<td>str[20]</td>
-						<td>Der API Key</td>
-					</tr>
-					<tr>
-						<td>flon</td>
-						<td>float</td>
-						<td>Der Längengrad des Startpunktes</td>
-					</tr>
-					<tr>
-						<td>flat</td>
-						<td>float</td>
-						<td>Der Breitengrad des Startpunktes</td>
-					</tr>
-					<tr>
-						<td>tlon</td>
-						<td>float</td>
-						<td>Der Längengrad des Zielpunktes</td>
-					</tr>
-					<tr>
-						<td>tlat</td>
-						<td>float</td>
-						<td>Der Breitengrad des Zielpunktes</td>
-					</tr>
-				</tbody>
-			</table>
-			<h5>Ausgabe</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>					
-				</thead>
-				<tbody>
-					<tr>
-						<td>status</td>
-						<td>bool</td>
-						<td>Fehlerindikator</td>
-					</tr>
-					<tr>
-						<td>distance</td>
-						<td>float</td>
-						<td>Die ermittelte Routing-Distanz in km</td>
-					</tr>
-				</tbody>
-			</table>
-		</div>
-		<div class="item" id="method-geocode">
-			<h4>Geocode</h4>
-			<p><code>geocode</code></p>
-			<p>
-				Ermittelt die Koordinaten zu einer Adresse. Diese Methode ist Kostenpflichtig.
-			</p>
-			<h5>Parameter</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>					
-				</thead>
-				<tbody>
-					<tr>
-						<td>apikey</td>
-						<td>str[20]</td>
-						<td>Der API Key</td>
-					</tr>
-					<tr>
-						<td>type</td>
-						<td>enum[fast, complete]</td>
-						<td>Die Eingabemethode. Im Modus <em>fast</em> wird der Parameter <code>number</code> an den Parameter <code>street</code> angehängt sowie der Parameter <code>postcode</code> vor den Parameter <code>city</code>; Die Parameter <code>postcode</code> und <code>number</code> werden dann ignoriert.</td>
-					</tr>
-					<tr>
-						<td>street</td>
-						<td>str</td>
-						<td>Der Straßenname der Adresse</td>
-					</tr>
-					<tr>
-						<td>number</td>
-						<td>str</td>
-						<td>Die Hausnummer der Adresse</td>
-					</tr>
-					<tr>
-						<td>postcode</td>
-						<td>str</td>
-						<td>Die Postleitzahl der Adresse</td>
-					</tr>
-					<tr>
-						<td>city</td>
-						<td>str</td>
-						<td>Die Stadt der Adresse</td>
-					</tr>
-					<tr>
-						<td>country</td>
-						<td>str</td>
-						<td>Das Land der Adresse, ISO 3166</td>
-					</tr>
-				</tbody>
-			</table>
-			<h5>Ausgabe</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>					
-				</thead>
-				<tbody>
-					<tr>
-						<td>status</td>
-						<td>bool</td>
-						<td>Fehlerindikator</td>
-					</tr>
-					<tr>
-						<td>stage</td>
-						<td>enum[1,2,3]</td>
-						<td>
-							Grad des Erfolges des Geocodings:<br />
-							1 &rarr; Es stehen mehrere mögliche Adressen zur Auswahl.<br />
-							2 &rarr; Eine mögliche Adresse als Korrekturvorschlag.<br />
-							3 &rarr; Die Adresse konnte verifiziert und zugehörige Geokoordinaten ermittelt werden.
-						</td>
-					</tr>
-					<tr>
-						<td>data</td>
-						<td>array</td>
-						<td>
-							Die ermittelten Adressdaten
-						</td>
-					</tr>
-					<tr>
-						<td>data[i]</td>
-						<td>array</td>
-						<td>
-							Ein ermittelter Adressdatensatz
-						</td>
-					</tr>
-					<tr>
-						<td>data[i][street]</td>
-						<td>str</td>
-						<td>Name der Straße</td>
-					</tr>
-					<tr>
-						<td>data[i][nr]</td>
-						<td>str</td>
-						<td>Hausnummer</td>
-					</tr>
-					<tr>
-						<td>data[i][fragment]</td>
-						<td>str</td>
-						<td>Hausnummernzusatz (z.B. <em>a</em> bei <em>12a</em>)</td>
-					</tr>
-					<tr>
-						<td>data[i][postcode]</td>
-						<td>str</td>
-						<td>Postleitzahl</td>
-					</tr>
-					<tr>
-						<td>data[i][city]</td>
-						<td>str</td>
-						<td>Ort</td>
-					</tr>
-					<tr>
-						<td>data[i][country]</td>
-						<td>str[2]</td>
-						<td>Land (gemäß ISO 3166)</td>
-					</tr>
-					<tr>
-						<td>data[i][accuracy]</td>
-						<td>int</td>
-						<td>Genauigkeit (Genau &gt; Ungenau)</td>
-					</tr>
-					<tr>
-						<td>data[i][lat]</td>
-						<td>float</td>
-						<td>Breitengrad</td>
-					</tr>
-					<tr>
-						<td>data[i][lon]</td>
-						<td>float</td>
-						<td>Längengrad</td>
-					</tr>
-				</tbody>
-			</table>		
-		</div>
-		<div class="item" id="method-sms">
-			<h4>SMS</h4>
-			<p><code>sms</code></p>
-			<p>
-				Versendet eine SMS-Nachricht. Diese Methode ist kostenpflichtig.
-			</p>
-			<h5>Parameter</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>					
-				</thead>
-				<tbody>
-					<tr>
-						<td>apikey</td>
-						<td>str[20]</td>
-						<td>Der API Key</td>
-					</tr>
-					<tr>
-						<td>from</td>
-						<td>str[11]|tel[16]</td>
-						<td>Der gewünschte Absender (optional)</td>
-					</tr>
-					<tr>
-						<td>to</td>
-						<td>tel[15]</td>
-						<td>Emfänger-Nummer (gemäß ITU-T E.123)</td>
-					</tr>
-					<tr>
-						<td>ref</td>
-						<td>str</td>
-						<td>Referenz für Antworten</td>
-					</tr>
-					<tr>
-						<td>callback</td>
-						<td>str</td>
-						<td>Callback-URL für SMS-Antworten. Noch nicht implementiert.</td>
-					</tr>
-				</tbody>
-			</table>
-			<h5>Ausgabe</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>					
-				</thead>
-				<tbody>
-					<tr>
-						<td>status</td>
-						<td>bool</td>
-						<td>Fehlerindikator</td>
-					</tr>
-				</tbody>
-			</table>
-		</div>
-		<div class="item" id="method-bank">
-			<h4>Bank</h4>
-			<p><code>bank</code></p>
-			<p>
-				Prüft Bankdaten auf Plausibilität.
-			</p>
-			<h5>Parameter</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>					
-				</thead>
-				<tbody>
-					<tr>
-						<td>apikey</td>
-						<td>str[20]</td>
-						<td>Der API Key</td>
-					</tr>
-					<tr>
-						<td>country</td>
-						<td>[de]</td>
-						<td>Das Land des Bankdatenformates</td>
-					</tr>
-					<tr>
-						<td>bank</td>
-						<td>int[8]</td>
-						<td>Die Bankleitzahl</td>
-					</tr>
-					<tr>
-						<td>account</td>
-						<td>int[10]</td>
-						<td>Die Kontonummer (optional)</td>
-					</tr>
-				</tbody>
-			</table>
-			<h5>Ausgabe</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>					
-				</thead>
-				<tbody>
-					<tr>
-						<td>status</td>
-						<td>bool</td>
-						<td>Fehlerindikator</td>
-					</tr>
-					<tr>
-						<td>bank</td>
-						<td>array</td>
-						<td>Der Bankdatensatz</td>
-					</tr>
-					<tr>
-						<td>bank[id]</td>
-						<td>int[8]</td>
-						<td>Die Bankleitzahl</td>
-					</tr>
-					<tr>
-						<td>bank[name]</td>
-						<td>str</td>
-						<td>Name der Bank</td>
-					</tr>
-					<tr>
-						<td>bank[city]</td>
-						<td>str</td>
-						<td>Stadt</td>
-					</tr>
-					<tr>
-						<td>bank[bic]</td>
-						<td>str</td>
-						<td>Der BIC der Bank</td>
-					</tr>
-					<tr>
-						<td>account</td>
-						<td>array</td>
-						<td>Der Kontodatensatz</td>
-					</tr>
-					<tr>
-						<td>account[id]</td>
-						<td>int[10]</td>
-						<td>Die Kontonummer</td>
-					</tr>
-				</tbody>
-			</table>
-		</div>
-		<div class="item" id="method-bank">
-			<h4>Boxcar</h4>
-			<p><code>boxcar</code></p>
-			<p>
-				Sendet eine Push-Notification via Boxcar. Ist der Boxcar-user nicht subskribiert, wird statt der Nachricht eine Subskriptions-Anfrage gesendet.
-			</p>
-			<h5>Parameter</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>					
-				</thead>
-				<tbody>
-					<tr>
-						<td>apikey</td>
-						<td>str[20]</td>
-						<td>Der API Key</td>
-					</tr>
-					<tr>
-						<td>to</td>
-						<td>str</td>
-						<td>E-Mail-Adresse des Boxcar-Accounts</td>
-					</tr>
-					<tr>
-						<td>from</td>
-						<td>str</td>
-						<td>Absender</td>
-					</tr>
-					<tr>
-						<td>message</td>
-						<td>str</td>
-						<td>Die Nachricht</td>
-					</tr>
-					<tr>
-						<td>url</td>
-						<td>str</td>
-						<td>Die URL die aufgerufen werden soll</td>
-					</tr>
-				</tbody>
-			</table>
-			<h5>Ausgabe</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>					
-				</thead>
-				<tbody>
-					<tr>
-						<td>status</td>
-						<td>bool</td>
-						<td>Fehlerindikator</td>
-					</tr>
-				</tbody>
-			</table>
-		</div>
-		<div class="item" id="method-postcode-match">
-			<h4>Postcode-Match</h4>
-			<p><code>postcodematch</code></p>
-			<p>
-				Liefert die Schwerpunkt-Koordinaten aller Postleizahlengebiete innerhalb eines Bereiches. 
-			</p>
-			<h5>Parameter</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>					
-				</thead>
-				<tbody>
-					<tr>
-						<td>apikey</td>
-						<td>str[20]</td>
-						<td>Der API Key</td>
-					</tr>
-					<tr>
-						<td>bbox_n</td>
-						<td>float</td>
-						<td>Maximale Latitude</td>
-					</tr>
-					<tr>
-						<td>bbox_s</td>
-						<td>float</td>
-						<td>Minimale Latitude</td>
-					</tr>
-					<tr>
-						<td>bbox_e</td>
-						<td>float</td>
-						<td>Maximale Longitude</td>
-					</tr>
-					<tr>
-						<td>bbox_w</td>
-						<td>float</td>
-						<td>Minimale Longitude</td>
-					</tr>
-				</tbody>
-			</table>
-			<h5>Ausgabe</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>					
-				</thead>
-				<tbody>
-					<tr>
-						<td>status</td>
-						<td>bool</td>
-						<td>Fehlerindikator</td>
-					</tr>
-					<tr>
-						<td>postcodes</td>
-						<td>array</td>
-						<td>Ergebnisse</td>
-					</tr>
-					<tr>
-						<td>postcodes[i]</td>
-						<td>array</td>
-						<td>Ergebnis</td>
-					</tr>
-					<tr>
-						<td>postcodes[i][postcode]</td>
-						<td>str</td>
-						<td>Postleitzahl</td>
-					</tr>
-					<tr>
-						<td>postcodes[i][lat]</td>
-						<td>float</td>
-						<td>Latitude des Schwerpunktes</td>
-					</tr>
-					<tr>
-						<td>postcodes[i][lon]</td>
-						<td>float</td>
-						<td>Longitude des Schwerpunktes</td>
-					</tr>
-				</tbody>
-			</table>
-		</div>
-		<div class="item" id="method-postcode-shape">
-			<h4>Postcode-Shape</h4>
-			<p><code>postcodeshape</code></p>
-			<p>
-				Gibt eine Näherung an die geografische Definition eines Postleitzahlengebietes aus.
-			</p>
-			<h5>Parameter</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>					
-				</thead>
-				<tbody>
-					<tr>
-						<td>apikey</td>
-						<td>str[20]</td>
-						<td>Der API Key</td>
-					</tr>
-					<tr>
-						<td>postcode</td>
-						<td>str</td>
-						<td>Die Postleitzahl des Gebietes</td>
-					</tr>
-				</tbody>
-			</table>
-			<h5>Ausgabe</h5>
-			<table class="docs">
-				<thead>
-					<tr>
-						<td>Parameter</td>
-						<td>Typ</td>
-						<td>Beschreibung</td>
-					</tr>					
-				</thead>
-				<tbody>
-					<tr>
-						<td>status</td>
-						<td>bool</td>
-						<td>Fehlerindikator</td>
-					</tr>
-					<tr>
-						<td>postcode</td>
-						<td>str</td>
-						<td></td>
-					</tr>
-					<tr>
-						<td>center</td>
-						<td>array</td>
-						<td></td>
-					</tr>
-					<tr>
-						<td>center[lat]</td>
-						<td>flaot</td>
-						<td></td>
-					</tr>
-					<tr>
-						<td>center[lon]</td>
-						<td>flaot</td>
-						<td></td>
-					</tr>
-					<tr>
-						<td>bbox</td>
-						<td>array</td>
-						<td></td>
-					</tr>
-					<tr>
-						<td>bbox[n]</td>
-						<td>float</td>
-						<td></td>
-					</tr>
-					<tr>
-						<td>bbox[s]</td>
-						<td>float</td>
-						<td></td>
-					</tr>
-					<tr>
-						<td>bbox[w]</td>
-						<td>float</td>
-						<td></td>
-					</tr>
-					<tr>
-						<td>bbox[e]</td>
-						<td>float</td>
-						<td></td>
-					</tr>
-					<tr>
-						<td>shape</td>
-						<td>array</td>
-						<td>Alle Shapes dieses Postleitzahlengebietes</td>
-					</tr>
-					<tr>
-						<td>shape[i]</td>
-						<td>array</td>
-						<td>Ein Shape des Postleitzahlengebietes</td>
-					</tr>
-					<tr>
-						<td>shape[i][j]</td>
-						<td>array</td>
-						<td>Ein Punkt des Shapes</td>
-					</tr>
-					<tr>
-						<td>shape[i][j][lat]</td>
-						<td>array</td>
-						<td>Die Latitude des Punktes</td>
-					</tr>
-					<tr>
-						<td>shape[i][j][lon]</td>
-						<td>array</td>
-						<td>Die Longitude des Punktes</td>
-					</tr>
-				</tbody>
-			</table>
-		</div>
-	</div>
-	<div class="item" id="api-errors">
-		<h3>Fehlercode</h3>
-		<p>
-			Wenn der Ausgabeparameter <code>status</code> einen Fehler indiziert, werden alle weiteren Ausgabeparameter ersetzt durch die Parameter <code>code</code> und <code>msg</code>. 
-		</p>
-		<table class="docs">
-			<thead>
-				<tr>
-					<td>Parameter</td>
-					<td>Typ</td>
-					<td>Beschreibung</td>
-				</tr>					
-			</thead>
-			<tbody>
-				<tr>
-					<td>status</td>
-					<td>bool</td>
-					<td>Fehlerindikator</td>
-				</tr>
-				<tr>
-					<td>code</td>
-					<td>int[3]</td>
-					<td>Fehlercode</td>
-				</tr>
-				<tr>
-					<td>msg</td>
-					<td>str</td>
-					<td>Fehlermeldung</td>
-				</tr>
-				<tr>
-					<td>result</td>
-					<td></td>
-					<td>Optionale weitere Daten</td>
-				</tr>
-			</tbody>
-		</table>
-		<h4>Fehlercodes</h4>
-		<table class="docs">
-			<thead>
-				<tr>
-					<td>Code</td>
-					<td>Bedeutung</td>
-				</tr>					
-			</thead>
-			<tbody>
-				<tr>
-					<td>900</td>
-					<td>Die aufgerufene Methode existiert nicht</td>
-				</tr>
-				<tr>
-					<td>901</td>
-					<td>Der API-Key ist ungültig</td>
-				</tr>
-				<tr>
-					<td>902</td>
-					<td>Fehler in externer API</td>
-				</tr>
-				<tr>
-					<td>903</td>
-					<td>Encoding-Problem: Ein Nicht-UTF-8-Zeichen hat den Parser gestoppt</td>
-				</tr>
-				<tr>
-					<td>904</td>
-					<td>Es wurden keine gültigen JSON-Daten im POST-Request gefunden</td>
-				</tr>
-				<tr>
-					<td>910</td>
-					<td>Ungültige Eingabemethode</td>
-				</tr>
-				<tr>
-					<td>911</td>
-					<td>Die eingegebenen Daten reichen nicht aus, um die Adresse zu bestimmen</td>
-				</tr>
-				<tr>
-					<td>912</td>
-					<td>Die Adresse wurde nicht gefunden</td>
-				</tr>
-				<tr>
-					<td>913</td>
-					<td>Für diese Adresse wurden keine Koordinaten gefunden</td>
-				</tr>
-				<tr>
-					<td>914</td>
-					<td>Die Koordinaten für diese Adresse sind nicht eindeutig</td>
-				</tr>
-				<tr>
-					<td>921</td>
-					<td>Ungültige Koordinaten</td>
-				</tr>
-				<tr>
-					<td>922</td>
-					<td>Keine Route gefunden</td>
-				</tr>
-				<tr>
-					<td>930</td>
-					<td>Keine Verbindung zum Gateway</td>
-				</tr>
-				<tr>
-					<td>931</td>
-					<td>Empfänger fehlerhaft</td>
-				</tr>
-				<tr>
-					<td>932</td>
-					<td>Absenderkennung zu lang</td>
-				</tr>
-				<tr>
-					<td>933</td>
-					<td>Nachrichtentext zu lang</td>
-				</tr>
-				<tr>
-					<td>934</td>
-					<td>Messagetyp nicht korrekt</td>
-				</tr>
-				<tr>
-					<td>935</td>
-					<td>Falscher SMS-Typ</td>
-				</tr>
-				<tr>
-					<td>936</td>
-					<td>Fehler bei Login</td>
-				</tr>
-				<tr>
-					<td>937</td>
-					<td>Guthaben zu gering</td>
-				</tr>
-				<tr>
-					<td>938</td>
-					<td>Netz wird von Route nicht unterstützt</td>
-				</tr>
-				<tr>
-					<td>939</td>
-					<td>Feature nicht über diese Route möglich</td>
-				</tr>
-				<tr>
-					<td>940</td>
-					<td>Ungültige BLZ</td>
-				</tr>
-				<tr>
-					<td>941</td>
-					<td>Ungültige Kontonummer</td>
-				</tr>
-				<tr>
-					<td>942</td>
-					<td>Ungültiges Land</td>
-				</tr>
-				<tr>
-					<td>945</td>
-					<td>Ungültiger Empfänger</td>
-				</tr>
-				<tr>
-					<td>946</td>
-					<td>Keine Nachricht angegeben</td>
-				</tr>
-				<tr>
-					<td>947</td>
-					<td>Der Empfänger ist nicht subskribiert</td>
-				</tr>
-				<tr>
-					<td>948</td>
-					<td>Der Empfänger hat den Dienst abgeschaltet</td>
-				</tr>
-				<tr>
-					<td>950</td>
-					<td>Die Postleitzahl ist ungültig.</td>
-				</tr>
-				<tr>
-					<td>951</td>
-					<td>Für diese Postleitzahl gibt es keine Shapes.</td>
-				</tr>
-				<tr>
-					<td>952</td>
-					<td>In diesem Bereich wurden keine Postleitzahlen gefunden.</td>
-				</tr>
-				<tr>
-					<td>953</td>
-					<td>Dieser Bereich enthält zu viele Postleitzahlen.</td>
-				</tr>
-				
-				<tr>
-					<td>999</td>
-					<td>Unbekannter Fehler</td>
-				</tr>
-			</tbody>
-		</table>
-	</div>
 	</body>
 </html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/iro/newuser.py	Tue Dec 06 23:53:18 2011 +0100
@@ -0,0 +1,127 @@
+# -*- coding: utf-8 -*-
+#Copyright (C) 2009  Sandro Knauß <bugs@sandroknauss.de>
+
+#This program is free software; you can redistribute it and/or modify it under the terms
+#of the GNU General Public License as published by the Free Software Foundation;
+#either version 3 of the License, or any later version.
+#This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+#without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+#See the GNU General Public License for more details.
+
+#You should have received a copy of the GNU General Public License
+#along with this program; if not, see <http://www.gnu.org/licenses/>.
+
+class User: 
+    '''
+    class for a xmlrpc user
+    '''
+    
+    def status(self, apikey, id=None, detailed=False):
+        u'''Gibt den aktuellen Status eines Auftrages zurück.
+
+        Keywords:
+        apikey[string]: Der API Key
+        id[hash]: Eine Auftragsnummer
+        detailed[boolean]: Details ausgeben
+
+        Return:
+        jobs[list]: Eine Liste der Aufträge.
+        job.name[string]: Angebener Name
+        job.status[string]: Status des Auftrages
+
+
+        '''
+        pass
+
+    def stop(self, apikey,id):
+        u'''Stoppt den angegeben Auftrag.
+
+        Keywords:
+        apikey[string]: Der API Key
+        id[hash]: Eine Auftragsnummer
+
+        Return:
+
+        '''
+        pass
+    
+    def sms(self, apikey, message, recipients, route="default"):
+        u'''Versendet eine SMS.
+
+        Keywords:
+        apikey[string]: Der API Key
+        message[string]: Nachricht
+        recipients[list]: eine Liste von Emfänger-Nummern (gemäß ITU-T E.123)
+        route[string|list]: Route über den geschickt werden soll, 
+                            oder eine Liste von Routen, um Fallbacks anzugeben
+
+        Return:
+        id[hash]: Die ID des Auftrages
+
+        '''
+        pass
+   
+    
+    def fax(self, apikey, subject, fax, recipients, route="default"):
+        u'''Versendet ein FAX.
+
+        Keywords:
+        apikey[string]: Der API Key
+        subject[string]: Der Betreff
+        fax[string]: Das PDF base64 kodiert
+        recipients[list]: Eine Liste von Emfänger-Nummern (gemäß ITU-T E.123)
+        route[string|list]: Route über den geschickt werden soll, 
+                            oder eine Liste von Routen, um Fallbacks anzugeben
+
+        Return:
+        id[hash]: Die ID des Auftrages
+
+        '''
+        pass
+
+    def mail(self, apikey, subject,  body, recipients, frm, route="default"):
+        u'''Versendet eine Email.
+
+        Keywords:
+        apikey[string]: Der API Key
+        subject[string]: Der Betreff
+        body[string]: Der Email Body
+        recipients[list]: Eine Liste von Emailadressen
+        frm[string]: Die Absender Emailadresse
+        route[string|list]: Route über den geschickt werden soll, 
+                            oder eine Liste von Routen, um Fallbacks anzugeben
+
+        Return:
+        id[hash]: Die ID des Auftrages
+
+        '''
+        pass
+       
+    def routes(self, apikey, typ):
+        u'''Gibt eine Liste aller verfügbaren Provider zurück.
+
+        Keywords:
+        apikey[string]: Der API Key
+        typ[string]: Der Typ zu dem die Providerloste ausgeben werden soll
+                     Einer der Liste ["sms","fax","mail"]
+
+        Return:
+        providerlist[list]: Eine Liste aller möglichen Provider
+
+        '''
+        pass
+        
+    def defaultRoute(self, apikey, typ):
+        u'''Gibt den Standardprovider zurück.
+ 
+        Keywords:
+        apikey[string]: Der API Key
+        typ[string]: Der Typ zu dem die Providerloste ausgeben werden soll
+                     Einer der Liste ["sms","fax","mail"]
+
+        Return:
+        provider[string]: Der Standardprovider für den angeben Typ
+
+
+        '''
+        pass
--- a/iro/user.py	Tue Dec 06 19:46:00 2011 +0100
+++ b/iro/user.py	Tue Dec 06 23:53:18 2011 +0100
@@ -42,9 +42,7 @@
 
         Keywords:
         id[hash]: Eine Auftragsnummer
-                  default - alle Aufträge ausgeben
         detailed[boolean]: Details ausgeben
-                           default - False
 
         Return:
         jobs[list]: Eine Liste der Aufträge.
@@ -99,8 +97,7 @@
         Keywords:
         message[string]: Nachricht
         recipients[list]: eine Liste von Emfänger-Nummern (gemäß ITU-T E.123)
-        provider[string]: Provider über den geschickt werden soll;
-                          default - verschickt über den Standardprovider
+        provider[string]: Provider über den geschickt werden soll
 
         Return:
         id[hash]: Die ID des Auftrages
@@ -120,8 +117,7 @@
         subject[string]: der Betreff
         fax[string]: das pdf base64 kodiert
         recipients[list]: eine Liste von Emfänger-Nummern (gemäß ITU-T E.123)
-        provider[string]: Provider über den geschickt werden soll;
-                          default - verschickt über den Standardprovider
+        provider[string]: Provider über den geschickt werden soll
 
         Return:
         id[hash]: Die ID des Auftrages
@@ -147,8 +143,7 @@
         body[string]: der Email Body
         recipients[list]: eine Liste von Emailadressen
         frm[string]: Die Absender Emailadresse
-        provider[string]: Provider über den geschickt werden soll;
-                          default - verschickt über den Standardprovider
+        provider[string]: Provider über den geschickt werden soll
 
         Return:
         id[hash]: Die ID des Auftrages