Verknüpfte Arbeitsräume

Arbeitsräume können direkt aus GEVER heraus erstellt und mit einem Dossier verknüpft werden.

Verknüpfte Teamräume abrufen

Ein GET-Request auf den Endpoint @linked-workspaces auf einem Dossier gibt die verknüpften Teamräume für ein Dossier zurück:

GET /ordnungssystem/dossier-23/@linked-workspaces HTTP/1.1
Accept: application/json
HTTP/1.1 200 OK
Content-Type: application/json

{
  "@id": "/ordnungssystem/dossier-23/@linked-workspaces",
  "items": [
    {
      "@id": "http://example.ch/workspaces/workspace-5",
      "@type": "opengever.workspace.workspace",
      "...": "..."
    },
    {
      "@id": "http://example.ch/workspaces/workspace-3",
      "@type": "opengever.workspace.workspace",
      "...": "..."
    }
  ],
  "items_total": 2,
  "workspaces_without_view_permission": false
}

Das Feld workspaces_without_view_permission gibt an, ob noch weitere Teamräume existieren, für die der Benutzer keine Leserechte hat.

Dossier mit Teamraum verknüpfen

Ein Dosser kann über den Endpoint @create-linked-workspace mit einem neuen Teamraum verknüpft werden. Als Antwort erhalten Sie eine Representation des erstellten Teamraums

Beispiel-Request:

POST /ordnungssystem/dossier-23/@create-linked-workspace HTTP/1.1
Accept: application/json
Content-Type: application/json

{
  "title": "Externe Zusammenarbeit"
}

Beispiel-Response:

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

{
  "@id": ".../workspaces/workspace-1",
  "@type": "opengever.workspace.workspace",
  "title": "Externe Zusammenarbeit",
   "...": "..."
}

Dossier mit bestehendem Teamraum verknüpfen

Ein Dosser kann über den Endpoint @link-to-workspace mit einem bestehenden Teamraum verknüpft werden.

Beispiel-Request:

POST /ordnungssystem/dossier-23/@link-to-workspace HTTP/1.1
Accept: application/json
Content-Type: application/json

{
  "workspace_uid": "c11627f492b6447fb61617bb06b9a21a"
}

Beispiel-Response:

HTTP/1.1 204 No Content

Teamraum Verknüpfung entfernen

Eine bestehende Verknüpfung eines Teamraums kann mit dem @unlink-workspace Endpoint entfernt werden. Dabei werden auch bestehende Locks auf verlinkten Dokumenten aufgehoben. Der Teamraum bleibt aber bestehen. Mit dem Parameter deactivate_workspace kann der Teamraum zusätzlich deaktiviert werden.

Beispiel-Request:

POST /ordnungssystem/dossier-23/@unlink-workspace HTTP/1.1
Accept: application/json
Content-Type: application/json

{
  "workspace_uid": "c11627f492b6447fb61617bb06b9a21a",
  "deactivate_workspace": true
}

Beispiel-Response:

HTTP/1.1 204 No Content

Teilnehmer in einem verknüpften Teamraum setzen

Mit dem @linked-workspace-participations Endpoint können Teilnehmer auf einem verknüpften Teamraum hinzugefügt werden.

Beispiel-Request:

POST /ordnungssystem/dossier-23/@linked-workspace-participations HTTP/1.1
Accept: application/json
Content-Type: application/json

{
  "workspace_uid": "c11627f492b6447fb61617bb06b9a21a"
  "participants": [
    {"participant": "max.muster", "role": "WorkspaceAdmin"},
    {"participant": "maria.meier", "role": "WorkspaceGuest"}
  ]
}

Beispiel-Response:

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

{
  "@id": "/ordnungssystem/dossier-23/@linked-workspace-participations",
  "items": [
      {
        "@id": "http://localhost:8080/fd/workspaces/workspace-1/@participations/max.muster",
        "@type": "virtual.participations.user",
        "is_editable": true,
        "role": {
          "title": "Admin",
          "token": "WorkspaceAdmin"
        },
        "participant_actor": {
          "@id": "http://localhost:8081/fd/@actors/max.muster",
          "identifier": "max.muster",
        },
        "participant": {
          "@id": "http://localhost:8081/fd/@ogds-users/max.muster",
          "@type": "virtual.ogds.user",
          "active": true,
          "email": "max.muster@example.com",
          "title": "Max Muster (max.muster)",
          "id": "max.muster",
          "is_local": null
        },
      },
      {
        "@id": "http://localhost:8080/fd/workspaces/workspace-1/@participations/maria.meier",
        "...": "..."
      },
  ]
}

Teilnehmer in einen verknüpften Teamraum einladen

Mit dem @linked-workspace-invitations Endpoint können Teilnehmer auf einem verknüpften Teamraum eingeladen werden.

Beispiel-Request:

POST /ordnungssystem/dossier-23/@linked-workspace-invitations HTTP/1.1
Accept: application/json
Content-Type: application/json

{
  "workspace_uid": "c11627f492b6447fb61617bb06b9a21a"
  "recipient_email": "max.muster@example.com",
  "role": {"token": "WorkspaceGuest"},
}

Beispiel-Response:

HTTP/1.1 204 No Content

Ein GEVER-Dokument in einen verknüpften Teamraum kopieren

Über den Endpoint @copy-document-to-workspace kann eine Kopie eines GEVER-Dokuments in einen bestehenden Teamraum hochgeladen werden. Dabei ist zu beachten, dass der Teamraum mit dem Haupt-Dossier verknüpft sein muss und dass sich das Dokument innerhalb des aktuellen Hauptdossier oder in einem seiner Subdossiers befindet.

Wird eine folder_uid angegeben, wird das Dokument in den enstprechenden Folder im Teamraum kopiert, ansonsten in das root des angegebenen Teamraums.

Die Kopie wird mit dem originalen Dokument verknüpft. Diese Verknüpfung wird auf beiden Objekten eingetragen (dem ursprünglichen GEVER-Dokument, und der Kopie im Teamraum), und ist in einem GET Request auf das entsprechende Dokument im Property teamraum_connnect_links sichtbar.

Ein automatisches Zurückführen oder Synchronisieren mit dem Originaldokument ist zur Zeit allerdings noch nicht möglich.

Das GEVER-Dokument kann beim Kopieren gesperrt werden, wenn der optionale lock Parameter auf True gesetzt wird. Dies verhindert, dass das Dokument im Gever überarbeitet wird.

Beispiel-Request:

POST /ordnungssystem/dossier-23/@copy-document-to-workspace HTTP/1.1
Accept: application/json
Content-Type: application/json

{
  "workspace_uid": "c11627f492b6447fb61617bb06b9a21a"
  "document_uid": "c2ae40cf41c84493ac4b7618d75ee7f7"
  "folder_uid": "dd0d865477204f11b8aa2108cd3940bd"
  "lock": "True"
}

Beispiel-Response:

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

{
  "@id": ".../workspaces/workspace-1/document-1",
  "@type": "opengever.document.document",
  "title": "Ein Dokument",
   "...": "..."
}

Ein GEVER-Dossier in einen verknüpften Teamraum kopieren

Ein Dossier, inkl. Subdossiers, kann in mehreren Schritten in den mit dem Hauptdossier verküpften Teamraum kopiert werden:

Zuerst kann über den @prepare-copy-dossier-to-workspace Endpoint die Ordnerstruktur des Dossiers in den Teamraum gespiegelt werden. Der Endpoint erstellt im Teamraum die entsprechende Ordnerstruktur, und liefert eine Liste von zu kopierenden Dokumenten zurück, und welchem Ordner diese zugeordnet werden. Danach können diese Dokumente über den @copy-document-to-workspace Endpoint in die jeweiligen Ordner kopiert werden.

Der @prepare-copy-dossier-to-workspace wird auf dem zu kopierenden Dossier aufgerufen, und hat zwei Modi: Validierung, und Erstellung der Struktur.

In beiden Fällen muss die workspace_uid des Teamraums angegeben werden, in welchen das Dossier kopiert werden soll.

Wenn der Parameter validate_only auf true gesetzt ist, prüft der Endpoint nur die entsprechenden Vorbedingungen (Hautpdossier mit Teamraum verküpft, keine ausgecheckten Dokumente), und liefert ggf. die Fehler zurück.

Wenn validate_only auf false gesetzt ist, erstellt der Endpoint im angegebenen Workspace eine leere Ordnerstruktur, welche der Dossierstruktur entspricht. In der Response gibt der Endpoint dann eine Liste von Dokumenten zurück, und die Angabe, in welchen Ordner sie kopiert werden sollen:

Beispiel-Request:

POST /ordnungssystem/dossier-23/@prepare-copy-dossier-to-workspace HTTP/1.1
Accept: application/json
Content-Type: application/json

{
  "workspace_uid": "c11627f492b6447fb61617bb06b9a21a",
  "validate_only": false
}

Beispiel-Response:

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

{
    "docs_to_upload": [
        {
            "source_document_uid": "24c8742581a046f9b645f24c9a9cd874",
            "target_folder_uid": "d95b653a1fc642c18851616d79b6e5d5",
            "title": "Some document"
        },
        {
            "source_document_uid": "189f2688fb334c1ea7c7ba60411baf78",
            "target_folder_uid": "b529713f1f28421da968550f3aef7cdb",
            "title": "Document in Subdossier"
        }
    ]
}

Dokumente in einem verknüpften Teamraum auflisten

Über den Endpoint @list-documents-in-linked-workspace werden die Dokumente in einem verlinktem Teamraum aufgelistet. Der Endpoint benötigt als zusätzlichen Pfad Parameter die UID des Teamraums, z.B. @list-documents-in-linked-workspace/workspace_uid. Dieser Endpoint unterstützt Batching.

Beispiel-Request:

GET /ordnungssystem/dossier-23/@list-documents-in-linked-workspace/42bd0fa3b90548fda53105081886a21c HTTP/1.1
Accept: application/json

Beispiel-Response:

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

{
  "@id": "http://localhost:8080/fd/dossier-23/@list-documents-in-linked-workspace/42bd0fa3b90548fda53105081886a21c",
  "batching": null,
  "items": [
      {
          "@id": "http://localhost:8080/fd/workspaces/workspace-5/document-126",
          "@type": "opengever.document.document",
          "UID": "39e29affb6f94a7d905f587fce3244f8",
          "checked_out": "",
          "description": "",
          "file_extension": ".jpg",
          "filename": "rand_image.jpg",
          "review_state": "document-state-draft",
          "title": "rand_image"
      },
      {
          "@id": "http://localhost:8080/fd/workspaces/workspace-5/document-127",
          "@type": "ftw.mail.mail",
          "UID": "ebb87ebde84a4f9cae5fb91d04c89de8",
          "checked_out": "",
          "description": "",
          "file_extension": ".eml",
          "filename": "Test email.eml",
          "review_state": "mail-state-active",
          "title": "Test email"
      }
    ],
  "items_total": 2
}

Ein GEVER-Dokument von einem verknüpften Teamraum zurückführen

Über den Endpoint @copy-document-from-workspace kann ein Dokument aus einem verknüpften Teamraum in GEVER zurückgeführt werden.

Abhängig vom Boolean-Parameter as_new_version kann bestimmt werden, ob das Dokument als neue Version des Ursprungsdokuments zurückgeführt werden soll (falls möglich), oder als Kopie (als neues GEVER-Dokument).

In gewissen Fällen ist es nicht möglich, ein Dokument als neue Version zurückzuführen. Z.B. wenn das Teamraum-Dokument nicht mit einem GEVER-Dokument verlinkt ist, das Dokument keine Datei hat, oder es sich um ein E-Mail handelt.

Wenn mit "as_new_version": true in solchen Fällen trotzdem eine neue Version gewünscht wird, erstellt das Backend automatisch eine Kopie statt einer Version. Die Entscheidung, welchen Rückführungsmechanismus das Backend schlussendlich gewählt und durchgeführt hat, wird in der Response im Attribut teamraum_connect_retrieval_mode zurückgegeben: Entweder copy oder version.

Beispiel-Request:

POST /ordnungssystem/dossier-23/@copy-document-from-workspace HTTP/1.1
Accept: application/json
Content-Type: application/json

{
  "workspace_uid": "c11627f492b6447fb61617bb06b9a21a",
  "document_uid": "c2ae40cf41c84493ac4b7618d75ee7f7",
  "as_new_version": true
}

Beispiel-Response:

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

{
  "@id": ".../dossier-23/document-1",
  "@type": "opengever.document.document",
  "title": "Ein Dokument",
  "teamraum_connect_retrieval_mode": "version",
   "...": "..."
}