Eigene Apps mit Public REST API

Von Protonet Team. Veröffentlicht 22. Januar 2015.

Protonet REST API

Mit dem Update auf Protonet SOUL 2.1 im Januar 2015 wurde auch die REST API für SOUL, dem sozialen Betriebssystem für die Protonet Personal Server, veröffentlicht. API steht für Application Programming Interface. Auf Deutsch: „Schnittstelle zur Anwendungsprogrammierung“. Die API stellt Entwicklern ein Interface zur Verfügung, um mit SOUL zu kommunizieren und Kernfunktionalitäten auch in externen Apps zu nutzen.

Die API im Einsatz

Bei Protonet wird die API bereits für die mobile MessengerApp (iOS und Android) verwendet. Die App authentifiziert den Benutzer mit den Anmeldedaten von SOUL, ruft Kontakte und Nachrichten ab und ermöglicht natürlich das Versenden von Nachrichten.

Protobot erinnert uns an den Küchendienst

Nachricht in SOUL: Protobot erinnert uns an den Küchendienst

Die Messenger App ist ein Standardfall für den Einsatz der API, aber viele weitere Anwendungsfälle sind künftig denkbar.
Silvano Wegener, Protonet Support-Held, hat beispielsweise einen Protobot in Python geschrieben, der sich an bestehende Nutzer oder einen neuen Nutzer andockt und automatisierte Antworten und Befehle ausführen kann. Wir setzen den Bot mit einer Erweiterung, zum Beispiel für unseren internen Küchen- und Putzplan ein. Auf einem externen Server läuft die Küchenplanapp, die uns anzeigt wer das nächste Mal den Müll rausbringen oder den Geschirrspüler ausräumen muss.

Ausgegeben wird das Ganze auf einem iPad, das prominent in der Protonet Küche hängt. Der Protobot schreibt dann den jeweiligen „Diensthabenden“ sicherheitshalber noch mal per Nachricht in SOUL an, damit auch niemand vergisst, dass er an der Reihe ist. Wir können dem Bot – wieder direkt über eine Nachricht – mitteilen, wenn wir „out of office“, also z.B. im Urlaub sind, sodass die nächste Person für den Küchendienst gewählt wird.
Der Protobot steht als Open Source auf unserer Github Seite für alle Interessierten bereit.

Bildschirmfoto-2015-01-21-um-12.45.24

Unser Küchendienstplan

Was unterstützt die API heute, was morgen?

Die Protonet API ermöglicht aktuell den Zugriff auf die Daten von Gruppen, privaten Nachrichten und Benutzern. Die Kommunikation und sogar der Datei-Upload sind also heute schon möglich. In Zukunft wird die API erweitert und um die Ansteuerung von Aufgaben, des Kalenders und Dateien ergänzt.
Android Entwickler aufgepasst: Unser Entwickler Joschka hat eine kleine Java Bibliothek geschrieben, um komfortabel auf die API zugreifen zu können.

Wer kann die API nutzen?

Um die API zu nutzen, musst du natürlich einen Benutzeraccount auf einem Protonet Server besitzen und kannst ausschließlich auf die Daten zugreifen, die auch deine regulären Benutzerrechte einschließen.
Der Datenaustausch erfolgt im JSON Format und kann damit komfortabel in fast allen Programmiersprachen verarbeitet werden.
Die Dokumentation zur Protonet REST API findest du auf deiner Protonet Box unter Hilfe, bzw. unter http://<boxname>.protonet.info/

Die REST API im Kurzbeispiel

Zu guter Letzt gibt’s noch ein Beispiel wie du mit dem Unix Werkzeug „cURL“ eine API Anfrage stellst, um deine aktuellen Gruppen aufzulisten:

curl -X GET https://<deine-box>.protonet.info/api/v1/projects --user 'deine-email:dein-passwort'

Und so sieht eine Beispielantwort aus:


[
  {
    "url": "http://127.0.0.1:3001/api/v1/projects/1",
    "created_at": "2014-12-30T10:31:34+01:00",
    "updated_at": "2014-12-30T10:31:34.000+01:00",
    "id": 1,
    "name": "epic Testgruppe",
    "last_meep_date": "2014-12-30T11:49:00.000+01:00",
    "current_meep_no": 4,
    "last_meep_user": {
      "url": "http://127.0.0.1:3001/api/v1/users/1",
      "created_at": "2014-12-30T15:35:41+01:00",
      "updated_at": "2014-12-30T15:35:41.000+01:00",
      "id": 1,
      "first_name": "Joschka",
      "last_name": "Schulz",
      "email": "joschka@protonet.info",
      "avatar": "http://127.0.0.1:3001/system/users/avatars/000/000/001/thumb/avatar_med.jpg?1419938155",
      "role": "admin",
      "deactivated": false,
      "username": "joschka.schulz",
      "last_active_at": "2014-12-30T15:42:02.000+01:00",
      "online": 
    },
    "last_meep": {
      "created_at": "2014-12-30T11:49:00+01:00",
      "updated_at": "2014-12-30T11:49:00.000+01:00",
      "id": 176,
      "message": "let's do some epic stuff",
      "no": 4,
      "type": "Meep",
      "user": {
        "url": "http://127.0.0.1:3001/api/v1/users/1",
        "created_at": "2014-12-30T15:35:41+01:00",
        "updated_at": "2014-12-30T15:35:41.000+01:00",
        "id": 1,
        "first_name": "Joschka",
        "last_name": "Schulz",
        "email": "joschka@protonet.info",
        "avatar": "http://127.0.0.1:3001/system/users/avatars/000/000/001/thumb/avatar_med.jpg?1419938155",
        "role": "admin",
        "deactivated": false,
        "username": "joschka.schulz",
        "last_active_at": "2014-12-30T15:42:02.000+01:00",
        "online": true
      },
      "files": [

      ]
    },
    "subscription": {
      "id": 2,
      "last_seen_meep_no": 4,
      "url": "http://127.0.0.1:3001/api/v1/projects/1/subscriptions/2"
    }
  },
  {
    "url": "http://127.0.0.1:3001/api/v1/projects/2",
    "created_at": "2014-12-30T10:31:26+01:00",
    "updated_at": "2014-12-30T10:31:26.000+01:00",
    "id": 2,
    "name": "Cat gif share group",
    "last_meep_date": "2014-12-30T11:48:46.000+01:00",
    "current_meep_no": 1,
    "last_meep_user": {
      "url": "http://127.0.0.1:3001/api/v1/users/1",
      "created_at": "2014-12-30T15:35:41+01:00",
      "updated_at": "2014-12-30T15:35:41.000+01:00",
      "id": 1,
      "first_name": "Joschka",
      "last_name": "Schulz",
      "email": "joschka@protonet.info",
      "avatar": "http://127.0.0.1:3001/system/users/avatars/000/000/001/thumb/avatar_med.jpg?1419938155",
      "role": "admin",
      "deactivated": false,
      "username": "joschka.schulz",
      "last_active_at": "2014-12-30T15:42:02.000+01:00",
      "online": true
    },
    "last_meep": {
    "created_at": "2014-12-30T11:48:46+01:00",
    "updated_at": "2014-12-30T11:48:46.000+01:00",
    "id": 175,
    "message": "Here some cat gifs",
    "no": 1,
    "type": "Meep",
    "user": {
      "url": "http://127.0.0.1:3001/api/v1/users/1",
      "created_at": "2014-12-30T15:35:41+01:00",
      "updated_at": "2014-12-30T15:35:41.000+01:00",
      "id": 1,
      "first_name": "Joschka",
      "last_name": "Schulz",
      "email": "joschka@protonet.info",
      "avatar": "http://127.0.0.1:3001/system/users/avatars/000/000/001/thumb/avatar_med.jpg?1419938155",
      "role": "admin",
      "deactivated": false,
      "username": "joschka.schulz",
      "last_active_at": "2014-12-30T15:42:02.000+01:00",
      "online": true
    },
    "files": [

    ]
  },
  "subscription": {
    "id": 66,
    "last_seen_meep_no": 1,
    "url": "http://127.0.0.1:3001/api/v1/projects/2/subscriptions/66"
    }
  }
]