JSON-API

Token

Wenn Sie eine gültige Anmeldung im FlypSite-Backend haben, können Sie das API-Token auf der Seite Clients ablesen:

  • Klicken Sie auf “edit” in der Spalte “HTML-Injection”
  • In der Zeile “Client-Token” finden Sie das für API-Abrufe benötigte Token.
  • Schalten Sie Ihren Client in den Poll-Modus, um nur die JSON-API zu nutzen. (Achtung: Diese Einstellung ist momentan nur administrativ änderbar.)

Syntax der API-Abrufe

Globale Abrufe:

https://flypsite.appspot.com/v1/{{token}}/{{argument}}.json?{{commit}}

Streamspezifische Abrufe:

https://flypsite.appspot.com/v1/{{token}}/s/{{streamname}}/{{index}}/{{count}}/{{argument}}.json?{{commit}}

Abfolge der Abrufe:

Verpflichtender Start-Abruf, vereindeutigt mit random:

https://flypsite.appspot.com/v1/{{token}}/first.json?872659865

Response:

{
	"revision":4,
	"commit":"403c3b37-d33c-47d7-859f-c57beba31e4f",
	"eventid":3292,
	"user":"a76b496f-05be-41a0-ba70-eec37c141ad3",
	"mode":"poll",
	"ackuser":true
}

Nutzen Sie für alle weiteren Abrufe den Wert commit des jeweils letzten Abrufs.

Initialdatenabruf

https://flypsite.appspot.com/v1/{{token}}/initial.json?{{commit}}

Response:

{
"next":2737,
"eventid":3431,
"frames":[],
"more":true,
"commit":"87d0113b-07fe-4dcb-b7bc-615ae61fa831",
"updates":[
	{},{},{},{},{},{},{},{},{},{},{},{},
	{
		"marked":false, 
		"aired":false, 
		"stream":"out1", 
		"messageupdate":false, 
		"index":2880, 
		"id":"126613885", 
		"eclass":"stream", 
		"message":{ 
			"srvinfo":"",
			"link":"https:\/\/www.youtube.com\/watch?v=J5BpePXtYpI",
			"media":{
				"image":{ 
					"notfound":false,"center":{"x":640,"y":360},"width":1280,"zoom":false,"detail":{"x":0,"width":1280,"y":0,"height":720}, "url":"https:\/\/i.ytimg.com\/vi\/J5BpePXtYpI\/maxresdefault.jpg","height":720
				},
				"av":{
					"duration":0.0,"playerurl":"https:\/\/www.youtube.com\/embed\/J5BpePXtYpI","width":1280,"url":"","height":720
				},
				"service":"youtube",
				"page":{},
				"source":"https:\/\/www.youtube.com\/watch?v=J5BpePXtYpI",
				"id":53252547,
				"type":"video",
				"key":"J5BpePXtYpI"
			},
			"type":"message",
			"layout":"video",
			"size":"base",
			"service":"youtube",
			"srvlink":"",
			"srvid":"",
			"style":"plain",
			"time":"Sun, 21 Mar 2021 09:56:21 +0100",
			"text":"Zur Nacht der Bibliotheken stellt sich der Düsseldorfer Krimiautor Horst Eckert im Gespräch mit Tim Tobias von der Ratinger Stadtbibliothek selbst vor und li...",
			"id":81189822,
			"user":{
				"service":"www", "name":"YouTube", "icon":"https:\/\/www.youtube.com\/s\/desktop\/daaab134\/img\/favicon_32.png", "link":"http:\/\/www.youtube.com\/", "handle":"youtube.com", "style":"", "id":14304695, "hash":673290609, "status":""
			},
			"headline":"Nacht der Bibliotheken - Lesung und Interview mit dem Autor Horst Eckert",
			"info":""
		}
	}
],
"revision":4
}

Neben Verwaltungsinformationen erhalten Sie mit diesem Abruf bereits die Initialbefüllung Ihrer Social Wall. Die Property updates enthält eine Liste der aktuell gültigen Posts.

Eine Nachricht kann dabei in mehreren Listen auftauchen. Ihr Client sollte die Hierarchie envelope > message nicht ignorieren: envelope.stream benennt den Stream, in dem eine Nachricht ausgeliefert wird. Ein envelope enthält eine message mit den eigentlichen Nutzdaten. Wird im FlypSite-Backend ein Post gelöscht (d.h.: aus einer öffentlichen Liste entfernt), so wird ein envelope entfernt. Ändert sich der Text einer Nachricht, so werden messages modifiziert, u.U. in mehreren envelopes.

Properties, die direkt im FlypSite-Publisher geändert werden können (und die Sie z.B. als Klassennamen in Ihrem Client verwenden können, um gestalterische Effekte zu erreichen), sind: message.layout, message.size, message.style.

Wie bei jedem Abruf wird auch hier die Angabe commit für den nächsten Abruf benötigt. Die Property next bezeichnet den Index für den nächsten Paging-Abruf, falls Sie auf out1 weiter-pagen. Die Property more zeigt, ob weitere Nachrichten vorliegen. Speichern Sie die revision (4), um den Wert später bei Update-Anfragen nutzen zu können.

Paging

a. Paging auf der Liste out1:

Um auf der Liste out1 (“Redaktionelle Ausgangsliste” im FlypSte-Backend) zu pagen, nutzen Sie die next-Angabe aus dem vorangehenden Aufruf (im Beispiel hier 2737), eine Seitengröße von 30 sowie den commit aus der letzten Response, um die nächsten 30 Posts abzurufen:

https://flypsite.appspot.com/v1/{{token}}/s/out1/2737/30/desc.json?87d0113b-07fe-4dcb-b7bc-615ae61fa831

Response:

{
"layout":null,
"next":2466,
"_nitems":30,
"_start":2737,
"size":30,
"stream":"out1",
"more":true,
"style":null,
"updates":[]
}

updates wird wieder eine Sammlung von Posts enthalten; next dient zum weiter-pagen.

b. Paging auf anderen Streams:

Bestimmen Sie beim Einlesen der initial.json den niedrigsten index-Wert für einen Stream. Nutzen Sie diesen als Ausgangspunkt für Ihren Abruf von desc.json.

Updates

Um die JSON-API für Updates zu nutzen, rufen Sie mit einer Frequenz von maximal einem Abruf pro 60 Sekunden die carrier.json vereindeutigt ab:

https://flypsite.appspot.com/v1/{{token}}/carrier.json?8456829346

Response:

{
"revision":5,
"commit":"403c3b37-d33c-47d7-859f-c57beba31e4f",
"eventid":3431
}

Bestimmen Sie anhand der hier erhaltenen revision die nötigen Aufrufe: Erhöhen Sie die beim initialen oder vorangehenden Aufruf erhaltene revision um 1 und berechnen Sie {{rev}} wie folgt:

("0000" + (abzurufenderev % 256).toString(16)).substr(-4)

Nutzen Sie commit, um den folgenden Aufruf zu parametrisieren:

`https://flypsite.appspot.com/v1/{{token}}/u/{{rev}}/update.json?{{commit}}

in diesem Fall:

https://flypsite.appspot.com/v1/{{token}}/u/0005/update.json?403c3b37-d33c-47d7-859f-c57beba31e4f

Response:

{
"eventid":3431,
"more":false,
"commit":"5ef19fe6-a33b-4c7d-854b-c0bca5510a9b",
"updates":[],
"revision":5
}

Neue Posts, Aktualisierungen und Löschungen

action: "new" auf dem Envelope eines Updates zeichnet einen neuen Post aus, action: "delete" die Löschung und action: "update" die Modifikation eines vorhandenen Posts.