Für den [[Open/Close-Monitor]] gibt es eine minimale API über HTTP, um die maschinelle Verarbeitung zu erleichtern.

{{Hinweis|Die in diesem Artikel beschriebene API wird auf lange Sicht nicht mehr fortgeführt, neuere Implementierungen sollten die SpaceAPI verwenden.}}
;Randbemerkung: Ich ([[Benutzer:Daniel Bohrer|Daniel Bohrer]]) hatte damals™ eine eigene API für unsere minimalen Bedürfnisse entworfen. Später bin ich auf das Projekt [http://hackerspaces.nl/spaceapi SpaceAPI] von Hackerspaces.nl gestoßen, das darauf abzielt, viele Hackerspaces mit einer möglichst konsistenten API ansprechen zu können (z.&nbsp;B. hier eine [http://hackerspaces.me/wall Beispielanwendung], benötigt JavaScript). Die JSON-Version unter <tt>https://status.stratum0.org/status.json</tt> implementiert daher beide APIs, die SpaceAPI sowie die hier beschriebene.

== Formate ==
Es stehen folgende Formate zur Verfügung:
<ul><li>
{{WP|JSON}}, über die URL <tt>https://status.stratum0.org/status.json</tt><br />
Beispiel:
<pre>
{
  "version": "0.1", 
  "isOpen": false, 
  "since": "2012-01-30T03:54:38.804565"
}</pre>
</li><li>
{{WP|XML}}, über die URL <tt>https://status.stratum0.org/status.xml</tt><br />
Beispiel:
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <status version="0.1">
   <isOpen>false</isOpen>
   <since>2012-01-30T03:54:38.804565</since>
 </status>
</li><li>
Schlüssel-Wert-Paare nach RFC 822, über die URL <tt>https://status.stratum0.org/status.txt</tt><br />
Beispiel:
 Version: 0.1
 IsOpen: false
 Since: 2012-01-30T03:54:38.804565
</li><li>
direkte Abfrage der PNG-Grafik, über die URL <tt>https://status.stratum0.org/status.png</tt>. Die Grafik zeigt den Öffnungsstatus in Form einer roten bzw. grünen Grafik mit Aufschrift “OPEN” bzw. “CLOSED” auf 200×50 Pixeln an.
</li></ul>

Um eine hohe Last durch Anfragen zu vermeiden, wird der HTTP-Client über die HTTP-Header "Expires" und "Cache-Control" angewiesen, die Ergebnisse der Anfragen für 5 Minuten zwischenzuspeichern.

Alternativ ist die Abfrage auch über HTTPS möglich.

== Datenfelder ==
=== Versionsnummer ===
Versionsnummer der API, mit der die Abfrage generiert wurde
;Datentyp: String der Form <tt>([0-9]+.){1-3}[0-9]+)</tt>
;JSON: Attribut <tt>version</tt>
;XML: Attribut <tt>version</tt> (CDATA) des Wurzelelementes <tt>&lt;status></tt>
;RFC822: Feld <tt>Version</tt>
;Anmerkungen: Die aktuelle Versionsnummer ist 0.1

=== Öffnungsstatus ===
Der aktuelle Öffnungsstatus des Hackerspace
;Datentyp: Boolean
:*<tt>''true''</tt>: Space is geöffnet
:*<tt>''false''</tt>: Space ist geschlossen
;JSON: Attribut <tt>isOpen</tt>
;XML: Text-Inhalt (CDATA) des Elements <tt>&lt;isOpen></tt>
;RFC822: Feld <tt>IsOpen</tt>

=== Änderungsdatum ===
Der Zeitpunkt, wann der Öffnungsstatus das letzte mal verändert wurde, in der lokalen Zeitzone (Europe/Berlin, {{WP|MEZ}}/{{WP|MESZ}})
;Datentyp: String mit Datum nach ISO 8601 (''YYYY-MM-DDTHH:MM:SS.mmmmmm'')
;JSON: Attribut <tt>since</tt>
;XML: Text-Inhalt (CDATA) des Elements <tt>&lt;since></tt>
;RFC822: Feld <tt>Since</tt>

[[Kategorie:Projekte]]