normal
Zum Hauptinhalt springen

# Blubber

info

Blubber ermöglicht innerhalb von Veranstaltungen mit anderen Stud.IP-Teilnehmern zu chatten. Wir unterscheiden in öffentliche-, private- und veranstaltungsbezogene Blubber.

## Schema 'blubber-postings'​

Der Inhalt wird als plain-text und html gespeichert. Meta-Daten geben Informationen über den Zeitpunkt und das Thema einer Nachricht.

### Attribute​

Attribut | Beschreibung
--- | ---
context-type | die Art des Kontexts; Veranstaltung ("course"), Öffentlich ("global") oder Nutzer ("user")
content | der Text des Blubber-Beitrags; kann Stud.IP-Markup enthalten
content-html | der Text des Blubber-Beitrags; als HTML formatiert
mkdate | Anlegedatum
chdate | Datum der letzten Änderung
discussion-time | Datum der letzten Aktivität
tags | eine Liste von Tags

### Relationen​

Relation | Beschreibung
--- | ---
author | Verfasser der Nachricht
comments | Untergeordnete Blubber
context | Wem wird der Blubber angezeigt: users, courses, public
mentions | Thema eines Blubber-Eintrags
parent | Übergeordneter Blubber-Eintrag
resharers |

## Alle Beiträge​

    curl --request GET \
        --url https://example.com/blubber-postings \
        --header "Authorization: Basic `echo -ne "test_autor:testing" | base64`"

    fetch('https://example.com/blubber-postings', {
        method: 'GET',
        mode: 'cors',
        headers: new Headers({
            'Authorization': `Basic ${btoa('test_autor:testing')}`
        })
    }).then(response => console.log(response))

Es werden alle Blubber-Beiträge, die man im Stud.IP sehen könnte, angezeigt.

### HTTP Request​

`GET /blubber-postings`

### URL-Parameter​

Parameter | Beschreibung
--- | ---
filter | Filtermöglichkeit der anzuzeigenden Blubber-Beiträge
include | abhängige Ressourcen, die auch zurückgeliefert werden (JSON:API-Spezifikation)
page | Einstellmöglichkeiten zur Paginierung

#### URL-Parameter 'filter'​

Mit diesem URL-Parameter kann nach Typ und Datum der Aktivitäten gefiltert werden. Möglich sind folgende Filter:

Beispiel-Url: "https://example.com/blubber-postings?filter[user]=205f3efb7997a0fc9755da2b535038da"

Filter | Beschreibung
--- | ---
filter[course] | Filtert Blubber-Einträge für eine Veranstaltung
filter[user] | Filter Blubber-Einträge für einen Nutzer

#### URL-Parameter 'include'​

Fügt folgende Attribute in die Ausgabe hinzu.

Wert | Beschreibung
--- | ---
author | Den Verfasser eines Blubbers
comments | Angehangene Blubber
context | Wem wird der post angezeigt (users, courses, public)
mentions |
resharers |

## Beitrag auslesen​

Einen gezielten Blubber-Eintrag auslesen.

### HTTP Request​

`GET /blubber-postings/{id}`

### Parameter​

Parameter | Beschreibung
--- | ---
id | ID des Blubber-Posts

### Authorisierung​

Diese Route kann von allen Nutzern verwendet werden.

    curl --request GET \
        --url https://example.com/blubber-postings/<posting-id> \
        --header "Authorization: Basic `echo -ne "test_autor:testing" | base64`"

## Beitrag anlegen​

    curl --request POST \
        --url https://example.com/blubber-postings \
        --header "Content-Type: application/vnd.api+json" \
        --header "Authorization: Basic `echo -ne "test_autor:testing" | base64`" \
        --data \
        '{"data":{"type":"blubber-postings","attributes":{"context-type":"course","content":"Ein neuer blubberpost"},"relationships":{"context":{"data":{"type":"courses","id":"<CID>"}}}}}'

Mit dieser Route kann ein Blubber-Beitrag angelegt werden. Dies kann ein öffentlicher oder privater Beitrag sein, aber auch Blubber in Veranstaltungen können darüber angelegt werden.

### HTTP Request​

`POST /blubber-postings`

### HTTP Request Body​

Im Request-Body muss der neue Beitrag als `resource object` vom Typ "blubber-postings" sein.

Notwendig sind die Attribute "content" und "context-type".

Abhängig vom Wert des Attributs "context-type", muss außerdem eine "context"-Relation angegeben werden.

Hat dieses Attribut den Wert "course", muss als "context"-Relation eine Veranstaltung als `resource identifiert` angegeben werden.

### Parameter​

Bei diesem Request sind keine Parameter notwendig.

### Authorisierung​

Diese Route kann von allen Nutzern verwendet werden.

## Beitrag editieren​

Aktualisiert einen Blubber-Beitrag.

### HTTP Request​

`PATCH /blubber-postings/{id}`

### Parameter​

Parameter | Beschreibung
--- | ---
id | ID des Blubber-Posts

### Authorisierung​

Der Sender des Requests muss Besitzer des Blubber-Beitrags oder Root sein.

    curl --request PATCH \
        --url https://example.com/blubber-postings/<blubber-id> \
        --header "Content-Type: application/vnd.api+json" \
        --header "Authorization: Basic `echo -ne "root@studip:testing" | base64`" \
        --data
        '{"data":{"type":"blubber-postings","attributes":{"context-type":"course","content":"Ein veränderter blubberpost"}, "relationships":{"context":{"data":{"type":"courses","id":"a07535cf2f8a72df33c12ddfa4b53dde"}}}}}'

## Beitrag löschen​

Löscht einen Blubber-Eintrag.

### HTTP Request​

`DELETE /blubber-postings/{id}`

### Parameter​

Parameter | Beschreibung
--- | ---
id | ID des Blubber-Posts

### Authorisierung​

Der Sender des Requests muss Besitzer des Blubber-Beitrags oder Root sein.

    curl --request DELETE \
        --url https://example.com/blubber-postings/<blubber-id> \
        --header "Authorization: Basic `echo -ne "test_autor:testing" | base64`" \

## Relation 'author'​

Gibt den Author eines Blubber-Posts zurück.

### HTTP Request​

`GET /blubber-postings/{id}/relationships/author`

### Parameter​

Parameter | Beschreibung
--- | ---
id | ID des Blubber-Posts

### Authorisierung​

Diese Route kann von allen Nutzern verwendet werden.

    curl --request GET \
        --url https://example.com/blubber-postings/<posting-id>/relationships/author \
        --header "Authorization: Basic `echo -ne "test_autor:testing" | base64`"

## Kommentare eines Blubber-Beitrags​

Gibt alle Kommentare eines Blubber-Beitrags zurück.

### HTTP Request​

`GET /blubber-postings/{id}/comments`

### Parameter​

Parameter | Beschreibung
--- | ---
id | ID des Blubber-Posts

### Authorisierung​

Diese Route kann von allen Nutzern verwendet werden.

    curl --request GET \
        --url https://example.com/blubber-postings/<posting-id>/comments \
        --header "Authorization: Basic `echo -ne "test_autor:testing" | base64`"

## Beitrag kommentieren​

Erstellt einen Kommentar zu einem Blubber-Beitrag.

### HTTP Request​

`POST /blubber-postings/{id}/comments`

### Parameter​

Parameter | Beschreibung
--- | ---
id | ID des Blubber-Posts

### Authorisierung​

Diese Route kann von allen Nutzern verwendet werden.

    curl --request POST \
        --url https://example.com/blubber-postings/<posting-id>/comments \
        --header "Content-Type: application/vnd.api+json" \
        --header "Authorization: Basic `echo -ne "root@studip:testing" | base64`" \
        --data
        '{"data": {"type": "blubber-postings","attributes": {"content": "Ein neuer blubberkommentar"}}}'

## Relation 'comments'​

### HTTP Request​

`GET /blubber-postings/{id}/relationships/comments`

### Parameter​

Parameter | Beschreibung
--- | ---
id | ID des Blubber-Posts

### Authorisierung​

Diese Route kann von allen Nutzern verwendet werden.

    curl --request GET \
        --url https://example.com/blubber-postings/<posting-id>/relationships/comments \
        --header "Authorization: Basic `echo -ne "test_autor:testing" | base64`"

## Relation 'context'​

Gibt den Scope (Sichtbarkeit) eines Blubber-Beitrags zurück.

### HTTP Request​

`GET /blubber-postings/{id}/relationships/context`

### Parameter​

Parameter | Beschreibung
--- | ---
id | ID des Blubber-Posts

### Authorisierung​

Diese Route kann von allen Nutzern verwendet werden.

    curl --request GET \
        --url https://example.com/blubber-postings/<posting-id>/relationships/context \
        --header "Authorization: Basic `echo -ne "test_autor:testing" | base64`"

## Erwähnungen eines Beitrags​

Gibt an, ob und in welchen Beiträgen eine Referenz zu diesem Beitrag gibt.

### HTTP Request​

`GET /blubber-postings/{id}/mentions`

### Parameter​

Parameter | Beschreibung
--- | ---
id | ID des Blubber-Posts

### Authorisierung​

Diese Route kann von allen Nutzern verwendet werden.

    curl --request GET \
        --url https://example.com/blubber-postings/<posting-id>/mentions \
        --header "Authorization: Basic `echo -ne "test_autor:testing" | base64`"

## Relation 'mentions'​

Gibt die Referenz der Beiträge zurück, in denen dieser Beitrag erwähnt wird.

### HTTP Request​

`GET /blubber-postings/{id}/relationships/mentions`

### Parameter​

Parameter | Beschreibung
--- | ---
id | ID des Blubber-Posts

### Authorisierung​

Diese Route kann von allen Nutzern verwendet werden.

    curl --request GET \
        --url https://example.com/blubber-postings/<posting-id>/relationships/mentions \
        --header "Authorization: Basic `echo -ne "test_autor:testing" | base64`"

## Relation 'resharers'​

Gibt die Referenz von Usern zurück, die diesen Beitrag geteilt haben.

### HTTP Request​

`GET /blubber-postings/{id}/relationships/resharers`

### Parameter​

Parameter | Beschreibung
--- | ---
id | ID des Blubber-Posts

### Authorisierung​

Diese Route kann von allen Nutzern verwendet werden.

    curl --request GET \
        --url https://example.com/blubber-postings/<posting-id>/relationships/resharers \
        --header "Authorization: Basic `echo -ne "test_autor:testing" | base64`"

## Blubber-Stream auslesen​

Gibt eine Folge von Blubber-Einträgen zurück.

`GET /blubber-streams/{id}`

### Parameter​

Parameter | Beschreibung
--- | ---
id | ID des Blubber-Streams

### Authorisierung​

Diese Route kann von allen Nutzern verwendet werden.

    curl --request GET \
        --url https://example.com/blubber-postings/<posting-id>/blubber-streams/<stream-id> \
        --header "Authorization: Basic `echo -ne "test_autor:testing" | base64`"