Favoriten

Der @favorites endpoint bietet alle Funktion für die Auflistung und Bearbeitung der globalen Favoriten welche pro Benutzer aber über einen kompletten GEVER Verbund zentral verwaltet werden. Der Endpoint steht nur auf Stufe PloneSite zur Verfügung und erwartet eine Einschränkung auf einen Benutzer via Benutzer-ID. Die URL setzt sich somit folgendermassen zusammen:

http://example.org/fd/@favorites/peter.mueller

Auflistung:

Mittels eines GET Request können Favoriten des Benutzers abgefragt werden. Dabei werden alle, also global über den ganzen Mandanten-Verbundes, zurückgegeben.

Beispiel-Request:

GET /@favorites/peter.mueller HTTP/1.1
Accept: application/json

Beispiel-Response:

HTTP/1.1 200 OK
Content-Type: application/json

[
    {
        "@id": "http://localhost:8080/fd/@favorites/peter.mueller/3",
        "favorite_id": 3,
        "filename": "Richtlinien Gesetzesentwuerfe.docx",
        "icon_class": "icon-dokument_word",
        "is_leafnode": null,
        "oguid": "fd:68398212",
        "title": "Richtlinien Gesetzesentwürfe",
        "portal_type": "opengever.document.document",
        "position": 1,
        "resolved": false,
        "review_state": "document-state-draft",
        "target_url": "http://localhost:8080/fd/resolve_oguid/fd:68398212"
    }
    ,
    {
        "@id": "http://localhost:8080/fd/@favorites/peter.mueller/57",
        "favorite_id": 57,
        "filename": null,
        "icon_class": "contenttype-opengever-dossier-businesscasedossier",
        "is_leafnode": null,
        "is_subdossier": false,
        "dossier_type": null,
        "oguid": "fd:68336212",
        "title": "Anfragen 2018",
        "portal_type": "opengever.dossier.businesscasedossier",
        "position": 2,
        "resolved": false,
        "review_state": "dossier-state-active",
        "target_url": "http://localhost:8080/fd/resolve_oguid/fd:68336212"
    }
]

Favoriten sind standardmässig nicht aufgelöst. D.h. es ist nicht bekannt, wo sich das Favoriten-Objekt genau befindet. Über die target_url kann das Objekt aufgelöst werden.

Benötigt man die bereits aufgelösten Favoriten, können diese mit dem resolve=true Query-Parameter abegfragt werden:

Beispiel-Request:

GET /@favorites/peter.mueller?resolve=true HTTP/1.1
Accept: application/json

Beispiel-Response:

HTTP/1.1 200 OK
Content-Type: application/json

[
    {
        "@id": "http://localhost:8080/fd/@favorites/peter.mueller/3",
        "favorite_id": 3,
        "filename": "Richtlinien Gesetzesentwuerfe.docx",
        "icon_class": "icon-dokument_word",
        "is_leafnode": null,
        "oguid": "fd:68398212",
        "title": "Richtlinien Gesetzesentwürfe",
        "portal_type": "opengever.document.document",
        "position": 1,
        "resolved": true,
        "review_state": "document-state-draft",
        "target_url": "http://localhost:8080/fd/document-1"
    },
    {
        "@id": "http://localhost:8080/fd/@favorites/peter.mueller/57",
        "favorite_id": 57,
        "filename": null,
        "icon_class": "contenttype-opengever-dossier-businesscasedossier",
        "is_leafnode": null,
        "is_subdossier": false,
        "dossier_type": "project",
        "oguid": "rk:68336212",
        "title": "Anfragen 2018",
        "portal_type": "opengever.dossier.businesscasedossier",
        "position": 2,
        "resolved": false,
        "review_state": "dossier-state-active",
        "target_url": "http://localhost:8080/fd/resolve_oguid/rk:68336212"
    }
]

Dabei ist zu beachten, dass ein Mandant immer nur seine eigenen Favoriten auflösen kann. Favoriten von fremden Mandanten werden deshalb immer unaufgelöst zurückgegeben.

Favorit hinzufügen:

Ein Favorit für ein beliebiges Objekt kann mittels POST Request hinzugefügt werden. Dabei wird die Oguid als oguid Parameter oder die UID als uid Parameter erwartet.

Beispiel-Request:

POST /@favorites/peter.mueller HTTP/1.1
Accept: application/json

{
 "oguid": "fd:68398212"
}

Beispiel-Response:

HTTP/1.1 201 Created
Content-Type: application/json
Location: http://localhost:8080/fd/@favorites/peter.mueller/20

{
    "@id": "http://localhost:8080/fd/@favorites/peter.mueller/20",
    "favorite_id": 20,
    "filename": "Anfrage 2018.docx",
    "icon_class": "icon-dokument_word",
    "is_leafnode": null,
    "oguid": "fd:68398212",
    "title": "Anfrage 2018",
    "portal_type": "opengever.document.document",
    "position": 1,
    "resolved": false,
    "review_state": "document-state-draft",
    "target_url": "http://localhost:8080/fd/resolve_oguid/fd:68398212"
}

Favorit bearbeiten:

Ein bestehender Favorit kann mittels PATCH Request überarbeitet werden. Es werden nur die Parameter title und position beachtet. Wird der Titel eines Favoriten verändert, so wird automatisch auch das flag is_title_personalized aktiviert.

Die URL setzt sich dabei folgendermassen zusammen: gever-url/@favorites/{userid}/{favoriten-id}

Beispiel-Request:

PATCH /@favorites/peter.mueller/20 HTTP/1.1
Accept: application/json

{
 "title": "Weekly Document",
 "position": 35
}

Ein erfolgreicher Patch-Request wird standardmässig mit einer 204 No content Response beantwortet.

Beispiel-Response:

HTTP/1.1 204 No content

Es ist aber möglich bei einem PATCH request die Objekt-Repräsentation als Response zuerhalten, hierzu muss ein Prefer Header mit dem Wert return=representation gesetzt werden.

Beispiel-Response mit Prefer Header:

HTTP/1.1 200 OK
Content-Type: application/json

{
    "@id": "http://localhost:8080/fd/@favorites/peter.mueller/20",
    "favorite_id": 20,
    "filename": "Weekly Document.docx",
    "icon_class": "icon-dokument_word",
    "is_leafnode": null,
    "oguid": "fd:68398212",
    "title": "Weekly Document",
    "portal_type": "opengever.document.document",
    "position": 35,
    "review_state": "document-state-draft",
    "target_url": "http://localhost:8080/fd/resolve_oguid/fd:68398212"
}

Favorit entfernen:

Ein bestehender Favorit kann mittels DELETE Request auf die entsprechender URL gelöscht werden.

Die URL setzt sich dabei folgendermassen zusammen: gever-url/@favorites/{userid}/{favoriten-id}

Beispiel-Request:

DELETE /@favorites/peter.mueller/20 HTTP/1.1
Accept: application/json

Beispiel-Response:

HTTP/1.1 204 No Content