From 32be3bf01f7caac45848b33788ff387907100703 Mon Sep 17 00:00:00 2001 From: David Schwarzmann <david.schwarzmann@codecentric.de> Date: Thu, 27 May 2021 13:26:40 +0200 Subject: [PATCH] Simpler explanation & minor fix --- bundle-docs.sh | 4 +- docs/Detailinformationen/Metadaten.md | 89 ++++++++++++++++++++++++--- 2 files changed, 80 insertions(+), 13 deletions(-) diff --git a/bundle-docs.sh b/bundle-docs.sh index a8596a11..61c8d1f0 100755 --- a/bundle-docs.sh +++ b/bundle-docs.sh @@ -1,8 +1,6 @@ #!/usr/bin/env bash -if [ ! -d "dist" ]; then - mkdir dist -fi +mkdir -p dist # Concatenate all files (enforce newline between files) cut -b 1- docs/_* docs/{1..5}_* docs/Detailinformationen/*.md > dist/docs.bundled.md diff --git a/docs/Detailinformationen/Metadaten.md b/docs/Detailinformationen/Metadaten.md index 12456c88..765c2959 100644 --- a/docs/Detailinformationen/Metadaten.md +++ b/docs/Detailinformationen/Metadaten.md @@ -22,12 +22,50 @@ curl --data '{ "destinationId": "7a2668ad-3081-407c-9358-7ce4b6144b02", "announc } ``` -### **Befüllen** +### Definition der Antragsmetadaten -> TBD (Wichtigste Teil) +Das Minimum, was an Antragsmetadaten hinterlegt werden muss, ist eine Beschreibung der Struktur des Antrags, sowie die ID des Antrags selbst. +In der Beschreibung der Struktur muss angegeben werden, ob Fachdaten mit versendet werden und in welchem Format diese sind. Des Weiteren können Anhänge mit ihren Metainformationen beschrieben werden, die dem Antrag beigefügt sind. -### Verschlüsseln (verschlüsseln nach XYZ) --> woanders beschrieben +Ein Beispiel hierfür ist unten dargestellt: +```json +{ + "contentStructure": { + "data": { + "schema": { + "mimeType": "application/json", + "schemaSource": "none" + } + }, + "docs": [ + { + "docId": "1", + "purpose": "form", + "size": 13046, + "mimeType": "application/pdf", + "filename": "test.pdf", + "description": "Das Antragsformular", + "lang": { + "lang": "de", + "region": "DE" + }, + "hash": { + "algorithm": "SHA-256", + "digest": "bf37d894fdf9aeade63975ed648d49c3e8a7a773923597d2418915f54cd7c3b9" + } + } + ] + }, + "applicationId": "ce75a6b8-d72f-4b94-b09e-af6be35bc2ae" +} +``` + +Abhängig von den Rahmenbedingungen können die weiteren Felder, die im Antragsmetadatenschema definiert sind, befüllt werden und mitversendet werden. Ob diese jedoch ausgewertet werden oder nicht hängt von dem entsprechenden Empfänger ab. + +### Verschlüsseln + +Nun wird das JSON-Objekt aus dem vorherigen Schritt verschlüsselt und kann dann im nächsten Schritt mit dem Antrag abgesendet werden. Die Verschlüsselung eines Objektes mit Hilfe von JWE ist im Bereich "[Verschlüsselte Übertragung](#verschlüsselte-übertragung)" genauer beschrieben und kann dort nachgelesen werden. ### Versenden des Antrags @@ -111,13 +149,44 @@ curl -H 'X-AnwenderId: subscriber' -X GET localhost:8080/applications/9d618546-0 } ``` -### Entschlüsseln (Entschlüsseln nach XYZ) --> woanders beschrieben - -Die Entschlüsselung eines Objektes mit Hilfe von JWE ist im Bereich "[Verschlüsselte Übertragung](#verschlüsselte-übertragung)" genauer beschrieben und kann dort nachgelesen werden. - -### **Validieren** - -> TBD (Wichtigste Teil) +### Entschlüsseln + +Um den Antrag korrekt verarbeiten und überprüfen zu können müssen zuerst alle verschlüsselten Informationen entschlüsselt werden. Darunter fallen beispielsweise die Antragsmetadaten, die Fachdaten (falls vorhanden) oder Dokumente (falls vorhanden). + +Die Entschlüsselung eines solchen Objektes mit Hilfe von JWE ist im Bereich "[Verschlüsselte Übertragung](#verschlüsselte-übertragung)" genauer beschrieben und kann dort nachgelesen werden. + +### Validierung der Antragsmetadaten + +Das Minimum, was an Information vorhanden sein muss sind die Felder `contentStructure` und `applicationId`. Zustäzlich können je nach Anwendungsfall oder Notwendigkeit weitere Felder auf Existenz überprüft werden. Die gültigen Formate sind im Schema definiert und können mit Hilfe von Bibliotheken für die Validierung einer Instanz von Antragsmetadaten verwendet werden. Beispiele für die Definition von Formaten für Felder sind unten aufgeführt. + +```json +{ + ... + "country": { + "type": "string", + "description": "Staat gemäß Codeliste [https://www.xrepository.de/details/urn:de:bund:destatis:bevoelkerungsstatistik:schluessel:staat](Codeliste Staat aus der Staats- und Gebietssystematik des Statistischen Bundesamtes)", + "minLength": 3, + "maxLength": 3, + "pattern": "^[0-9]{3}$" + }, + ... + "postalCode": { + "type": "string", + "description": "Postleitzahl", + "minLength": 5, + "maxLength": 5, + "pattern": "^([0]{1}[1-9]{1}|[1-9]{1}[0-9]{1})[0-9]{3}$" + }, + ... + "applicationId": { + "type": "string", + "format": "uuid", + "pattern": "^[-_.A-Za-z0-9]+$", + "description": "ID des Antrags" + }, + ... +} +``` ### Verarbeiten des Antrags -- GitLab