- Token abrufen
- Posts im gewünschten Zeitraum abrufen
- Details zu den relevanten Posts abrufen
- Anhänge herunterladen
OAuth2-Token abrufen
Authorization
Header mit einem gültigen Token setzen. Bevor Du also Anfragen an die API selbst stellst, musst Du ein Token abrufen. Die Authentifizierung basiert auf OAuth2 mit demgrant_type
password
. Dieclient_id
muss auf client_id
gesetzt werden.curl -X POST --location "<https://$DOMAIN>/auth/realms/$TENANT/protocol/openid-connect/token" \\
-H "Content-Type: application/x-www-form-urlencoded" \\
-d "grant_type=password&client_id=external-content&username=$USERNAME&password=$PASSWORD"
{
"access_token": "eyJhbG<...>",
"expires_in": 86400,
"refresh_expires_in": 10800,
"refresh_token": "eyJhbG<...>",
"token_type": "Bearer",
"not-before-policy": 0,
"session_state": "c85a7b5c-ec06-4038-bf3c-7fee5748a674",
"scope": "email profile"
}
access_token
speichern, da er für die folgenden Anfragen an die API benötigt wird. Das Token hat eine definierte Ablaufzeit, expires_in
, und kann für diesen Zeitraum verwendet werden. Es ist also nicht notwendig, für jede Anfrage ein neues Token abzurufen.Posts lesen
Alle Posts abrufen, z. B. in einem vollständigen Synchronisierungsszenario
/posts
Route ohne Abfrageparameter aufrufen.curl "<https://$DOMAIN/api/external/post/v1/posts>" -H "Accept: application/json" -H "Authorization: Bearer $access_token"
{
"posts": [
{
"id": "075a4c3c-d285-4498-a221-1d4895abb5e7",
"published_at": "2022-01-18T12:27:04.718695Z",
"updated_at": "2022-01-20T09:11:38.123889Z"
},
{
"id": "3ef1f74f-412a-480f-a315-38a2fc14ec60",
"published_at": "2022-01-18T12:27:12.205555Z"
},
{
"id": "a6f02553-3b96-425e-aec3-7e841bc14457",
"published_at": "2022-01-18T12:27:17.814976Z",
"deleted_at": "2022-01-20T10:07:58.902128Z"
},
{
"id": "f1845fdf-d4a5-4a3f-be4d-9431a09652cf",
"published_at": "2022-01-20T09:10:37.122293Z"
},
{
"id": "8d706b02-80d3-45b6-8eaf-723a513650e2",
"published_at": "2022-01-20T09:10:43.309624Z"
}
]
}
Posts für einen definierten Zeitraum abrufen
after
und/oder before
kannst Du die Posts eingrenzen.curl "<https://$DOMAIN/api/external/post/v1/posts?after=2022-01-20T12:27:05Z&limit=20>" -H "Accept: application/json" -H "Authorization: Bearer $access_token"
Die neuesten erstellten oder aktualisierten Posts abrufen
before
Parameter bei dem Aufruf der /posts
Route setzt, ändert sich die Reihenfolge. Dies kann verwendet werden, um die letzten, z. B. 20 erstellten oder aktualisierten Posts abzurufen, wenn es in Kombination mit dem limit
Abfrageparameter verwendet wird.curl "https://$DOMAIN/api/external/post/v1/posts?before=2022-01-20T12:27:05Z&limit=20" -H "Accept: application/json" -H "Authorization: Bearer $access_token"
Paginierung und Arbeit mit Cursorn
next_cursor
.next_cursor
kann dann verwendet werden, um die nächste Seite Deiner Anfrage abzurufen, indem Du ihn als Abfrageparameter cursor
setzt.{
"posts": [
{
"id": "075a4c3c-d285-4498-a221-1d4895abb5e7",
"published_at": "2022-01-18T12:27:04.718695Z",
"updated_at": "2022-01-20T09:11:38.123889Z"
},
{
"id": "3ef1f74f-412a-480f-a315-38a2fc14ec60",
"published_at": "2022-01-18T12:27:12.205555Z"
}
],
"next_cursor": "eyJsaW1pdCI6MiwibGFzdF90aW1lX3RvX2JlX2V4Y2x1ZGVkIjoiMjAyMi0wMS0xOFQxMjoyNzoxMi4yMDU1NTVaIiwibGFzdF9pZF90b19iZV9leGNsdWRlZCI6IjNlZjFmNzRmLTQxMmEtNDgwZi1hMzE1LTM4YTJmYzE0ZWM2MCJ9"
}
curl "<https://$DOMAIN/api/external/post/v1/posts?cursor=eyJsaW1pdCI6MzAsImxhc3RfdGltZV90b19iZV9leGNsdWRlZCI6IjIwMjItMDEtMjBUMDk6MTA6MzcuMTIyMjkzWiIsImxhc3RfaWRfdG9fYmVfZXhjbHVkZWQiOiJmMTg0NWZkZi1kNGE1LTRhM2YtYmU0ZC05NDMxYTA5NjUyY2YifQ>" -H "Accept: application/json" -H "Authorization: Bearer $access_token"
Post-Details abrufen
/post/{id}
mit der id
der Posts aus den anderen Anfragen aufrufen.curl "<https://$DOMAIN/api/external/post/v1/post/29794b71-e80b-432d-89e0-e8339ac4a3b4>" -H "Accept: application/json" -H "Authorization: Bearer $access_token"
{
"id": "3ef1f74f-412a-480f-a315-38a2fc14ec60",
"group": {
"id": "a1fd5f9b-d3d5-4e82-8f7b-41058a073134",
"name": "Test Group"
},
"author": {
"id": "dffa6654-1607-4b13-99e6-9b8267604921",
"first_name": "Max",
"last_name": "Müller"
},
"info": {
"published_at": "2022-01-18T12:27:12.205555Z"
},
"content": {
"title": "Test",
"body": "<p>Hallo</p>"
}
}
Wenn ein Beitrag nicht mehr verfügbar ist, weil er gelöscht wurde, erhalten Sie stattdessen eine HTTP 404 als Antwort.
Anhänge
Wenn einem Beitrag Anlagen beigefügt sind, werden diese in der Antwort auf den Aufruf der Beitragsdetails angezeigt.
Antwort:
{
"id": "cf241b36-25f7-4927-8a58-b532a7854b7d",
"group": {
"id": "a1fd5f9b-d3d5-4e82-8f7b-41058a073134",
"name": "Test Group"
},
"author": {
"id": "dffa6654-1607-4b13-99e6-9b8267604921",
"first_name": "Max",
"last_name": "Müller"
},
"info": {
"published_at": "2022-01-20T12:49:12.268259Z"
},
"content": {
"title": "Example with Attachment"
},
"attachments": [
{
"filename": "test.jpg",
"link": "<https://test.flip-app.com/media/groups/e87cf3a8-2b9f-41a1-a7ed-e44989bb41d1/f437f92f-b4b1-46cc-9c37-f7cd07b50731>",
"mime_type": "image/jpeg"
}
]
}
Die Anhänge enthalten einen vollständigen Link zu der Datei. In diesem Fall ist Ihre Domäne bereits festgelegt, so dass der Link so verwendet werden kann, wie er ist. Die Authorization
muss mit dem Token ausgefüllt werden, so wie es bei den anderen Aufrufen gemacht wird.
Anfrage:
curl "<https://test.flip-app.com/media/groups/e87cf3a8-2b9f-41a1-a7ed-e44989bb41d1/f437f92f-b4b1-46cc-9c37-f7cd07b50731>" -H "Authorization: Bearer $TOKEN" -o attachment.jpg
Kommentare
Kommentare können für jeden Beitrag einzeln durch Aufruf von /post/{id}/comments
abgerufen werden.
Anfrage:
curl "<https://$DOMAIN/api/external/post/v1/post/29794b71-e80b-432d-89e0-e8339ac4a3b4/comments>" -H "Accept: application/json" -H "Authorization: Bearer
$access_token"
Die Antwort enthält dann eine Liste mit allen Kommentaren zu diesem Beitrag. Sie enthält den Kommentar im comment
Feld, die Dateien des Kommentars als Anhang und auch Informationen über den Autor usw. Die Paginierung funktioniert genauso wie beim Lesen von Beiträgen und anderen Endpunkten*. Darüber hinaus können die Abfrageparameter "after" und "before" verwendet werden, um die Zeitspanne wie beim Lesen von Beiträgen einzuschränken.
Antwort:
{ "comments": [ { "id": "8bbe8f11-ac62-48b2-9965-168070e75465", "author": { "id": "bec5af70-ac70-49f1-843c-0da3aa83002b", "first_name": "Chuck", "last_name": "Norris" }, "created_at": "2022-03-18T15:20:01.831661Z", "comment": "test comment" }, { "id": "5b418048-a7a0-4c39-87f4-5f90eb93ab16", "author": { "id": "bec5af70-ac70-49f1-843c-0da3aa83002b", "first_name": "Chuck", "last_name": "Norris" }, "created_at": "2022-03-18T15:20:38.138938Z", "comment": "test comment with attachment", "attachments": [ { "filename": "4063f885-42f6-4ad0-b4a9-933e70ffe8d7.jpg", "link": "https://master.flip-app.dev/media/groups/f42b7dd7-8543-45e8-89de-d51bd04ea395/a79d6282-45de-4b50-ae59-763eb785effa", "mime_type": "image/jpeg" } ] } ] }
Kommentare
0 Kommentare
Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.