normal
Zum Hauptinhalt springen

# Forum

Das Stud.IP-Forum bietet die Möglichkeit Beiträge zu erstellen, zu kommentieren und zu Kategorisieren. Jedes Forum ist an genau eine Veranstaltung gebunden. Die Schema's werden in Forum-Categories und Forum-Entries unterteilt.

## Schema "forum-categories"​

Kategorien für Einträge haben einen Namen und geben die Hierarchie des Forums anhand ihrer Position an.

### Attribute​

Attribut | Beschreibung
--- | ---
title | Name einer Kategorie
position | Position einer Kategorie

### Relationen​

Relation | Beschreibung
--- | ---
course | Der Kurs des Forums, indem die Kategorie angelegt ist
entries | Alle Forum-Einträge einer Forum-Kategorie

## Schema "forum-entries"​

Einträge des Forums liegen auf verschiedenen Ebenen. Sie können direkt in Kategorien als Themen erstellt werden oder an vorhandene Einträge angebunden werden.

### Attribute​

Attribut | Beschreibung
--- | ---
title | Name eines Entries (sollte nur bei Themen angezeigt werden)
content | Gibt den Inhalt eines Entries wieder
area | Dieses Attribut wird mitgeführt (ist aber idr. '0')

### Relationen​

Relation | Beschreibung
--- | ---
category | Die Forum-Kategorie des Forumeintrags
entries | Alle Untereinträge eines Forumeintrags

## Alle Forum-Kategorien eines Kurses auslesen​

`GET /courses/{id}/forum-categories`

Parameter | Beschreibung
--- | ---
id | Die ID des Kurses

    curl --request GET \
        --url https://example.com/courses/<COURSE-ID>/forum-categories \
        --header "Content-Type: application/vnd.api+json" \
        --header "Authorization: Basic `echo -ne "test_autor:testing" | base64`" \
        --data

### Autorisierung​

Der Nutzer sollte Mitglied des entsprechenden Kurses sein.

> Der Request liefert JSON ähnlich wie dieses:

    {
      "data": [
        {
          "type": "forum-categories",
          "id": "d6b887a73f024cf31b4a01f41531b809",
          "attributes": {
            "title": "NewStuff",
            "position": 0
          },
          "relationships": {
            "course": {
              "data": {
                "type": "courses",
                "id": "1b7d3834e42c1569947e0eab7b63ed19"
              },
              "links": {
                "related": "/stud35/plugins.php/argonautsplugin/courses/1b7d3834e42c1569947e0eab7b63ed19"
              }
            }
          },
          "links": {
            "self": "/stud35/plugins.php/argonautsplugin/forum-categories/d6b887a73f024cf31b4a01f41531b809"
          }
        },
        {
          "type": "forum-categories",
          "id": "3710de2efd59869ab7ed7e410f70947f",
          "attributes": {
            "title": "CatCreateRoute",
            "position": 1
          },
          "relationships": {
            "course": {
              "data": {
                "type": "courses",
                "id": "1b7d3834e42c1569947e0eab7b63ed19"
              },
              "links": {
                "related": "/stud35/plugins.php/argonautsplugin/courses/1b7d3834e42c1569947e0eab7b63ed19"
              }
            }
          },
          "links": {
            "self": "/stud35/plugins.php/argonautsplugin/forum-categories/3710de2efd59869ab7ed7e410f70947f"
          }
        },
        {
          "type": "forum-categories",
          "id": "7684942d4a1d3f8ab0752165e22c31a6",
          "attributes": {
            "title": "TESTECASE ",
            "position": 2
          },
          "relationships": {
            "course": {
              "data": {
                "type": "courses",
                "id": "1b7d3834e42c1569947e0eab7b63ed19"
              },
              "links": {
                "related": "/stud35/plugins.php/argonautsplugin/courses/1b7d3834e42c1569947e0eab7b63ed19"
              }
            }
          },
          "links": {
            "self": "/stud35/plugins.php/argonautsplugin/forum-categories/7684942d4a1d3f8ab0752165e22c31a6"
          }
        },
        {
          "type": "forum-categories",
          "id": "4ca16225a42c94957c4129da5f0bef2d",
          "attributes": {
            "title": "CatCreateRoute",
            "position": 3
          },
          "relationships": {
            "course": {
              "data": {
                "type": "courses",
                "id": "1b7d3834e42c1569947e0eab7b63ed19"
              },
              "links": {
                "related": "/stud35/plugins.php/argonautsplugin/courses/1b7d3834e42c1569947e0eab7b63ed19"
              }
            }
          },
          "links": {
            "self": "/stud35/plugins.php/argonautsplugin/forum-categories/4ca16225a42c94957c4129da5f0bef2d"
          }
        },
        {
          "type": "forum-categories",
          "id": "1b7d3834e42c1569947e0eab7b63ed19",
          "attributes": {
            "title": "Allgemein",
            "position": 4
          },
          "relationships": {
            "course": {
              "data": {
                "type": "courses",
                "id": "1b7d3834e42c1569947e0eab7b63ed19"
              },
              "links": {
                "related": "/stud35/plugins.php/argonautsplugin/courses/1b7d3834e42c1569947e0eab7b63ed19"
              }
            }
          },
          "links": {
            "self": "/stud35/plugins.php/argonautsplugin/forum-categories/1b7d3834e42c1569947e0eab7b63ed19"
          }
        }
      ]
    }

## Eine Forum-Kategorie auslesen​

`GET /forum-categories/{id}`

Parameter | Beschreibung
--- | ---
id | Die ID der Kategorie

    curl --request GET \
        --url https://example.com/forum-categories/<FORUM-CATEGORY-ID> \
        --header "Content-Type: application/vnd.api+json" \
        --header "Authorization: Basic `echo -ne "test_autor:testing" | base64`" \
        --data

### Autorisierung​

Der Nutzer sollte Mitglied des entsprechenden Kurses sein.

> Der Request liefert JSON ähnlich wie dieses:

    {
    "data": {
    "type": "forum-categories",
    "id": "1b7d3834e42c1569947e0eab7b63ed19",
    "attributes": {
    "title": "Allgemein",
    "position": 4
    },
    "relationships": {
    "course": {
    "data": {
    "type": "courses",
    "id": "1b7d3834e42c1569947e0eab7b63ed19"
    },
    "links": {
    "related": "/stud35/plugins.php/argonautsplugin/courses/1b7d3834e42c1569947e0eab7b63ed19"
    }
    }
    },
    "links": {
    "self": "/stud35/plugins.php/argonautsplugin/forum-categories/1b7d3834e42c1569947e0eab7b63ed19"
    }
    }
    }

## Einen Forum-Eintrag auslesen​

`GET /forum-entries/{id}`

Parameter | Beschreibung
--- | ---
id | Die ID des Entries

    curl --request GET \
        --url https://example.com/forum-entries/<FORUM-ENTRY-ID> \
        --header "Content-Type: application/vnd.api+json" \
        --header "Authorization: Basic `echo -ne "test_autor:testing" | base64`" \
        --data

### Autorisierung​

Der Nutzer sollte Mitglied des entsprechenden Kurses sein.

> Der Request liefert JSON ähnlich wie dieses:

    {
      "data": {
        "type": "forum-entries",
        "id": "1b7d3834e42c1569947e0eab7b63ed19",
        "attributes": {
          "title": "Übersicht",
          "area": 0,
          "content": ""
        },
        "relationships": {
          "category": {
            "data": {
              "type": "forum-categories",
              "id": null
            },
            "links": {
              "related": "/stud35/plugins.php/argonautsplugin/forum-categories/"
            }
          },
          "child-entries": {
            "data": [
              {
                "type": "forum-entries",
                "id": "2e6ff68d79c5e3f3ed24bd0274865e42"
              },
              {
                "type": "forum-entries",
                "id": "3e0ec8e69afe2502763730e17954d340"
              },
              {
                "type": "forum-entries",
                "id": "783e1b783a76f109eeb5fc19c43c2d08"
              },
              {
                "type": "forum-entries",
                "id": "9af47a2c1463b12a35e3a7c3a10bd53c"
              },
              {
                "type": "forum-entries",
                "id": "a5e119fc5b8cfc549ab9cc985e8609a1"
              },
              {
                "type": "forum-entries",
                "id": "b21ca75f9562d3a5751babaac49bbc9a"
              },
              {
                "type": "forum-entries",
                "id": "c2e21dfa7d071fb6f40ed29271f926aa"
              },
              {
                "type": "forum-entries",
                "id": "f5f8ea3da6fd945eb92dd0d1e1193132"
              }
            ],
            "links": {
              "related": "/stud35/plugins.php/argonautsplugin/forum-entries/1b7d3834e42c1569947e0eab7b63ed19/child-entries"
            }
          }
        },
        "links": {
          "self": "/stud35/plugins.php/argonautsplugin/forum-entries/1b7d3834e42c1569947e0eab7b63ed19"
        }
      }
    }

## Alle Forum-Einträge einer Kategorie auslesen​

`GET /forum-categories/{id}/entries`

Parameter | Beschreibung
--- | ---
id | Die ID der Kategorie

    curl --request GET \
        --url https://example.com/forum-categories/<CATEGORY-ID>/entries \
        --header "Content-Type: application/vnd.api+json" \
        --header "Authorization: Basic `echo -ne "test_autor:testing" | base64`" \
        --data

### Autorisierung​

Der Nutzer sollte Mitglied des entsprechenden Kurses sein.

> Der Request liefert JSON ähnlich wie dieses:

    {
      "data": {
        "type": "forum-entries",
        "id": "1b7d3834e42c1569947e0eab7b63ed19",
        "attributes": {
          "title": "Übersicht",
          "area": 0,
          "content": ""
        },
        "relationships": {
          "category": {
            "data": {
              "type": "forum-categories",
              "id": null
            },
            "links": {
              "related": "/stud35/plugins.php/argonautsplugin/forum-categories/"
            }
          },
          "child-entries": {
            "data": [
              {
                "type": "forum-entries",
                "id": "2e6ff68d79c5e3f3ed24bd0274865e42"
              },
              {
                "type": "forum-entries",
                "id": "3e0ec8e69afe2502763730e17954d340"
              },
              {
                "type": "forum-entries",
                "id": "783e1b783a76f109eeb5fc19c43c2d08"
              },
              {
                "type": "forum-entries",
                "id": "9af47a2c1463b12a35e3a7c3a10bd53c"
              },
              {
                "type": "forum-entries",
                "id": "a5e119fc5b8cfc549ab9cc985e8609a1"
              },
              {
                "type": "forum-entries",
                "id": "b21ca75f9562d3a5751babaac49bbc9a"
              },
              {
                "type": "forum-entries",
                "id": "c2e21dfa7d071fb6f40ed29271f926aa"
              },
              {
                "type": "forum-entries",
                "id": "f5f8ea3da6fd945eb92dd0d1e1193132"
              }
            ],
            "links": {
              "related": "/stud35/plugins.php/argonautsplugin/forum-entries/1b7d3834e42c1569947e0eab7b63ed19/child-entries"
            }
          }
        },
        "links": {
          "self": "/stud35/plugins.php/argonautsplugin/forum-entries/1b7d3834e42c1569947e0eab7b63ed19"
        }
      }
    }

## Alle Untereinträge eines Forumeintrags auslesen​

`GET /forum-entries/{id}/entries`

Parameter | Beschreibung
--- | ---
id | Die ID des Eintrags

    curl --request GET \
        --url https://example.com/forum-entries/<FORUM-ENTRY-ID>/entries \
        --header "Content-Type: application/vnd.api+json" \
        --header "Authorization: Basic `echo -ne "test_autor:testing" | base64`" \
        --data

### Autorisierung​

Der Nutzer sollte Mitglied des entsprechenden Kurses sein.

__

## Eine Kategorie innerhalb eines Kurses anlegen​

`POST /courses/{id}/forum-categories`

Parameter | Beschreibung
--- | ---
id | Die ID des Kurses

    curl --request POST \
        --url https://example.com/courses/<COURSE-ID>/categories \
        --header "Content-Type: application/vnd.api+json" \
        --header "Authorization: Basic `echo -ne "test_autor:testing" | base64`" \
        --data
        '{"data": {"type": "forum-categories","attributes": {"title": "CreateCategoryTest","content": "works"}
    }
    }'

### Autorisierung​

Der Nutzer sollte Mitglied des entsprechenden Kurses sein.

> Der Request liefert JSON ähnlich wie dieses:

    {
    "data": {
    "type": "forum-categories",
    "id": "1b7d3834e42c1569947e0eab7b63ed19",
    "attributes": {
    "title": "Allgemein",
    "position": 4
    },
    "relationships": {
    "course": {
    "data": {
    "type": "courses",
    "id": "1b7d3834e42c1569947e0eab7b63ed19"
    },
    "links": {
    "related": "/stud35/plugins.php/argonautsplugin/courses/1b7d3834e42c1569947e0eab7b63ed19"
    }
    }
    },
    "links": {
    "self": "/stud35/plugins.php/argonautsplugin/forum-categories/1b7d3834e42c1569947e0eab7b63ed19"
    }
    }
    }

## Einen Eintrag in eine Kategorie posten​

`POST /forum-categories/{id}/entries`

Parameter | Beschreibung
--- | ---
id | Die ID der Kategorie

    curl --request POST \
        --url https://example.com/forum-entries/<FORUM-CATEGORY-ID>/entries \
        --header "Content-Type: application/vnd.api+json" \
        --header "Authorization: Basic `echo -ne "test_autor:testing" | base64`" \
        --data
        '{"data": {"type": "forum-entries","attributes": {"title": "TestTheRoute","content": "works!"}}}'

### Autorisierung​

Der Nutzer sollte Mitglied des entsprechenden Kurses sein.

## Einen Eintrag unter einen Eintrag posten​

`POST /forum-entries/{id}/entries`

Parameter | Beschreibung
--- | ---
id | Die ID des Eintrags

    curl --request POST \
        --url https://example.com/forum-entries/<FORUM-ENTRY-ID>/entries \
        --header "Content-Type: application/vnd.api+json" \
        --header "Authorization: Basic `echo -ne "test_autor:testing" | base64`" \
        --data
        '{"data": {"type": "forum-entries","attributes": {"title": "TestTheRoute","content": "works!"}}}'

### Autorisierung​

Der Nutzer sollte Mitglied des entsprechenden Kurses sein.

## Einen Kategorie aktualisieren​

`PATCH /forum-categories/{id}`

Parameter | Beschreibung
--- | ---
id | Die ID der Kategorie

    curl --request PATCH \
        --url https://example.com/forum-categories/<FORUM-CATEGORY-ID> \
        --header "Content-Type: application/vnd.api+json" \
        --header "Authorization: Basic `echo -ne "test_autor:testing" | base64`" \
        --data
        '{"data": {"type": "forum-categories","attributes": {"title": "UpdateCategory","content": "time for a change"}

### Autorisierung​

Der Nutzer sollte Mitglied des entsprechenden Kurses sein. Der Nutzer sollte die entsprechenden Adminrechte verfügen oder Ersteller der Kategorie sein

> Der Request liefert JSON ähnlich wie dieses:

    {
    "data": {
    "type": "forum-categories",
    "id": "1b7d3834e42c1569947e0eab7b63ed19",
    "attributes": {
    "title": "Allgemein",
    "position": 4
    },
    "relationships": {
    "course": {
    "data": {
    "type": "courses",
    "id": "1b7d3834e42c1569947e0eab7b63ed19"
    },
    "links": {
    "related": "/stud35/plugins.php/argonautsplugin/courses/1b7d3834e42c1569947e0eab7b63ed19"
    }
    }
    },
    "links": {
    "self": "/stud35/plugins.php/argonautsplugin/forum-categories/1b7d3834e42c1569947e0eab7b63ed19"
    }
    }
    }

## Einen Forum-Eintrag aktualisieren​

`PATCH /forum-entries/{id}`

Parameter | Beschreibung
--- | ---
id | Die ID des Eintrags

    curl --request PATCH \
        --url https://example.com/forum-entries/<FORUM-ENTRY-ID> \
        --header "Content-Type: application/vnd.api+json" \
        --header "Authorization: Basic `echo -ne "test_autor:testing" | base64`" \
        --data
        '{"data": {"type": "forum-entries","attributes": {"title": "Update an entry","content": "time for a change"}}}'

### Autorisierung​

Der Nutzer sollte Mitglied des entsprechenden Kurses sein. Der Nutzer sollte die entsprechenden Adminrechte verfügen oder Ersteller des Eintrags sein

## Eine Forum-Kategorie entfernen​

`DELETE /forum-categories/{id}`

Parameter | Beschreibung
--- | ---
id | Die ID der Kategorie

    curl --request DELETE \
      --url https://example.com/forum-categories/<FORUM-CATEGORY-ID> \
      --header "Content-Type: application/vnd.api+json" \
      --header "Authorization: Basic `echo -ne "test_autor:testing" | base64`" \
      --data

### Autorisierung​

Der Nutzer sollte Mitglied des entsprechenden Kurses sein. Der Nutzer sollte die entsprechenden Adminrechte verfügen oder Ersteller der Kategorie sein.

## Einen Forum-Eintrag entfernen​

`DELETE /forum-categories/{id}`

Parameter | Beschreibung
--- | ---
id | Die ID des Eintrags

    curl --request DELETE \
        --url https://example.com/forum-entries/<FORUM-ENTRY-ID> \
        --header "Content-Type: application/vnd.api+json" \
        --header "Authorization: Basic `echo -ne "test_autor:testing" | base64`" \
        --data

### Autorisierung​

Der Nutzer sollte Mitglied des entsprechenden Kurses sein. Der Nutzer sollte die entsprechenden Adminrechte verfügen oder Ersteller des Eintrags sein.