diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a39c26046fb41d8bbbdfb51b589852422a02be34..cf2d70f2bf056c040b0cde4d897682893aa703d9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -109,7 +109,7 @@ upload:spec: # script: # - release-cli -v # - echo "Releasing new API version" -# - release-cli create --name "$CI_COMMIT_TAG" --description './CHANGELOG.md' +# - release-cli create --name "$CI_COMMIT_TAG" --description './docs/changelog.md' # --tag-name $CI_COMMIT_TAG # --assets-link '{"name":"combined-$CI_COMMIT_TAG","url":"https://fitko.uber.space/$CI_COMMIT_TAG/zustelldienst.yml"}' diff --git a/README.md b/README.md index 551487805a98151428e29dea2469cf460d2cbc2c..fcb767a115254002fc7b05c7b4781f2504a94bcc 100644 --- a/README.md +++ b/README.md @@ -2,32 +2,56 @@ Für die Spezifikation der FIT-Connect-Schnittstellen gelten die folgenden Architekturregeln. + +## Versionierung + +TBD + ## OpenAPI - Wir verwenden OpenAPI 3.0 -- Die Spezifikation wird bis zur `beta7` als JSON und ab `beta8` als YAML geschreiben +- Die Spezifikation ist als YAML geschrieben - Wir verwenden keine Versionsnummern in Dateinamen, da das Repo als Ganzes versioniert wird +- Die Spezifikation wird mit Semantic-Versioning versioniert + +## Projektstruktur + +### Dokumentation + +- ðŸ“`static` +- ðŸ“`docs` +- ðŸ“`src` +- ðŸ“`versioned_sidebars` +- ðŸ“`versioned_docs` +- 📄`versions.json` +- 📄`package.json` +- 📄`yarn.lock` +- 📄`prettier.config.js` +- 📄`docusaurus.config.js` +- 📄`babel.config.js` +- 📄`sidebars.js` + +### Metadatenschema + +- ðŸ“`static` + + +### FIT-Connect OpenAPI Spezifikation -## Verzeichnisse +- ðŸ“`spec` +- 📄`validate.sh` +- 📄`bundle.sh` -Das Projektverzeichnis ist wie folgt aufgebaut: -- ðŸ“`assets` - - ðŸ“`images` - Bilder - - ðŸ“`postman` - Postman-Collection und -Enviroment dazu -- ðŸ“`docs` - Öffentliche Dokumentation zu den APIs -- ðŸ“`models` - Modelle, die von mehreren (beiden) APIs verwendet werden -- ðŸ“`reference` - Die APIs -- 📄`LICENSE` ## Bezeichner -- Die Bezeichner werden camelCase geschreiben und beginnen mit einem Kleinbuchstaben +- Die Bezeichner werden camelCase geschrieben und beginnen mit einem Kleinbuchstaben - Eine ID (Identifikator) wird als `Id` nicht `ID` geschrieben ## Pfade -Multiple Resoucen werden im Pfad durch eine Collection-Resource und einer nachfolgenden ID aufgenommen +Multiple Ressourcen werden im Pfad durch eine Collection-Resource und einer nachfolgenden ID aufgenommen Beispiel: `/applications/{applicationId}` diff --git a/bundle-docs.sh b/bundle-docs.sh deleted file mode 100755 index 61c8d1f0558ecca4807ff5faa74a53ce5ba555f6..0000000000000000000000000000000000000000 --- a/bundle-docs.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -mkdir -p dist - -# Concatenate all files (enforce newline between files) -cut -b 1- docs/_* docs/{1..5}_* docs/Detailinformationen/*.md > dist/docs.bundled.md -# Add additional newlines before each heading (to avoid issues when, e.g., a table is followed by a heading) -sed -i 's/^#/\n\n#/g' dist/docs.bundled.md diff --git a/CHANGELOG.md b/docs/changelog.md similarity index 92% rename from CHANGELOG.md rename to docs/changelog.md index 66e128d42db867c1d03393c243c5cfdaa401ffc0..884f2c1ba9e06a327bbb5ddf21a9b75e377ea548 100644 --- a/CHANGELOG.md +++ b/docs/changelog.md @@ -4,7 +4,9 @@ Das Format dieser Datei basiert auf [Keep a Changelog](https://keepachangelog.co ## [Unveröffentlicht] - ????-??-?? -> Diese Version beinhaltet **breaking changes** +:::caution +Diese Version beinhaltet **breaking changes** +::: ### Allgemein @@ -20,8 +22,9 @@ Der Aufbau & Umfang von Destination-Objekten hat sich geändert: - Das Attribut `publicOrganization` entfällt, weil - nur Kontaktinformationen für den Fall von technischen Problemen erfasst und hierbei so wenig Informationen wie - möglich gespeichert werden sollen. - - Der Name der Organisation ist als Attribut für eine bessere Zuordnung zu `contactInformation` unter `legalName` gewandert. + möglich gespeichert werden sollen. + - Der Name der Organisation ist als Attribut für eine bessere Zuordnung zu `contactInformation` unter `legalName` + gewandert. - Das Attribut `technicalContact` wird umbenannt zu `contactInformation` und inhaltlich wie im Beispiel unten geändert - Die Attribute `callback` und `callbackURI` wurden zusammengeführt, - um die Struktur flacher zu gestalten, @@ -30,10 +33,10 @@ Der Aufbau & Umfang von Destination-Objekten hat sich geändert: - da ab Version 1 jede Kommunikation Ende-zu-Ende verschlüsselt sein muss. - Das Attribut `publicKey` wurde umbenannt zu `encryptionKid`. Weiterhin wurde ein Feld `keys` eingefügt. - `encryptionKid`: Die KeyId des Schlüssels der zur Verschlüsselung der an einen Zustellpunkt gesendeten Daten - verwendet wird. Der Schlüssel ist abrufbar im Attribut `keys`. + verwendet wird. Der Schlüssel ist abrufbar im Attribut `keys`. - `keys`: Hier befinden sich die öffentlichen Schlüssel des Zustellpunktes. - Der `signingKid` fehlt, da dieser an signierten Nachrichten mit angehängt wird und ebenso im Attribut `keys` - auffindbar ist. + auffindbar ist. - Ein Schema besteht nun aus einer `schemaURI` und optional einem Feld `mimeType`. - Wurde im Zuge der Vereinfachung so umgesetzt. URLs und URNs können in das Feld `schemaURI` eingetragen werden. @@ -54,7 +57,6 @@ Der Aufbau & Umfang von Destination-Objekten hat sich geändert: "callback": "http://127.0.0.1:4010/voluptas", "keys": { "my-key-id": { - } }, "encryptionKid": "my-key-id" @@ -90,19 +92,21 @@ sauber routen kann, liefert er jetzt `{}` anstatt `{ "result": "success" }` zur ### Application Transfer -- Die Grundstruktur einer Einreichung wurde angepasst, da der Großteil der Informationen nun verschlüsselt übertragen wird. +- Die Grundstruktur einer Einreichung wurde angepasst, da der Großteil der Informationen nun verschlüsselt übertragen + wird. - Einige Endpunkte und HTTP-Methoden wurden angepasst, um den Ablauf kürzer, einfacher, stabiler und sicherer zu gestalten. -- Metadaten einer Einreichung: Alle Metadaten einer Einreichung werden nun verschlüsselt im Attribut `encryptedMetadata` übertragen. +- Metadaten einer Einreichung: Alle Metadaten einer Einreichung werden nun verschlüsselt im Attribut `encryptedMetadata` + übertragen. #### Create Application -- Beim Anlegen einer Einreichung muss nun die Id der Destination (Zustellpunktes) mit angegeben werden, da sie nur bei der - Anlage der Einreichung notwendig ist und nicht bei den weiteren Aufrufen. -- Struktur um eine Application anzulegen ist nun nur noch `{ destinationId: …, announcedContentStructure: … }`, da sich die - Gesamtstruktur geändert hat. In `announcedContentStructure` wird angegeben ob Fachdaten für diesen Einreichung hochgeladen - werden als auch eine Liste an UUIDs die für diesen Einreichung hochgeladen werden. Die Erstellung der UUIDs ist dem Client - überlassen. +- Beim Anlegen einer Einreichung muss nun die Id der Destination (Zustellpunktes) mit angegeben werden, da sie nur bei + der Anlage der Einreichung notwendig ist und nicht bei den weiteren Aufrufen. +- Struktur um eine Application anzulegen ist nun nur noch `{ destinationId: …, announcedContentStructure: … }`, da sich + die Gesamtstruktur geändert hat. In `announcedContentStructure` wird angegeben ob Fachdaten für diesen Einreichung + hochgeladen werden als auch eine Liste an UUIDs die für diesen Einreichung hochgeladen werden. Die Erstellung der + UUIDs ist dem Client überlassen. #### Add Document to Application @@ -113,25 +117,26 @@ sauber routen kann, liefert er jetzt `{}` anstatt `{ "result": "success" }` zur #### Send Application -- Send Application und Application Data hinzuzufügen ist nun in einem Endpunkt kombiniert, da kein Einreichung ohne Fachdaten - übertragen werden können soll. -- Der Aufruf des Endpunktes und die Ãœbertragung der verschlüsselten Fachdaten markiert den Einreichung dann auch als "final" +- Send Application und Application Data hinzuzufügen ist nun in einem Endpunkt kombiniert, da kein Einreichung ohne + Fachdaten übertragen werden können soll. +- Der Aufruf des Endpunktes und die Ãœbertragung der verschlüsselten Fachdaten markiert den Einreichung dann auch als + "final" und löst die Ãœbertragung an den Zustellpunkt aus. - Die Fachdaten sind nun verschlüsselt, wodurch der Content-Type nicht mehr application/json sonder application/jose ist -- Der Response Status ist nicht mehr 200, sondern 202, da die Fachdaten akzeptiert wurden und der Einreichung abgeschickt - wird. +- Der Response Status ist nicht mehr 200, sondern 202, da die Fachdaten akzeptiert wurden und der Einreichung + abgeschickt wird. #### Status Endpunkte -- Der `upload-status` entfällt, da alle Informationen verschlüssselt sind und nun nicht bekannt ist, wie viele Dokumente +- Der `upload-status` entfällt, da alle Informationen verschlüsselt sind und nun nicht bekannt ist, wie viele Dokumente einer Einreichung bereits hochgeladen wurden. -- Die Informationen zum Status einer Einreichung und dessen Historie sind nun direkt im Einreichung hinterlegt und werden mit zur - Verfügung gestellt, wodurch keine separaten Endpunkte mehr notwendig sind. +- Die Informationen zum Status einer Einreichung und dessen Historie sind nun direkt im Einreichung hinterlegt und + werden mit zur Verfügung gestellt, wodurch keine separaten Endpunkte mehr notwendig sind. ### Application Retrieval -Wie oben schon angesprochen hat sich die Struktur einer Einreichung verändert, sodass ein Einreichung bei der Abholung wie folgt -beispielhaft aufgebaut ist: +Wie oben schon angesprochen hat sich die Struktur einer Einreichung verändert, sodass ein Einreichung bei der Abholung +wie folgt beispielhaft aufgebaut ist: ```json { @@ -282,8 +287,8 @@ Die Destination enthält nun einen JWK statt einem JWK Set. ### Dokumentation -- [Fehlercodes](../5_Status-_und_Fehlercodes.md) dokumentiert -- [Erste Schritte](../1_Getting_Started.md) überarbeitet +- [Fehlercodes](status-and-error-codes.md) dokumentiert +- [Erste Schritte](getting-started/overview.md) überarbeitet ### Umgesetzte Change Requests diff --git a/sidebars.js b/sidebars.js index 402eda615ed9056351cf7a1545da53f29f6bda57..802370d84c2dc6c56229b6645d8bc7e8f83d9279 100644 --- a/sidebars.js +++ b/sidebars.js @@ -13,6 +13,7 @@ module.exports = { defaultSidebar: [ 'overview', 'roadmap', + 'changelog', 'account', 'status-and-error-codes', {