Nicht nur JIRA bietet eine REST-API um Vorgänge etc. zu erstellen und zu verwalten. Auch Confluence bietet eine REST-API, mit der sehr viele Operationen durchgeführt werden können.
Mehr Informationen hierzu kannst auf dieser Website finden: https://developer.atlassian.com/cloud/confluence/rest/intro/
Mich hat vor allem die Möglichkeit interessiert, mit K2 neue Seiten auf einem Confluence Space anzulegen.
Hierzu bietet die Confluence REST-API die „Content“ Operation. Sofern man den Confluence Cloud Service verwendet, sieht die REST-URL in etwa so aus:
https://IhrAtlassianAccount.atlassian.net/wiki/rest/api/content/
Die Authentifizierung findet über einen API-Token statt, der auf Deiner Atlassian Profilverwaltung erstellt werden kann. Siehe hierzu auch:
Damit die Authentifizierung mit dem hier beschriebenen ServiceBroker funktioniert, muss der API-Token noch „Base64“-endcoded werden – das kann man z.B. auf dieser Seite machen:
Der erzeugte String muss zusammen mit dem Prefix „Basic“ (Beispiel: Basic WW91ci1BcGktVG9rZW4=) an der später beschriebenen Service Instanz angegeben werden (siehe BasicAuthToken Service Instanz am Ende des Artikels)
Um nun mit Hilfe von K2 eine neue Seite zu erstellen, bietet der sehr einfach gehaltene Service Broker folgende Methoden:
- CreateContent
- CreateContentByJsonBody
Beide Methoden liefern dieselben Informationen zurück, wie z.B: den Link zur angelegten Seite, die ID der neuen Seite sowie Informationen zum Erfolg der Operation (ResponseCode / ResponseMessage)
CreateContent
Diese Methode fordert mindestens 3 Informationen:
- SpaceKey (in welchem Space soll die Seite angelegt werden)
- PageType (welche Art von Seite soll angelegt werden. Es gibt 2 Möglichkeiten: page und blogpost)
- PageTitle (wie soll die Seite heißen)
- ContentBody (OPTIONAL) – wenn die Seite direkt mit Inhalt befüllt werden soll, kann dieser Inhalt mit ContentBody definiert werden. Es ist Möglich HTML-Code zu übergeben.
Beispiel:
(1) Seitentitel
(2) Space
(3) Type (page / blogpost)
(4) Content
(5) Methode ausführen
Ergebnis:
CreateContentByJsonBody
CreateContentByJsonBody erfordert nur einen Parameter zur Ausführung – einen JSON-String, der alle erforderlichen Informationen zur Seite, die angelegt werden soll enthält.
I.d.R. sind das mindestens die Informationen zum Seitentyp, dem Space in dem die Seite angelegt werden soll und ein Seitentitel – z.B:
{ "type": "page", "title": "Pagetitle", "space": { "key": "DeinSpaceKey" } }
Möchte man direkt die Seite auch mit Inhalt befüllen, so kann der JSON-String mit „body“ erweitert werden:
{ "type": "page", "title": "Pagetitle", "space": { "key": "DeinSpaceKey" }, "body":{ "storage":{ "value":"<p>This <b>is</b> a new page</p>", "representation":"storage" } } }
Beispiel:
(1) JSON
(2) Methode ausführen
Eregebnis:
Service Broker / Service Instance
Die Konfiguration auf K2-Seite sieht folgendermaßen aus
ServiceBroker registrieren
Service Instanz
Ergebnis:
Artikelbild von Engin Akyurt auf Pixabay