Spezifikation OGGBundle

Dieses Dokument beschreibt die Spezifikation der Datenschnittstelle zur Migration eines Mandanten aus dem OS-Laufwerk in den zugehörigen GEVER-Mandanten.

Changelog:

Version Datum Autor Kommentar
1.0 16.10.2017 LG, PG Referenzierung von bestehendem Inhalt via Aktenzeichen
0.1.3 10.02.2017 LG Ergänzt: Setzen des Workflow-Status
0.1.2 16.01.2017 LG JSON-Schemas referenziert
0.1.1 12.01.2017 LG Nicht erlaubte Dateiformate definiert
0.1 26.11.2016 LG, DE Initialer Entwurf

Status: In Arbeit

Die hier beschriebene Schnittstelle dient dem einmaligen Import eines Ordnungssystems, seiner Ordnungspositionen, Dossiers/Subdossiers und Dokumente/Mails nach OneGov GEVER. Die Migration findet ab einem JSON-basierten Zwischenformat statt. Dieses muss einem validen Schema entsprechen, und die darin enthaltenen Daten müssen die in OneGov GEVER geltenden Geschäftsregeln erfüllen.

Zu migrierende Inhaltstypen

Ordnungssysteme Ja
Ordnungspositionen Ja
Dossiers Ja
Dokumente Ja
Mails Ja
Kontakte Nein *
Organisationseinheiten Nein **
Sitzungen Nein
Aufgaben / Weiterleitungen Nein

* “Kontakte” bezeichnet in diesem Zusammenhang einen speziellen Inhaltstyp in OneGov GEVER, mit welchem Adressdaten direkt in GEVER erfasst werden können, welche nicht in anderen Systemen wie z.B. AD geführt werden. Benutzer aus dem AD werden hingegen in OneGov GEVER auch importiert werden, allerdings direkt aus dem AD, nicht als Teil des Zwischenformats

** Details wie die mit Organisationseinheiten verknüpften Berechtigungen aus OS-Laufwerk genau migriert werden müssen noch geklärt werden. Die Organisationseinheiten selbst müssen jedoch nicht migriert werden.

OneGov GEVER Bundle (OGGBundle)

Das Zwischenformat für den Export von Daten aus OS-Laufwerk und dem Import in OneGov GEVER wird als OneGov GEVER Bundle (OGGBundle) bezeichnet.

Das Bundle kann als “virtuelles Verzeichnis” verstanden werden: Es folgt einer Verzeichnisstruktur, welche nach einem bestimmten Muster aufgebaut ist, und alle nötigen Informationen des Exports enthält. Das Bundle kann somit für sehr kleine Datenmengen als ZIP-Datei mit der Endung .oggbundle (z.B. testinhalte.oggbundle) abgeliefert werden, oder auch als Verzeichnis mit der Endung .oggbundle auf einem Server hinterlegt oder gemountet werden. Der konkrete Transportmechanismus ist nicht Teil dieser Spezifikation, und kann dem Anwendungszweck gemäss gewählt werden.

Alle Pfad-Angaben in einem Bundle sind relativ zum root des Bundles.

Das Bundle besteht aus einer Sammlung von JSON-Dateien, deren Inhalt einem bestimmten Schema folgen muss, und einem Unterverzeichnis files/ welches die Dateien für Dokumente (Primärdaten) enthält.


Ein Bundle beinhaltet eine Datei pro zu importierendem Inhaltstyp. Darin müssen die jeweiligen Inhalte flach (ohne Verschachtelung) im JSON-Format gespeichert werden. Für jede solche Datei wird ein JSON-Schema zur Verfügung gestellt, welches den Aufbau der JSON-Datei genau beschreibt und mit dem die Inhalte vor einem Import validiert werden müssen. Die folgenden Abschnitte beschreiben die im Moment unterstützten Inhaltstypen und die damit assoziierten Dateien im Bundle.

img-image-1

Konfiguration und Bundle-Metadaten

metadata.json

Diese Datei beinhaltet Metadaten über das Bundle, z.B. den Erstellungszeitpunkt und Ersteller des Bundles oder den Verwendungszweck (optional).

configuration.json

Diese Datei beinhaltet die Konfiguration des Mandanten, insbesondere auch die zur Validierung der Inhalte benötigten Wertebereiche, welche für gewisse Felder pro Mandant konfigurierbar sind.

JSON Schema: configuration.schema.json

Daten für Inhaltstypen

reporoots.json

Diese Datei beinhaltet ein oder mehrere Ordnungssystem-Wurzeln.

JSON Schema: reporoots.schema.json

repofolders.json

Diese Datei beinhaltet die einzelnen Ordnungspositionen, die in den Ordnungssystem-Wurzeln abgelegt werden.

JSON Schema: repofolders.schema.json

dossiers.json

Diese Datei beinhaltet Dossiers und Subdossiers, diese können in den Ordnungspositionen abgelegt werden.

JSON Schema: dossiers.schema.json

documents.json

Diese Datei beinhaltet die Metadaten der Dokumente. Die Binärdateien werden im Ordner files/ zur Verfügung gestellt und müssen mit einem zum Bundle relativen Pfad referenziert werden. Die Metadaten beinhalten unter anderem auch den Dateinamen, der Dateiname der Datei auf dem Filesystem wird nicht verwendet, sondern von den Metadaten überschrieben.

Siehe untenstehende Erläuterungen im Abschnitt files/ zu Details bezüglich den Dateipfaden.

JSON Schema: documents.schema.json

files/

Dieser Ordner beinhaltet die Primärdateien der Dokumente. Ob die Dateien flach abgelegt werden, oder in weitere Unterordner verschachtelt werden ist nicht vorgegeben - die Strukturierung dieses Verzeichnisses ist dem Lieferanten des Bundle überlassen. Die Dateinamen müssen jedoch normalisiert werden um Inkompatibilitäten zu vermeiden, die Aufgrund unterschiedlicher Zeichensätzen in unterschiedlichen Umgebungen entstehen können. Wir empfehlen ein einfaches Schema mit aufsteigender Nummerierung wie z.B. file_00123.pdf.

Der tatsächlich in OneGov GEVER verwendete Titel / Dateiname wird gesteuert über das Attribut title in den im documents.json gelieferten Metadaten: Im Attribut title soll der ursprüngliche Dateiname, inklusive Dateiendung geliefert werden. In OneGov GEVER wird der Titel des Dokuments dann von diesem Attribut abgeleitet, indem die Dateiendung entfernt wird. Die Dateiendung selbst hingegen wird zur Bestimmung des Inhaltstyps (MIME-Type) verwendet.

Folgende Dateitypen sind in OGGBundles nicht erlaubt:

  • .msg
  • .exe
  • .dll

Pfade / Dateinamen dürfen nur alphanumerische Zeichen, Unterstrich und Bindestrich enthalten ([0-9][a-zA-Z][-_]). Alle Pfade sind case-sensitive, und dürfen eine maximale Länge von 255 Zeichen nicht überschreiten. Die Pfade sind als UNIX-Pfade relativ zum root des Bundles anzugeben (getrennt mit Forward-Slash).

Abbildung von Verschachtelung (containment)

Die hierarchische Beziehung zwischen Objekten wird mittels Parent-Pointers abgebildet.

parent_guid

Da die Daten in den JSON-Dateien nicht verschachtelt abgelegt werden, ist es nötig diese Verschachtelung während dem Import aufzulösen. Diese Verschachtelung wird mittels global eindeutiger ID (GUID) und einem Pointer von Children auf das enthaltende Parent abgebildet. Dazu muss jedes Objekt über eine GUID verfügen. Diese muss im Attribut guid gespeichert werden. Die Verschachtelung wird mittels einer Referenz auf das Parent hergestellt, dazu muss jedes Objekt, das ein Parent besitzt, das Attribut parent_guid definieren, und damit auf das Parent referenzieren:

code:

{
"guid": "7777-0000-0000-0000",
...
},
{
"guid": "9999-0000-0000-0000",
"parent_guid": "7777-0000-0000-0000",
...
}

Es ist auch möglich, über die parent_guid ein Objekt als Parent zu referenzieren, das sich aufgrund eines früheren Imports bereits im System befindet. Dieses Parent-Item muss dann im Bundle nicht mehr mitgeliefert werden (darf aber, solang die GUID gleich bleibt).

Wenn sowohl im Bundle ein Item mit einer bestimmten GUID geliefert wird, und sich auch im System bereits ein Objekt mit identischer GUID befindet, wird das Item aus dem Bundle ignoriert und übersprungen (es werden also auch keine Metadaten des bereits existierenden Objekts aktualisiert).

Dies bedeutet, wenn nacheinander zwei Bundles importiert werden, von denen das zweite zusätzliche Daten enthält, wird nur die Differenz importiert (Objekte mit GUIDs welche im ersten Bundle noch nicht existiert haben). Dies setzt aber zwingend voraus, dass für Objekte die als “gleich” / “schon vorhanden” erkannt werden sollen, sich die GUID nicht ändert (ansonsten werden die Objekte erneut importiert werden, und dementsprechend doppelt vorhanden sein).

parent_reference

Alternativ zur GUID kann auch das Akzenzeichen eines Objekts als eindeutige Referenz auf das Parent verwendet werden. Die Verwendung des Aktenzeichens als Parent-Pointer erlaubt es, bereits existierende Objekte über deren eindeutiges Aktenzeichen zu referenzieren, und ermöglicht so partielle Importe. So ist z.B. das importieren von Dokumenten in ein bestehendes Dossier möglich, indem dieses Dossier über sein Aktenzeichen referenziert wird.

Wird zur Referenzierung das Aktenzeichen verwendet, muss dazu das Attribut parent_reference (statt parent_guid) gesetzt werden. Das Aktenzeichen in diesem Attribut wird als verschachtelte Arrays von Integern erwartet, welche die einzelnen Komponenten des Aktenzeichens (ohne Formatierung) abbilden. Beispiel: [[1, 3, 5], [472, 9] entspricht dem Aktenzeichen 1.3.5 / 472.9 (Position 1.3.5, Dossier 472, Subdossier 9):

code:

{
"guid": "9999-0000-0000-0000",
"parent_reference": [[1, 3, 5], [472, 9],
...
}

Siehe auch Abschnitt Geschäftsregeln für Angaben, welche Inhaltstypen wie verschachtelt werden dürfen.

Berechtigungen

Berechtigungen werden in OneGov GEVER standardmässig auf die Children vererbt. Es ist auf den Stufen Ordnungssystem, Ordnungsposition und Dossier erlaubt die Berechtigungen zu setzen, wobei Berechtigungen auf Stufe Dossier die Ausnahme sein sollten.

Die Berechtigungen können granular für die folgenden Rollen vergeben werden:

  • read (Lesen)
  • add (Dossiers hinzufügen)
  • edit (Dossiers bearbeiten)
  • close (Dossiers abschliessen)
  • reactivate (Dossiers reaktivieren)
  • manage_dossiers (Dossiers verwalten)

Zusätzlich kann mit einem block_inheritance Flag spezifiziert werden, ob die Vererbung der Berechtigungen auf dieser Stufe unterbrochen werden soll. Dies führt dazu, dass ab dieser Stufe nur die explizit definierten Zugriffsberechtigungen gültig sind, und keine Berechtigungen mehr via Vererbung vom Parent übernommen werden.

Berechtigungen werden an einen oder mehrere “Principals” vergeben, dies entspricht einem Benutzer oder einer Gruppe.

Setzen von Werten

Defaultwerte werden nur gesetzt, falls die entsprechenden Attribute im gelieferten JSON nicht vorhanden sind.

Setzen des Workflow-Status

Für Objekte mit einem Workflow kann über das Property review_state angegeben werden, in welchem Status das Objekt erstellt werden kann.

Die vollständige Liste der gültigen Workflow-States ist im Schema der entsprechenden Objekte definiert.

Ordnungssysteme


repositoryroot-state-active Aktiv

Initial-Zustand: repositoryroot-state-active

JSON Schema: reporoots.schema.json

Ordnungspositionen


repositoryfolder-state-active Aktiv

Initial-Zustand: repositoryfolder-state-active

JSON Schema: repofolders.schema.json

Dossiers


dossier-state-active In Bearbeitung
dossier-state-resolved Abgeschlossen

Initial-Zustand: dossier-state-active

Um ein Dossier im abgeschlossenen Zustand abzuliefern, wird daher der review_state auf den entsprechenden Wert gesetzt:

...

“review_state”: “dossier-state-resolved”,

...

Wenn ein Dossier im abgeschlossenen Zustand abgeliefert wird, MUSS jedes darin enthaltene Subdossier ebenfalls den Status dossier-state-resolved haben. Das Erfüllen der Regeln zu “losen Blättern” und Datumsbereichen hingegen ist empfohlen, wird aber für den Import nicht strikt verlangt (wird protokolliert, aber “as-is” importiert).

JSON Schema: dossiers.schema.json

Dokumente


document-state-draft (Standard-Zustand)

Initial-Zustand: document-state-draft

JSON Schema: documents.schema.json

Zusätzliche Validierung

Schema

  • Die GUID eines jeden eingelesenen Objektes muss zwingend eindeutig sein.
  • Das Aktenzeichen eines Dossiers/Dokumentes muss zwingend eindeutig sein, ebenso die Positionsnummer einer Ordnungsposition.
  • Date und DateTime Felder müssen gemäss RFC 3339 formatiert werden.

Geschäftsregeln

Die folgenden Geschäftsregeln gelten in OneGov GEVER:

  • Die Konfigurationsvariable maximum_repository_depth und maximum_dossier_depth definieren wie tief Ordnungspositionen und Dossiers ineinander verschachtelt werden dürfen.

  • Abgeschlossene Dossiers:

    • Abgeschlossene Dossiers dürfen keine offenen Subdossiers enthalten.
    • Ist ein Dossier abgeschlossen und hat Subdossiers, so müssen alle Dokumente einem Subdossier zugeordnet werden, das Hauptdossier darf keine ihm direkt zugeordneten Dokumente enthalten (“keine losen Blätter”).
    • Das Enddatum eines abgeschlossenen Dossiers muss immer grösser oder gleich dem Enddatum aller seiner Subdossiers, und grösser oder gleich dem Dokumentdatum eines enthaltenen Dokumentes sein.
  • Eine Ordnungsposition kann nur entweder Dossiers oder weitere Ordnungspositionen enthalten, nie Objekte beider Inhaltstypen gleichzeitig. Dossiers dürfen dementsprechend nur in Leaf-Nodes (Rubriken) des Ordnungssystems enthalten sein.

  • Bei den folgenden Feldern ist die Auswahlmöglichkeit durch den Parent eingeschränkt:

    • custody_period (Archivische Schutzfrist)
    • archival_value (Archivwürdigkeit)
    • classification (Klassifikation)
    • privacy_layer (Datenschutzstufe)
    • retention_period (Aufbewahrungsdauer) - Je nach Konfiguration ist diese Regel auch nicht aktiv

    Einschränken bedeutet in diesem Zusammenhang, dass die Liste der zur Verfügung stehenden Elemente gemäss JSON-Schema Definition auf das vom Parent ausgewählte Element und alle Folge-Elemente reduziert wird.

Aktenzeichen und Laufnummern

In OneGov GEVER werden Aktenzeichen geführt, und auf den Ebenen Dossier und Dokument dargestellt. Das Darstellungsformat des Aktenzeichens (Gruppierung, Trennzeichen) ist pro Mandant konfigurierbar, und die einzelnen Bestandteile werden unabhängig vom formatierten String separat gespeichert.

Ein Beispiel für das Aktenzeichen eines Dokumentes in GEVER sieht wie folgt aus:
FD 0.7.1.1 / 5.3 / 54

Die einzelnen Komponenten stehen hier für folgendes:

  • FD - ein pro Mandant konfigurierbares Kürzel das im Aktenzeichen verwendet wird
  • 0.7.1.1 - die Nummer der Ordnungsposition. Zusammengesetzt aus den Einzelkomponenten (0, 7, 1, und 1) welche lokal auf den entsprechenden Ordnungspositionen geführt werden / gespeichert sind. Separiert durch ein konfigurierbares Trennzeichen (Standardmässig Punkt).
  • 5 - die Nummer des Dossiers innerhalb der Rubrik (aufsteigender Zähler pro Rubrik)
  • 3 - die Nummer eines Subdossiers innerhalb des Dossiers, falls Subdossiers existieren
  • 54 - die global eindeutige Laufnummer des Dokuments (auch ohne den Rest des Aktenzeichens eindeutig)

Die Aktenzeichen für Dossiers/Subdossiers lassen den letzten Teil (Laufnummer des Dokuments) weg.

Abgrenzungen

  • Es können vorerst nur die erwähnten Inhaltstypen importiert werden, nicht alle in OneGov GEVER verfügbaren Typen.
  • Dokument-Versionen können nicht importiert werden.
  • Mails können beim automatischen import nicht verlustlos von *.msg nach *.eml konvertiert werden, daher müssen diese Vorgängig nach *.eml konvertiert werden.
  • Es kann nicht überprüft werden, ob die Rechte “sinnvoll” gesetzt sind (optimale Nutzung des Vererbungsmechanismus, keine Redundanzen). Eine allfällige Vereinfachung der Berechtigungen muss vor einem Import der Daten nach OneGov GEVER durchgeführt werden.

Anhang

Schemas

Die JSON-Schemas, welche die Struktur der JSON-Dateien für die Metadaten definieren, sind hier abgelegt:

configuration.schema.json

Schema anzeigen
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "enums": {
    "public_trial": {
      "type": "string",
      "enum": [
        "unchecked",
        "public",
        "private",
        "limited-public"
      ]
    },
    "reference_number_formatters": {
      "type": "string",
      "enum": [
        "dotted",
        "grouped_by_three"
      ]
    }
  },
  "definitions": {
    "custom_vocabulary": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "identifier": {
            "type": "string"
          },
          "label_en": {
            "type": "string"
          },
          "label_de": {
            "type": "string"
          },
          "label_fr": {
            "type": "string"
          }
        },
        "required": [
          "identifier",
          "label_en"
        ],
        "anyOf": [
          {
            "required": [
              "label_de"
            ]
          },
          {
            "required": [
              "label_fr"
            ]
          }
        ]
      }
    }
  },
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "public_trial_default_value": {
      "$ref": "#/enums/public_trial"
    },
    "maximum_repository_depth": {
      "type": "integer"
    },
    "maximum_dossier_depth": {
      "type": "integer"
    },
    "retention_periods": {
      "type": "array",
      "items": {
        "type": "integer"
      }
    },
    "custody_periods": {
      "type": "array",
      "items": {
        "type": "integer"
      }
    },
    "dossier_type_prefixes": {
      "$ref": "#/definitions/custom_vocabulary"
    },
    "dossier_container_types": {
      "$ref": "#/definitions/custom_vocabulary"
    },
    "preserved_as_paper_default": {
      "type": "boolean"
    },
    "reference_number_formatter": {
      "$ref": "#/enums/reference_number_formatters"
    }
  },
  "required": [
    "public_trial_default_value",
    "maximum_repository_depth",
    "maximum_dossier_depth",
    "retention_periods",
    "custody_periods",
    "dossier_type_prefixes",
    "dossier_container_types",
    "preserved_as_paper_default",
    "reference_number_formatter"
  ]
}

documents.schema.json

Schema anzeigen
{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "array",
    "items": {
        "$ref": "#/definitions/document"
    },
    "definitions": {
        "document": {
            "type": "object",
            "title": "Dokument",
            "additionalProperties": false,
            "properties": {
                "title": {
                    "type": "string",
                    "title": "Titel",
                    "description": "",
                    "_zope_schema_type": "TextLine"
                },
                "classification": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Klassifikation",
                    "description": "Grad, in dem die Unterlagen vor unberechtigter Einsicht gesch\u00fctzt werden m\u00fcssen.",
                    "_zope_schema_type": "Choice",
                    "default": "unprotected",
                    "enum": [
                        null,
                        "unprotected",
                        "confidential",
                        "classified"
                    ]
                },
                "privacy_layer": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Datenschutzstufe",
                    "description": "Markierung, die angibt, ob die Unterlagen besonders sch\u00fctzenswerte Personendaten oder Pers\u00f6nlichkeitsprofile gem\u00e4ss Datenschutzrecht enthalten.",
                    "_zope_schema_type": "Choice",
                    "default": "privacy_layer_no",
                    "enum": [
                        null,
                        "privacy_layer_no",
                        "privacy_layer_yes"
                    ]
                },
                "public_trial": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "\u00d6ffentlichkeitsstatus",
                    "description": "Angabe, ob die Unterlagen gem\u00e4ss \u00d6ffentlichkeitsgesetz zug\u00e4nglich sind oder nicht.",
                    "_zope_schema_type": "Choice",
                    "default": "unchecked",
                    "enum": [
                        null,
                        "unchecked",
                        "public",
                        "limited-public",
                        "private"
                    ]
                },
                "public_trial_statement": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Bearbeitungsinformation",
                    "description": "Datum Gesuch, Gesuchsteller, Datum Entscheid, Verweis auf GEVER-Gesuchdossier",
                    "_zope_schema_type": "Text",
                    "default": ""
                },
                "relatedItems": {
                    "type": [
                        "null",
                        "array"
                    ],
                    "title": "Verwandte Dokumente",
                    "description": "",
                    "_zope_schema_type": "RelationList",
                    "default": []
                },
                "description": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Beschreibung",
                    "description": "",
                    "_zope_schema_type": "Text",
                    "default": null
                },
                "keywords": {
                    "type": [
                        "null",
                        "array"
                    ],
                    "title": "Schlagworte",
                    "description": "Schlagw\u00f6rter zur Umschreibung eines Dokuments. Nicht zu verwechseln mit der Ordnungsposition. <br>ACHTUNG: Beachten Sie bei der Verwendung von Schlagworten die Datenschutzvorgaben (z.B. keine Eigennamen).",
                    "_zope_schema_type": "Tuple"
                },
                "foreign_reference": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Fremdzeichen",
                    "description": "Referenz auf das entsprechende Dossier des Absenders",
                    "_zope_schema_type": "TextLine"
                },
                "document_date": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Dokumentdatum",
                    "format": "date",
                    "description": "Datum des Dokuments",
                    "_zope_schema_type": "Date",
                    "default": "<Aktuelles Datum>"
                },
                "receipt_date": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Eingangsdatum",
                    "format": "date",
                    "description": "Datum, an dem das Dokument \u00fcber den Korrespondenzweg angekommen ist",
                    "_zope_schema_type": "Date"
                },
                "delivery_date": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Ausgangsdatum",
                    "format": "date",
                    "description": "Datum, an dem das Dokument \u00fcber den Korrespondenzweg versandt worden ist",
                    "_zope_schema_type": "Date"
                },
                "document_type": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Dokumenttyp",
                    "description": "",
                    "_zope_schema_type": "Choice",
                    "enum": [
                        null,
                        "contract",
                        "directive",
                        "offer",
                        "protocol",
                        "question",
                        "regulations",
                        "report",
                        "request"
                    ]
                },
                "document_author": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Autor",
                    "description": "Nachname Vorname oder ein Benutzerk\u00fcrzel (wird automatisch nach Nachname Vorname aufgel\u00f6st)",
                    "_zope_schema_type": "TextLine"
                },
                "preserved_as_paper": {
                    "type": [
                        "null",
                        "boolean"
                    ],
                    "title": "In Papierform aufbewahrt",
                    "description": "In Papierform aufbewahrt",
                    "_zope_schema_type": "Bool",
                    "default": true
                },
                "review_state": {
                    "type": "string",
                    "enum": [
                        "document-state-draft"
                    ]
                },
                "guid": {
                    "type": "string"
                },
                "parent_guid": {
                    "type": [
                        "null",
                        "string"
                    ]
                },
                "parent_reference": {
                    "type": [
                        "null",
                        "array"
                    ],
                    "items": {
                        "items": {
                            "type": "integer"
                        },
                        "type": "array"
                    }
                },
                "filepath": {
                    "type": "string"
                },
                "sequence_number": {
                    "type": [
                        "null",
                        "integer"
                    ],
                    "title": "Laufnummer",
                    "description": "Fortlaufend gez\u00e4hlte Nummer eines Dokumentes."
                },
                "original_message_path": {
                    "type": [
                        "null",
                        "string"
                    ]
                }
            },
            "required": [
                "review_state",
                "guid",
                "title",
                "filepath"
            ],
            "allOf": [
                {
                    "anyOf": [
                        {
                            "required": [
                                "parent_guid"
                            ]
                        },
                        {
                            "required": [
                                "parent_reference"
                            ]
                        }
                    ]
                }
            ],
            "field_order": [
                "title",
                "file",
                "classification",
                "privacy_layer",
                "public_trial",
                "public_trial_statement",
                "relatedItems",
                "description",
                "keywords",
                "foreign_reference",
                "document_date",
                "receipt_date",
                "delivery_date",
                "document_type",
                "document_author",
                "preserved_as_paper",
                "archival_file",
                "archival_file_state"
            ]
        }
    }
}

dossiers.schema.json

Schema anzeigen
{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "array",
    "items": {
        "$ref": "#/definitions/dossier"
    },
    "definitions": {
        "dossier": {
            "type": "object",
            "title": "Gesch\u00e4ftsdossier",
            "additionalProperties": false,
            "properties": {
                "title": {
                    "type": "string",
                    "title": "Titel",
                    "description": "",
                    "_zope_schema_type": "TextLine"
                },
                "description": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Beschreibung",
                    "description": "",
                    "_zope_schema_type": "Text"
                },
                "keywords": {
                    "type": [
                        "null",
                        "array"
                    ],
                    "title": "Schlagworte",
                    "description": "Schlagw\u00f6rter zur Umschreibung eines Dossiers. Nicht zu verwechseln mit der Ordnungsposition. <br>ACHTUNG: Beachten Sie bei der Verwendung von Schlagworten die Datenschutzvorgaben (z.B. keine Eigennamen).",
                    "_zope_schema_type": "Tuple"
                },
                "start": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Beginn",
                    "format": "date",
                    "description": "",
                    "_zope_schema_type": "Date",
                    "default": "<Aktuelles Datum>"
                },
                "end": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Ende",
                    "format": "date",
                    "description": "",
                    "_zope_schema_type": "Date"
                },
                "comments": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Kommentar",
                    "description": "",
                    "_zope_schema_type": "Text"
                },
                "responsible": {
                    "type": "string",
                    "title": "Federf\u00fchrend",
                    "description": "",
                    "_zope_schema_type": "Choice",
                    "_vocabulary": "<G\u00fcltige User-ID>"
                },
                "external_reference": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Externe Referenz",
                    "description": "",
                    "_zope_schema_type": "TextLine"
                },
                "filing_prefix": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Ablage Pr\u00e4fix",
                    "description": "",
                    "_zope_schema_type": "Choice",
                    "enum": [
                        null,
                        "administration",
                        "department",
                        "directorate",
                        "government",
                        "personal"
                    ]
                },
                "container_type": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Beh\u00e4ltnis-Art",
                    "description": "Art des Beh\u00e4lters, in dem ein Dossier in Papierform abgelegt ist",
                    "_zope_schema_type": "Choice",
                    "enum": [
                        null,
                        "box",
                        "dossier",
                        "folder"
                    ]
                },
                "number_of_containers": {
                    "type": [
                        "null",
                        "integer"
                    ],
                    "title": "Anzahl Beh\u00e4ltnisse",
                    "description": "Anzahl Beh\u00e4lter, die ein (grosses) Dossier in Papierform enthalten",
                    "_zope_schema_type": "Int"
                },
                "container_location": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Beh\u00e4ltnis-Standort",
                    "description": "Standortangabe des Beh\u00e4lters, in dem ein Dossier in Papierform abgelegt ist",
                    "_zope_schema_type": "TextLine"
                },
                "relatedDossier": {
                    "type": [
                        "null",
                        "array"
                    ],
                    "title": "Verwandte Dossiers",
                    "description": "",
                    "_zope_schema_type": "RelationList",
                    "default": []
                },
                "former_reference_number": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Fr\u00fcheres Aktenzeichen",
                    "description": "",
                    "_zope_schema_type": "TextLine"
                },
                "reference_number": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Aktenzeichen",
                    "description": "",
                    "_zope_schema_type": "TextLine"
                },
                "classification": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Klassifikation",
                    "description": "Grad, in dem die Unterlagen vor unberechtigter Einsicht gesch\u00fctzt werden m\u00fcssen.",
                    "_zope_schema_type": "Choice",
                    "default": "unprotected",
                    "enum": [
                        null,
                        "unprotected",
                        "confidential",
                        "classified"
                    ]
                },
                "privacy_layer": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Datenschutzstufe",
                    "description": "Markierung, die angibt, ob die Unterlagen besonders sch\u00fctzenswerte Personendaten oder Pers\u00f6nlichkeitsprofile gem\u00e4ss Datenschutzrecht enthalten.",
                    "_zope_schema_type": "Choice",
                    "default": "privacy_layer_no",
                    "enum": [
                        null,
                        "privacy_layer_no",
                        "privacy_layer_yes"
                    ]
                },
                "public_trial": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "\u00d6ffentlichkeitsstatus",
                    "description": "Angabe, ob die Unterlagen gem\u00e4ss \u00d6ffentlichkeitsgesetz zug\u00e4nglich sind oder nicht.",
                    "_zope_schema_type": "Choice",
                    "default": "unchecked",
                    "enum": [
                        null,
                        "unchecked",
                        "public",
                        "limited-public",
                        "private"
                    ]
                },
                "public_trial_statement": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Bearbeitungsinformation",
                    "description": "Datum Gesuch, Gesuchsteller, Datum Entscheid, Verweis auf GEVER-Gesuchdossier",
                    "_zope_schema_type": "Text",
                    "default": ""
                },
                "retention_period": {
                    "type": [
                        "null",
                        "integer"
                    ],
                    "title": "Aufbewahrungsdauer (Jahre)",
                    "description": "Zeitraum zwischen dem j\u00fcngsten Dokumentdatum eines in einem Dossier enthaltenen Dokuments und dem Zeitpunkt, an dem dieses f\u00fcr die Gesch\u00e4ftst\u00e4tigkeit der Verwaltungseinheit nicht mehr ben\u00f6tigt wird.",
                    "_zope_schema_type": "Choice",
                    "default": 5,
                    "enum": [
                        null,
                        5,
                        10,
                        15,
                        20,
                        25
                    ]
                },
                "retention_period_annotation": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Kommentar zur Aufbewahrungsdauer",
                    "description": "",
                    "_zope_schema_type": "Text"
                },
                "archival_value": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Archivw\u00fcrdigkeit",
                    "description": "Archivw\u00fcrdigkeit",
                    "_zope_schema_type": "Choice",
                    "default": "unchecked",
                    "enum": [
                        null,
                        "unchecked",
                        "prompt",
                        "archival worthy",
                        "not archival worthy",
                        "archival worthy with sampling"
                    ]
                },
                "archival_value_annotation": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Kommentar zur Archivw\u00fcrdigkeit",
                    "description": "",
                    "_zope_schema_type": "Text"
                },
                "custody_period": {
                    "type": [
                        "null",
                        "integer"
                    ],
                    "title": "Archivische Schutzfrist (Jahre)",
                    "description": "Dauer, w\u00e4hrend der nach der Archivierung die Dokumente vor \u00f6ffentlicher Einsichtnahme gesch\u00fctzt sind.",
                    "_zope_schema_type": "Choice",
                    "default": 30,
                    "enum": [
                        null,
                        0,
                        30,
                        100,
                        150
                    ]
                },
                "date_of_cassation": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Kassationsdatum",
                    "format": "date",
                    "description": "",
                    "_zope_schema_type": "Date"
                },
                "date_of_submission": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Anbietezeitpunkt",
                    "format": "date",
                    "description": "",
                    "_zope_schema_type": "Date"
                },
                "review_state": {
                    "type": "string",
                    "enum": [
                        "dossier-state-active",
                        "dossier-state-resolved"
                    ]
                },
                "guid": {
                    "type": "string"
                },
                "parent_guid": {
                    "type": [
                        "null",
                        "string"
                    ]
                },
                "parent_reference": {
                    "type": [
                        "null",
                        "array"
                    ],
                    "items": {
                        "items": {
                            "type": "integer"
                        },
                        "type": "array"
                    }
                },
                "_permissions": {
                    "$ref": "#/definitions/permission"
                },
                "sequence_number": {
                    "type": [
                        "null",
                        "integer"
                    ],
                    "title": "Laufnummer",
                    "description": "Fortlaufend gez\u00e4hlte Nummer eines Dossiers."
                }
            },
            "required": [
                "title",
                "responsible",
                "review_state",
                "guid"
            ],
            "allOf": [
                {
                    "anyOf": [
                        {
                            "required": [
                                "parent_guid"
                            ]
                        },
                        {
                            "required": [
                                "parent_reference"
                            ]
                        }
                    ]
                }
            ],
            "field_order": [
                "title",
                "description",
                "keywords",
                "start",
                "end",
                "comments",
                "responsible",
                "external_reference",
                "filing_prefix",
                "container_type",
                "number_of_containers",
                "container_location",
                "relatedDossier",
                "former_reference_number",
                "reference_number",
                "classification",
                "privacy_layer",
                "public_trial",
                "public_trial_statement",
                "retention_period",
                "retention_period_annotation",
                "archival_value",
                "archival_value_annotation",
                "custody_period",
                "date_of_cassation",
                "date_of_submission"
            ]
        },
        "permission": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "block_inheritance": {
                    "type": "boolean"
                },
                "read": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "add": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "edit": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "close": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "reactivate": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            }
        }
    }
}

repofolders.schema.json

Schema anzeigen
{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "array",
    "items": {
        "$ref": "#/definitions/repofolder"
    },
    "definitions": {
        "repofolder": {
            "type": "object",
            "title": "Ordnungsposition",
            "additionalProperties": false,
            "properties": {
                "description": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Beschreibung",
                    "description": "Eine kurze Beschreibung des Inhalts.",
                    "_zope_schema_type": "Text",
                    "default": null
                },
                "valid_from": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "G\u00fcltig ab",
                    "format": "date",
                    "description": "",
                    "_zope_schema_type": "Date"
                },
                "valid_until": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "G\u00fcltig bis",
                    "format": "date",
                    "description": "",
                    "_zope_schema_type": "Date"
                },
                "location": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Standort",
                    "description": "",
                    "_zope_schema_type": "TextLine"
                },
                "referenced_activity": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Leistung",
                    "description": "",
                    "_zope_schema_type": "TextLine"
                },
                "former_reference": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Fr\u00fcheres Zeichen",
                    "description": "",
                    "_zope_schema_type": "TextLine"
                },
                "addable_dossier_types": {
                    "type": [
                        "null",
                        "array"
                    ],
                    "title": "Erlaubte Spezialdossiers",
                    "description": "W\u00e4hlen Sie die Spezialdossiers aus, die in dieser Ordnungsposition erlaubt sind.",
                    "_zope_schema_type": "List"
                },
                "allow_add_businesscase_dossier": {
                    "type": [
                        "null",
                        "boolean"
                    ],
                    "title": "Hinzuf\u00fcgen von Gesch\u00e4ftsdossiers erlauben",
                    "description": "W\u00e4hlen Sie, ob es in dieser Ordnungsposition erlaubt ist, Gesch\u00e4ftsdossiers hinzuzuf\u00fcgen. Ist diese Option deaktiviert, kann der Benutzer nur Dossiers aus einer Vorlage oder Spezialdossiers erstellen.",
                    "_zope_schema_type": "Bool"
                },
                "classification": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Klassifikation",
                    "description": "Grad, in dem die Unterlagen vor unberechtigter Einsicht gesch\u00fctzt werden m\u00fcssen.",
                    "_zope_schema_type": "Choice",
                    "default": "unprotected",
                    "enum": [
                        null,
                        "unprotected",
                        "confidential",
                        "classified"
                    ]
                },
                "privacy_layer": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Datenschutzstufe",
                    "description": "Markierung, die angibt, ob die Unterlagen besonders sch\u00fctzenswerte Personendaten oder Pers\u00f6nlichkeitsprofile gem\u00e4ss Datenschutzrecht enthalten.",
                    "_zope_schema_type": "Choice",
                    "default": "privacy_layer_no",
                    "enum": [
                        null,
                        "privacy_layer_no",
                        "privacy_layer_yes"
                    ]
                },
                "public_trial": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "\u00d6ffentlichkeitsstatus",
                    "description": "Angabe, ob die Unterlagen gem\u00e4ss \u00d6ffentlichkeitsgesetz zug\u00e4nglich sind oder nicht.",
                    "_zope_schema_type": "Choice",
                    "default": "unchecked",
                    "enum": [
                        null,
                        "unchecked",
                        "public",
                        "limited-public",
                        "private"
                    ]
                },
                "public_trial_statement": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Bearbeitungsinformation",
                    "description": "Datum Gesuch, Gesuchsteller, Datum Entscheid, Verweis auf GEVER-Gesuchdossier",
                    "_zope_schema_type": "Text",
                    "default": ""
                },
                "title_de": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Titel (deutsch)",
                    "description": "",
                    "_zope_schema_type": "TextLine"
                },
                "title_fr": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Titel (franz\u00f6sisch)",
                    "description": "",
                    "_zope_schema_type": "TextLine"
                },
                "retention_period": {
                    "type": [
                        "null",
                        "integer"
                    ],
                    "title": "Aufbewahrungsdauer (Jahre)",
                    "description": "Zeitraum zwischen dem j\u00fcngsten Dokumentdatum eines in einem Dossier enthaltenen Dokuments und dem Zeitpunkt, an dem dieses f\u00fcr die Gesch\u00e4ftst\u00e4tigkeit der Verwaltungseinheit nicht mehr ben\u00f6tigt wird.",
                    "_zope_schema_type": "Choice",
                    "default": 5,
                    "enum": [
                        null,
                        5,
                        10,
                        15,
                        20,
                        25
                    ]
                },
                "retention_period_annotation": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Kommentar zur Aufbewahrungsdauer",
                    "description": "",
                    "_zope_schema_type": "Text"
                },
                "archival_value": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Archivw\u00fcrdigkeit",
                    "description": "Archivw\u00fcrdigkeit",
                    "_zope_schema_type": "Choice",
                    "default": "unchecked",
                    "enum": [
                        null,
                        "unchecked",
                        "prompt",
                        "archival worthy",
                        "not archival worthy",
                        "archival worthy with sampling"
                    ]
                },
                "archival_value_annotation": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Kommentar zur Archivw\u00fcrdigkeit",
                    "description": "",
                    "_zope_schema_type": "Text"
                },
                "custody_period": {
                    "type": [
                        "null",
                        "integer"
                    ],
                    "title": "Archivische Schutzfrist (Jahre)",
                    "description": "Dauer, w\u00e4hrend der nach der Archivierung die Dokumente vor \u00f6ffentlicher Einsichtnahme gesch\u00fctzt sind.",
                    "_zope_schema_type": "Choice",
                    "default": 30,
                    "enum": [
                        null,
                        0,
                        30,
                        100,
                        150
                    ]
                },
                "date_of_cassation": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Kassationsdatum",
                    "format": "date",
                    "description": "",
                    "_zope_schema_type": "Date"
                },
                "date_of_submission": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Anbietezeitpunkt",
                    "format": "date",
                    "description": "",
                    "_zope_schema_type": "Date"
                },
                "reference_number_prefix": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Pr\u00e4fix des Aktenzeichens",
                    "description": "",
                    "_zope_schema_type": "TextLine",
                    "default": "<H\u00f6chste auf dieser Ebene vergebene Nummer + 1>"
                },
                "addable_dossier_templates": {
                    "type": [
                        "null",
                        "array"
                    ],
                    "title": "Erlaubte Dossiervorlagen",
                    "description": "",
                    "_zope_schema_type": "RelationList",
                    "default": []
                },
                "review_state": {
                    "type": "string",
                    "enum": [
                        "repositoryfolder-state-active"
                    ]
                },
                "guid": {
                    "type": "string"
                },
                "parent_guid": {
                    "type": [
                        "null",
                        "string"
                    ]
                },
                "parent_reference": {
                    "type": [
                        "null",
                        "array"
                    ],
                    "items": {
                        "items": {
                            "type": "integer"
                        },
                        "type": "array"
                    }
                },
                "_permissions": {
                    "$ref": "#/definitions/permission"
                }
            },
            "required": [
                "review_state",
                "guid"
            ],
            "allOf": [
                {
                    "anyOf": [
                        {
                            "required": [
                                "title_de"
                            ]
                        },
                        {
                            "required": [
                                "title_fr"
                            ]
                        }
                    ]
                },
                {
                    "anyOf": [
                        {
                            "required": [
                                "parent_guid"
                            ]
                        },
                        {
                            "required": [
                                "parent_reference"
                            ]
                        }
                    ]
                }
            ],
            "field_order": [
                "description",
                "valid_from",
                "valid_until",
                "location",
                "referenced_activity",
                "former_reference",
                "addable_dossier_types",
                "allow_add_businesscase_dossier",
                "classification",
                "privacy_layer",
                "public_trial",
                "public_trial_statement",
                "title_de",
                "title_fr",
                "retention_period",
                "retention_period_annotation",
                "archival_value",
                "archival_value_annotation",
                "custody_period",
                "date_of_cassation",
                "date_of_submission",
                "reference_number_prefix",
                "addable_dossier_templates"
            ]
        },
        "permission": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "block_inheritance": {
                    "type": "boolean"
                },
                "read": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "add": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "edit": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "close": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "reactivate": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "manage_dossiers": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            }
        }
    }
}

reporoots.schema.json

Schema anzeigen
{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "array",
    "items": {
        "$ref": "#/definitions/reporoot"
    },
    "definitions": {
        "reporoot": {
            "type": "object",
            "title": "Ordnungssystem",
            "additionalProperties": false,
            "properties": {
                "valid_from": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "G\u00fcltig ab",
                    "format": "date",
                    "description": "",
                    "_zope_schema_type": "Date"
                },
                "valid_until": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "G\u00fcltig bis",
                    "format": "date",
                    "description": "",
                    "_zope_schema_type": "Date"
                },
                "version": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Version",
                    "description": "",
                    "_zope_schema_type": "TextLine"
                },
                "title_de": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Titel (deutsch)",
                    "description": "",
                    "_zope_schema_type": "TextLine"
                },
                "title_fr": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "title": "Titel (franz\u00f6sisch)",
                    "description": "",
                    "_zope_schema_type": "TextLine"
                },
                "review_state": {
                    "type": "string",
                    "enum": [
                        "repositoryroot-state-active"
                    ]
                },
                "guid": {
                    "type": "string"
                },
                "_permissions": {
                    "$ref": "#/definitions/permission"
                }
            },
            "required": [
                "review_state",
                "guid"
            ],
            "allOf": [
                {
                    "anyOf": [
                        {
                            "required": [
                                "title_de"
                            ]
                        },
                        {
                            "required": [
                                "title_fr"
                            ]
                        }
                    ]
                }
            ],
            "field_order": [
                "valid_from",
                "valid_until",
                "version",
                "title_de",
                "title_fr"
            ]
        },
        "permission": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "block_inheritance": {
                    "type": "boolean"
                },
                "read": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "add": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "edit": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "close": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "reactivate": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "manage_dossiers": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            }
        }
    }
}