├── .github └── workflows │ └── GenerateImagesFromSrc.yml ├── .gitignore ├── .vscode └── settings.json ├── LICENSE ├── README.adoc ├── ReleaseNotes.adoc ├── SECURITY.adoc ├── docs ├── .gitkeep ├── Anwendungsfaelle.adoc ├── Authentisierung.adoc ├── Email_Verarbeitung.adoc ├── Fachdienst.adoc ├── KIM_API.adoc ├── Lastverteilung und Performance beim Einsatz von KIM 1.0.pdf ├── Primaersystem.adoc ├── Versionierung.adoc ├── Verzeichnisdienst.adoc └── faq.adoc ├── images ├── .gitkeep ├── A_email_empfangen.jpg ├── A_email_senden.jpg ├── Anw_account_mgr_v1.PNG ├── Anw_email_receive.PNG ├── Anw_email_send.PNG ├── CM_Integration.png ├── I_AccountLimit.png ├── I_AccountManager.png ├── I_Fachdienst.png ├── I_KAS.png ├── Int_PS-KIM.svg ├── Int_PS-KOMLE.png ├── KIM_Varianten.png ├── KOMLE_Fachdaten.PNG ├── KOMLE_Fachdaten.svg ├── MTA_SMTP_Benutzername.png ├── Multikonnektoren.png ├── SMTP_KIM_Adapter.svg ├── Seq_acc_abwesenheitsnotiz.png ├── Seq_acc_anwendungskennzeichen.png ├── Seq_acc_deregister.png ├── Seq_acc_kontoverwaltung.png ├── Seq_acc_mgr.PNG ├── Seq_acc_portierung.png ├── Seq_acc_register.png ├── Seq_acc_zertifikat.png ├── Seq_email_empfangen.PNG ├── Seq_email_senden.PNG ├── UC_PS-KIM.svg ├── UC_PS-KOMLE.png ├── acmgr_overview.png ├── diagrams │ ├── Fachdienst │ │ ├── Seq_acc_abwesenheitsnotiz.png │ │ ├── Seq_acc_abwesenheitsnotiz.svg │ │ ├── Seq_acc_anwendungskennzeichen.png │ │ ├── Seq_acc_anwendungskennzeichen.svg │ │ ├── Seq_acc_deregister.png │ │ ├── Seq_acc_deregister.svg │ │ ├── Seq_acc_kontoverwaltung.png │ │ ├── Seq_acc_kontoverwaltung.svg │ │ ├── Seq_acc_portierung.png │ │ ├── Seq_acc_portierung.svg │ │ ├── Seq_acc_register.png │ │ ├── Seq_acc_register.svg │ │ ├── Seq_acc_revoke_deregister.png │ │ ├── Seq_acc_revoke_deregister.svg │ │ ├── Seq_acc_zertifikat.png │ │ ├── Seq_acc_zertifikat.svg │ │ ├── Seq_kas_email_empfangen.png │ │ ├── Seq_kas_email_empfangen.svg │ │ ├── Seq_kas_email_senden.png │ │ └── Seq_kas_email_senden.svg │ ├── Int_PS-KIM.png │ ├── Int_PS-KIM.svg │ ├── KIM_2.0_Architektur-Seite-1.png │ ├── KIM_2.0_Architektur-Seite-1.svg │ ├── UC_PS-KIM.png │ ├── UC_PS-KIM.svg │ ├── eMail_status_empfangen.png │ ├── eMail_status_empfangen.svg │ ├── eMail_status_senden.png │ └── eMail_status_senden.svg ├── gematik_logo.svg ├── gematik_logo_simple.jpg ├── kas_overview.png └── kim_overview.png ├── samples ├── .gitkeep ├── KAS │ ├── .gitkeep │ ├── 1_1_Client-Mail_empfangen.txt │ ├── 1_2_Client-Mail_prozessiert.txt │ ├── 1_3_Client-Mail_hochgeladen.txt │ ├── 1_4_KOM-LE-Mail_finalisiert.txt │ ├── 2_1_KOM-LE-Mail_empfangen.txt │ ├── 2_2_KOM-LE-Mail_prozessiert.txt │ ├── 2_3_Client-Mail_heruntergeladen.txt │ └── 2_4_Client-Mail_finalisiert.txt └── SMIME-Profil.zip └── src ├── .gitkeep ├── drawio └── KIM_2.0_Architektur.drawio ├── json ├── README.adoc └── badges.json ├── openapi ├── .gitkeep ├── AccountLimit.yaml ├── AccountManager.yaml ├── AttachmentService.yaml ├── CommonSchemas.yaml └── ServiceInformation.yaml ├── plantuml ├── Fachdienst │ ├── Seq_acc_abwesenheitsnotiz.puml │ ├── Seq_acc_anwendungskennzeichen.puml │ ├── Seq_acc_deregister.puml │ ├── Seq_acc_kontoverwaltung.puml │ ├── Seq_acc_portierung.puml │ ├── Seq_acc_register.puml │ ├── Seq_acc_revoke_deregister.puml │ ├── Seq_acc_zertifikat.puml │ ├── Seq_kas_email_empfangen.puml │ └── Seq_kas_email_senden.puml ├── Int_PS-KIM.puml ├── UC_PS-KIM.puml ├── architecture │ ├── KIM, receive 500MB, proof of concept.puml │ └── KIM, send 500MB, proof of concept.puml ├── eMail_status_empfangen.puml └── eMail_status_senden.puml └── schema ├── .gitkeep └── Attachment_schema.json /.github/workflows/GenerateImagesFromSrc.yml: -------------------------------------------------------------------------------- 1 | name: GenerateImagesFromSrc 2 | 3 | on: 4 | push: 5 | branches: 6 | - '**' 7 | paths: 8 | - 'src/plantuml/**' 9 | - 'src/drawio/**' 10 | 11 | workflow_dispatch: 12 | 13 | jobs: 14 | build: 15 | runs-on: ubuntu-latest 16 | 17 | steps: 18 | 19 | # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it 20 | - uses: actions/checkout@v3 21 | 22 | # Installs Java distribution for running the plantUML jar 23 | - name: Install Java 24 | uses: actions/setup-java@v3 25 | with: 26 | distribution: 'temurin' 27 | java-version: '11' 28 | check-latest: true 29 | 30 | # Install graphviz for plantuml 31 | - name: Setup Graphviz 32 | uses: ts-graphviz/setup-graphviz@v1 33 | 34 | # Download plantUML jar 35 | - name: Download plantuml file 36 | run: | 37 | wget -O plantuml.jar "https://github.com/plantuml/plantuml/releases/download/v1.2023.10/plantuml-1.2023.10.jar" 38 | 39 | # Runs a single command using the runners shell 40 | - name: Generate images 41 | run: | 42 | imagedir=images/diagrams 43 | mkdir -p $imagedir 44 | rm -rf images/diagrams/* 45 | for fullname in $(find src/plantuml/ -type f -name '*.puml') 46 | do 47 | echo "Fullname: ${fullname}" 48 | base=$(basename "${fullname}" .puml) 49 | dir=$(dirname $fullname) 50 | echo "Basename: ${base}" 51 | outdir=$(dirname $fullname | sed s+src/plantuml+${imagedir}+) 52 | echo "Outdir: ${outdir}" 53 | mkdir -p $outdir 54 | plantoutdir="${PWD}/${outdir}" 55 | echo "PlantOutdir: ${plantoutdir}" 56 | 57 | # PlantUML arguments: 58 | # -v for verbose output (Debugging) 59 | # -checkmetadata checks whether the target png/svg has the same source 60 | # and if there are no changes, doesn't regenerate the image file 61 | # -o sets the output folder for the png/svg files 62 | plantargs="-v -checkmetadata -o ${plantoutdir} ${fullname}" 63 | 64 | # separate calls are needed, because only one file type can be set 65 | # per call 66 | java -jar plantuml.jar -tpng ${plantargs} 67 | java -jar plantuml.jar -tsvg ${plantargs} 68 | 69 | # method with pipes 70 | #cat "${fullname}" | java -jar plantuml.jar -p -tpng -checkmetadata > "${outdir}/${base}.png" 71 | #cat "${fullname}" | java -jar plantuml.jar -p -tsvg -checkmetadata > "${outdir}/${base}.svg" 72 | done 73 | tree ./images 74 | 75 | # creates png files from draw io image files 76 | - name: Export drawio files as png 77 | uses: rlespinasse/drawio-export-action@v2 78 | with: 79 | path: ./src/drawio/ 80 | output: . 81 | format: png 82 | action-mode: all 83 | 84 | # creates svg files from draw io image files 85 | - name: Export drawio files 86 | uses: rlespinasse/drawio-export-action@v2 87 | with: 88 | path: ./src/drawio/ 89 | output: . 90 | format: svg 91 | action-mode: all 92 | 93 | # copies the created png & svg files to the images/diagrams folder and deletes the drawio files 94 | - name: Copy draw io 95 | run: | 96 | imagedir=images/diagrams 97 | cp -RT ./src/drawio $imagedir 98 | find $imagedir -name '*.drawio' -exec rm -rv {} \; 99 | tree ./images 100 | 101 | # add and commit the new generated files 102 | - name: Add & Commit 103 | uses: EndBug/add-and-commit@v9 104 | with: 105 | add: 'images/diagrams/' 106 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode/settings.json 2 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "cSpell.words": [ 3 | "JWTs" 4 | ], 5 | "asciidoc.antora.enableAntoraSupport": true 6 | } 7 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022 gematik GmbH 2 | 3 | Licensed under the Apache License, Version 2.0 (the License); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an 'AS IS' BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /README.adoc: -------------------------------------------------------------------------------- 1 | :imagesdir: images 2 | = KIM - Dokumentation 3 | 4 | image:gematik_logo.svg[width=70%] 5 | 6 | image:https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fgematik%2Fapi-kim%2Fmain%2Fsrc%2Fjson%2Fbadges.json&query=%24.badges.releaseNotes.version&prefix=%20&style=plastic&logo=github&logoColor=blue&label=ReleaseNotes&labelColor=%24.badges.releaseNotes.color&color=blue[link="ReleaseNotes.adoc"] + 7 | image:https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fgematik%2Fapi-kim%2Fmain%2Fsrc%2Fjson%2Fbadges.json&query=%24.badges.kimClientmodulSpec.version&style=plastic&logo=adobeacrobatreader&logoColor=red&label=Spezifikation%20KIM%20Clientmodul&color=red&[link=https://fachportal.gematik.de/Fanwendungen/kommunikation-im-medizinwesen] 8 | image:https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fgematik%2Fapi-kim%2Fmain%2Fsrc%2Fjson%2Fbadges.json&query=%24.badges.kimFachdienstSpec.version&style=plastic&logo=adobeacrobatreader&logoColor=red&label=Spezifikation%20KIM%20Fachdienst&color=red&[link=https://fachportal.gematik.de/Fanwendungen/kommunikation-im-medizinwesen] + 9 | image:https://img.shields.io/badge/dynamic/yaml?url=https%3A%2F%2Fraw.githubusercontent.com%2Fgematik%2Fapi-kim%2Fmain%2Fsrc%2Fopenapi%2FAccountManager.yaml&query=%24.info.version&style=plastic&logo=openapiinitiative&logoColor=green&label=AccountManager&color=green[link="src/openapi/AccountManager.yaml"] 10 | image:https://img.shields.io/badge/dynamic/yaml?url=https%3A%2F%2Fraw.githubusercontent.com%2Fgematik%2Fapi-kim%2Fmain%2Fsrc%2Fopenapi%2FAttachmentService.yaml&query=%24.info.version&style=plastic&logo=openapiinitiative&logoColor=green&label=AttachmentService&color=green[link="src/openapi/attachmentService.yaml"] 11 | image:https://img.shields.io/badge/dynamic/yaml?url=https%3A%2F%2Fraw.githubusercontent.com%2Fgematik%2Fapi-kim%2Fmain%2Fsrc%2Fopenapi%2FAccountLimit.yaml&query=%24.info.version&style=plastic&logo=openapiinitiative&logoColor=green&label=AccountLimit&color=green[link="src/openapi/AccountLimit.yaml"] 12 | image:https://img.shields.io/badge/dynamic/yaml?url=https%3A%2F%2Fraw.githubusercontent.com%2Fgematik%2Fapi-kim%2Fmain%2Fsrc%2Fopenapi%2FServiceInformation.yaml&query=%24.info.version&style=plastic&logo=openapiinitiative&logoColor=green&label=ServiceInformation&color=green[link="src/openapi/ServiceInformation.yaml"] 13 | image:https://img.shields.io/badge/dynamic/yaml?url=https%3A%2F%2Fraw.githubusercontent.com%2Fgematik%2Fapi-kim%2Fmain%2Fsrc%2Fopenapi%2FCommonSchemas.yaml&query=%24.info.version&style=plastic&logo=openapiinitiative&logoColor=green&label=CommonSchemas&color=green[link="src/openapi/CommonSchemas.yaml"] 14 | 15 | == Allgemeines 16 | 17 | Die folgende Dokumentation beschreibt KIM 1.5.3. An dieser Stelle werden insbesondere die Komponenten der Lösung sowie deren Schnittstellen dargestellt und erläutert. Die Version KIM 1.5.3 ist vollständig abwärtskompatibel. Dadurch wird gewährleistet, dass Teilnehmer mit einer früheren Version uneingeschränkt Nachrichten an Teilnehmer versenden können, die bereits KIM 1.5.3 verwenden. 18 | 19 | Der Funktionsumfang der KIM Version 1.5 erweitert sich gegenüber KIM 1.0 wie folgt: 20 | 21 | * die Aufhebung der Größenbeschränkung von Nachrichten 22 | 23 | * die optionale Integration des Clientmoduls in das Primärsystem 24 | 25 | * ein Administrationsmodul für die Konfiguration des Nutzer-Accounts 26 | 27 | * das Einrichten von Abwesenheitsnotizen 28 | 29 | * das Einrichten von Anwendungskennzeichen 30 | 31 | * die Unterstützung syntaktischer Nachrichtenkategorien (Dienstkennungen) 32 | 33 | * die Unterstützung von Multikonnektor-Umgebungen 34 | 35 | _Hinweis: Seit März 2020 verwendet die gematik die Bezeichnung „KIM – Kommunikation im Medizinwesen“ für die Anwendung KOM-LE. Diese neue Benennung findet sich insbesondere in Informationsmaterialien für die Zielgruppe Leistungserbringer, sowie in Presseveröffentlichungen. Eine Umbenennung in den technisch-normativen Dokumenten wie Spezifikationen, Konzepten, Zulassungsdokumenten etc. mit Ausnahme von Angaben zu Domänen, E-Mail-Adressen, technischen Schnittstellen, Parametern u.ä. erfolgt schrittweise und an geeigneter Stelle._ 36 | 37 | == Systemarchitektur 38 | 39 | Die folgende Abbildung gibt einen Überblick über die Systemarchitektur von KIM 1.5. Die Änderungen bei Komponenten und Schnittstellen von KIM 1.0 zu KIM 1.5 sind in der Abbildung rot dargestellt. 40 | 41 | ++++ 42 |

43 | 44 |

45 | ++++ 46 | 47 | link:docs/KIM_API.adoc[*Clientsystem*] 48 | 49 | * *Clientmodul:* + 50 | Das Clientmodul kann jetzt optional in das Clientsystem (z. B. Primärsystem) integriert werden. 51 | 52 | * *Administrationsmodul:* + 53 | Die Erweiterung des Clientmoduls um das Administrationsmodul ermöglicht die Kommunikation mit dem Account Manager des Fachdienstes zur Administration und Konfiguration des Accounts eines KIM-Teilnehmers. 54 | 55 | link:docs/Fachdienst.adoc[*Fachdienst*] 56 | 57 | * *Mail Server:* + 58 | Der Mail Server stellt die Schnittstelle `I_Message_Service` bereit und wird über die Protokolle SMTP und POP3 angesprochen. In der KIM Version 1.5 wurden am Mail Server keine Änderungen vorgenommen. 59 | 60 | * *Account Manager:* + 61 | Für die einfache Verwaltung des Accounts, das Einrichten von Abwesenheitsnotizen eines KIM-Teilnehmers und für die Abfrage von Konfigurationsparametern des jeweiligen KIM Fachdienstes bietet der Account Manager ab der KIM Version 1.5 drei Webservices (`I_AccountManager_Service`, `I_AccountLimit_Service` und `I_ServiceInformation`) an. 62 | 63 | * *KIM Attachment Service:* + 64 | Der Fachdienst wird um die Komponente KIM Attachment Services (KAS) erweitert, der die sichere Speicherung größerer Client-Mails (E-Mail-Daten) ermöglicht. Die Komponente kann über die REST-Schnitstelle `I_Attachment_Service` erreicht werden. 65 | 66 | link:docs/Verzeichnisdienst.adoc[*Verzeichnisdienst*] 67 | 68 | * Um die Kompatibilität von KIM 1.5 zu früheren Versionen zu gewährleisten, wird der Verzeichnisdienst um die zusätzlichen Datenstrukturen `komLeData` und `kimData` ergänzt. 69 | * Der Verzeichnisdienst wird um die REST-Schnittstelle `I_Directory_Application_Maintenance` erweitert. 70 | 71 | == Ordnerstruktur 72 | 73 | Im Folgenden ist die Organisation der Ordnerstruktur dargestellt. 74 | 75 | ---- 76 | KIM-API 77 | ├─ docs 78 | ├─ images 79 | ├─ samples 80 | | ├──── KAS 81 | │ └──── SMIME-Profil.zip 82 | ├─ src 83 | │ ├──── json 84 | │ │ └── badges.json 85 | | ├──── openapi 86 | │ │ ├── AccountLimit.yaml 87 | │ │ ├── AccountManager.yaml 88 | │ │ ├── AttachmentServices.yaml 89 | │ │ ├── CommonSchemas.yaml 90 | │ │ └── ServiceInformation.yaml 91 | │ ├──── plantuml 92 | │ │ └── Fachdienst 93 | │ └──── schema 94 | │ └── Attachment_schema.json 95 | ├── LICENSE 96 | ├── README.adoc 97 | ├── ReleaseNotes.md 98 | └── SECURITY.adoc 99 | ---- 100 | 101 | == Ausbaustufen 102 | 103 | Mit der Einführung von KIM unterstützt die gematik das Gesundheitswesen durch einen sektorenübergreifenden, sicheren E-Maildienst. In mehreren Versionen wird der Funktionsumfang von KIM kontinuierlich erweitert. Aktuell existieren die folgenden Versionen mit ihren dazugehörigen aktuellen Releases. 104 | 105 | |=== 106 | |KIM 1.0 |KIM 1.5 107 | 108 | |https://fachportal.gematik.de/schnelleinstieg/downloadcenter/releases#c6557[R1.3.3-2] |https://fachportal.gematik.de/schnelleinstieg/downloadcenter/releases#c8094[KIM 1.6.3-0] 109 | |=== 110 | 111 | Weitere Informationen zu den Versionen finden Sie hier: https://fachportal.gematik.de/anwendungen/kommunikation-im-medizinwesen[KIM] 112 | 113 | == Referenzierte Dokumente 114 | 115 | Die nachfolgende Tabelle enthält die in der vorliegenden Online Dokumentation referenzierten Dokumente der gematik zur Telematikinfrastruktur. Deren zu diesem Dokument jeweils gültige Versionsnummer entnehmen Sie bitte der aktuellen, auf der Internetseite der gematik veröffentlichten, Dokumentenlandkarte, in der die vorliegende Version aufgeführt wird. 116 | 117 | |=== 118 | |[Quelle] |Herausgeber: Titel 119 | 120 | |*[gemSysL_KOMLE]* |gematik: Systemspezifisches Konzept Kommunikation Leistungserbringer (KOM-LE) 121 | |*[gemSMIME_KOMLE]* |gematik: S/MIME-Profil Kommunikation Leistungserbringer (KOM-LE) 122 | |*[gemSpec_CM]* |gematik: Spezifikation KOM-LE-Clientmodul 123 | |*[gemSpec_FD]* |gematik: Spezifikation Fachdienst KOM-LE 124 | |*[gemSpec_VZD]* |gematik: Spezifikation Verzeichnisdienst 125 | |*[gemSpec_OM]* |gematik: Übergreifende Spezifikation Operations und Maintenance 126 | |*[gemProdT_CM_KOMLE_PTV]* |gematik: Produkttypsteckbrief Prüfvorschrift KOM-LE-Clientmodul 127 | |*[gemProdT_iCM_KIM]* |gematik: Produkttypsteckbrief Prüfvorschrift Integriertes Clientmodul KIM 128 | |=== 129 | 130 | == Weiterführende Seiten 131 | *Anwendungsfälle* + 132 | link:docs/Anwendungsfaelle.adoc[- Anwendungsfälle] 133 | 134 | *Produkttypen* + 135 | link:docs/KIM_API.adoc[- Clientsystem] + 136 | link:docs/Fachdienst.adoc[- Fachdienst] + 137 | link:docs/Verzeichnisdienst.adoc[- Verzeichnisdienst] 138 | 139 | *Leitfaden für Primärsystemhersteller* + 140 | link:docs/Primaersystem.adoc[- Primärsystem] 141 | 142 | *Diverses* + 143 | link:docs/Authentisierung.adoc[- Authentisierung] + 144 | link:docs/Versionierung.adoc[- Versionierung] + 145 | link:docs/Email_Verarbeitung.adoc[- Beispiel für große E-Mails] + 146 | link:docs/faq.adoc[- Fragen und Antworten zur aktuellen Spezifikation [FAQ]] 147 | 148 | 149 | *Referenz-Implementierungen* + 150 | https://github.com/gematik/kim-attachment-service[- KIM-Attachment-Service] + 151 | https://github.com/gematik/app-thunderbird-kim-plugin[- KIM-Thunderbird Plugin] 152 | 153 | == api-kim Branch Modell 154 | 155 | Im GitHub gematik/api-kim Repository werden Branches verwendet um den Status der Weiterentwicklung und das Review von Änderungen abzubilden. 156 | 157 | Folgende Branches werden verwendet 158 | 159 | - *main* (enthält den letzten freigegebenen Stand der Entwicklung; besteht permanent) 160 | - *develop* (enthält den Stand der fertig entwickelten Features und wird zum Review durch Industriepartner und Gesellschafter verwendet; basiert auf main; nach Freigabe erfolgt ein merge in main und ein Release wird erzeugt; besteht permanent) 161 | - *feature/* (in feature branches werden neue Features entwickelt; basiert auf develop; nach Fertigstellung erfolgt ein merge in develop; wird nach dem merge gelöscht) 162 | - *hotfix/* (in hotfix branches werden Hotfixes entwickelt; basiert auf main; nach Fertigstellung erfolgt ein merge in develop und in main; wird nach dem merge gelöscht) 163 | - *concept/* (in feature branches werden neue Konzepte entwickelt; basiert auf develop; dient der Abstimmung mit Dritten; es erfolgt kein merge; wird nach Bedarf gelöscht) 164 | - *misc/* (nur für internen Gebrauch der gematik; es erfolgt kein merge; wird nach Bedarf gelöscht) 165 | 166 | == Lizenzbedingungen 167 | 168 | Copyright (c) 2022 gematik GmbH 169 | 170 | Licensed under the Apache License, Version 2.0 (the "License"); 171 | you may not use this file except in compliance with the License. 172 | You may obtain a copy of the License at 173 | 174 | http://www.apache.org/licenses/LICENSE-2.0 175 | 176 | Unless required by applicable law or agreed to in writing, software 177 | distributed under the License is distributed on an "AS IS" BASIS, 178 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 179 | See the License for the specific language governing permissions and 180 | limitations under the License. 181 | -------------------------------------------------------------------------------- /SECURITY.adoc: -------------------------------------------------------------------------------- 1 | = Security Policy 2 | 3 | Please submit an issue or pull request for any non critical bugs 4 | or non critical vulnerabilities you find. 5 | 6 | In case of a responsible disclosure, please follow instructions 7 | on https://www.gematik.de/datensicherheit#c1227. 8 | -------------------------------------------------------------------------------- /docs/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/docs/.gitkeep -------------------------------------------------------------------------------- /docs/Authentisierung.adoc: -------------------------------------------------------------------------------- 1 | :imagesdir: ../images 2 | :doctype: book 3 | :toc: macro 4 | :toclevels: 3 5 | :toc-title: Inhaltsverzeichnis 6 | :numbered: 7 | 8 | image:gematik_logo.svg[width=70%] 9 | 10 | toc::[] 11 | 12 | == Authentifizierung 13 | In KIM-Umfeld gibt es drei Authentisierungsmechanismen, um sich bei einem Dienst zu authentifizieren. Dazu gehören: 14 | 15 | - die SMTP/POP3-Authentifizierung, 16 | - die HTTP-Basic-Authentifizierung und 17 | - das Verwenden eines JSON-Web-Tokens. 18 | 19 | Die Details sowie Verweise auf die entsprechenden Anforderungen werden im folgenden beschrieben. 20 | 21 | === Mail-Server 22 | Der Mail-Server nimmt SMTP-Nachrichten von Clientmodulen entgegen und leitet diese an die Ziel-Mail-Server weiter. Empfangene Nachrichten werden vom Mail-Server zur Abholung bereitgestellt und auf Anforderung über POP3 an Clientmodule ausgeliefert. Für das Senden sowie das Empfangen von Mails ist eine Authentifizierung am Mail-Server über Username und Passwort notwendig. Die Anforderungen sind in *[gemSpec_FD_KOMLE#3.1]* spezifiziert. 23 | 24 | === Account Manager 25 | Der Accout Manager bietet für die Registrierung sowie die Kontoverwaltung eine Reihe von Operationen an. Die Operationen werden durch zwei REST-Schnittstellen (`I_AccountManager_Service` und `I_AccountLimit_Service`) am Account Managers bereitgestellt. Für den Aufruf der Operationen an der Schnittstelle `I_AccountManager_Service` durch das Administrationsmodul ist eine Authentifizierung des KIM-Teilnehmers notwendig. Für die Authentisierung erzeugt das Administrationsmodul ein JSON-Web-Token (JWT) gemäß *[RFC7519]* mit von der gematik definierten Elementen und übersendet dies mit dem Passwort des Nutzers an den Account Manager. Anschließend überprüft der Account Manager das ihm übergebene JWT auf Gültigkeit und Zugehörigkeit zur KIM-Mail-Adresse (Account). Die Anforderungen sind in *[gemSpec_CM_KOMLE#3.7.1]* und *[gemSpec_FD_KOMLE#4.3]* spezifiziert. Für den Aufruf der Operationen an der Schnittstelle `I_AccountLimit_Service` durch das Clientmodul ist eine HTTP-Basic-Authentifizierung mit Username und Passwort als Credentials am Account Manager erforderlich 26 | 27 | === KIM-Attachment Service (KAS) 28 | Der KIM-Attachment Service (KAS) des Fachdienstes dient als Speicherort für verschlüsselte E-Mail-Daten. Das sendende Clientmodul legt die E-Mail-Daten in verschlüsselter Form auf dem KAS ab. Hierfür ruft das Clientmodul die Operation `add_attachment()` auf. Um nur berechtigten KIM-Teilnehmern die Ablage von Anhängen zu ermöglichen, erfolgt eine Authentifizierung am KAS seines Anbieters. Hierfür wird bei Aufruf der Operation `add_attachment()` eine HTTP-Basic-Authentifizierung mit Username und Passwort als Credentials gefordert. Die Anforderungen sind in *[gemSpec_FD_KOMLE#4.2]* spezifiziert. 29 | -------------------------------------------------------------------------------- /docs/Email_Verarbeitung.adoc: -------------------------------------------------------------------------------- 1 | ifdef::env-github[] 2 | :tip-caption: :bulb: 3 | :note-caption: :information_source: 4 | :important-caption: :heavy_exclamation_mark: 5 | :caution-caption: :fire: 6 | :warning-caption: :warning: 7 | endif::[] 8 | 9 | :imagesdir: ../images 10 | :maildir: ../samples/Mails 11 | :doctype: book 12 | :toc: macro 13 | :toclevels: 3 14 | :toc-title: Inhaltsverzeichnis 15 | :numbered: 16 | 17 | image:gematik_logo.svg[width=70%] 18 | 19 | toc::[] 20 | 21 | = E-Mail Handling 22 | Diese Seite gibt einen Überblick über den Prozess der E-Mail Verarbeitung durch ein KIM-Clientmodul und einen beispielhaften Einblick in den Aufbau der E-Mail nach den jeweiligen Prozesschritten. Als Beispiel wird das Happy Day Szenario vom Versand einer Mail gewählt, die wegen ihrer Größe(20 MiB) einen Versand unter Einbezug des KIM-Attachment Service nach sich zieht. In die Client-Mail wurde ebenfalls die Verwendung eines modifizierten From Headers inkludiert. Das folgende Kapitel befasst sich mit dem Versandvorgang einer Clientmail, während der Empfangsvorgang dann in Kapitel <> beschrieben wird. 23 | 24 | == Versand einer E-Mail 25 | Der Versand einer Mail startet, wenn von einem Client-System über SMTP eine MIME-Mail an das KIM-Clientmodul übergeben wird. 26 | 27 | Ablauf beim Versand einer E-Mail 28 | ++++ 29 |

30 | 31 |

32 | ++++ 33 | 34 | === Client-Mail empfangen 35 | Das KOM-LE Clientmodul empfängt eine BASE64 kodierte Nachricht von einem Clientsystem(KIS, PVS, etc). Diese Mail verfügt über einen Anhang der eine Verarbeitung mit dem KIM-Attachment Service nötig macht und über den From Header wird versucht einen falschen Absender zu simulieren. Vom Clientsystem wurde keine X-KIM-Dienstkennung gesetzt. 36 | 37 | .Client Mail 38 | [%collapsible%open] 39 | ==== 40 | [source,txt, linenums] 41 | ---- 42 | Message-ID: 43 | Date: Fri, 9 Sep 2022 15:47:00 +0200 44 | MIME-Version: 1.0 45 | User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 46 | Thunderbird/91.13.0 47 | To: "user.test15@gematik.kim.telematik-test" 48 | , 49 | not_allowed_recipient@not.telematik-test 50 | From: "not allowed mail sender" 51 | 52 | Subject: KIM 1.5 Testnachricht 53 | Sender: user.test15@gematik.kim.telematik-test 54 | Content-Type: multipart/mixed; boundary="------------v0Sp8vvZ1qGfAWh1MYiwrJ0W" 55 | 56 | --------------v0Sp8vvZ1qGfAWh1MYiwrJ0W 57 | Content-Type: text/plain; charset=UTF-8; format=flowed 58 | Content-Transfer-Encoding: 7bit 59 | 60 | Text der Testnachricht 61 | 62 | --------------v0Sp8vvZ1qGfAWh1MYiwrJ0W 63 | Content-Type: text/plain; charset=UTF-8; name="20mb.test" 64 | Content-Disposition: attachment; filename="20mb.test" 65 | Content-Transfer-Encoding: base64 66 | 67 | fHx3d3cuZGFzaW50ZXJuZXQubmV0f[...] 68 | 69 | --------------v0Sp8vvZ1qGfAWh1MYiwrJ0W-- 70 | ---- 71 | ==== 72 | 73 | === Client-Mail prozessiert 74 | Das KOM-LE Clientmodul verarbeitet die Client-Mail und ergänzt die fehlende X-KIM-Dienstkennung. Es wird erkannt, dass die im *_From_* Header angegebene E-Mail Adresse nicht mit der Adresse des Senders aus dem *_SMTP FROM_* Kommando übereinstimmt und die Adresse im *_From_* Header entsprechend ersetzt. 75 | 76 | .Mail mit Header und Senderkorrektur 77 | [%collapsible%open] 78 | ==== 79 | [source,txt, linenums] 80 | ---- 81 | Message-ID: 82 | Date: Fri, 9 Sep 2022 15:47:00 +0200 83 | MIME-Version: 1.0 84 | User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 85 | Thunderbird/91.13.0 86 | Subject: KIM 1.5 Testnachricht 87 | X-KIM-Dienstkennung: KIM-Mail;Default;V1.0 88 | From: "user.test15@gematik.kim.telematik-test" 89 | 90 | To: "user.test15@gematik.kim.telematik-test" 91 | 92 | Content-Type: multipart/mixed; boundary="------------v0Sp8vvZ1qGfAWh1MYiwrJ0W" 93 | 94 | --------------v0Sp8vvZ1qGfAWh1MYiwrJ0W 95 | Content-Type: text/plain; charset=UTF-8; format=flowed 96 | Content-Transfer-Encoding: 7bit 97 | 98 | Text der Testnachricht 99 | 100 | --------------v0Sp8vvZ1qGfAWh1MYiwrJ0W 101 | Content-Type: text/plain; charset=UTF-8; name="1mb.test" 102 | Content-Disposition: attachment; filename="1mb.test" 103 | Content-Transfer-Encoding: base64 104 | 105 | fHx3d3cuZGFzaW50ZXJuZXQubmV[...] 106 | 107 | --------------v0Sp8vvZ1qGfAWh1MYiwrJ0W-- 108 | ---- 109 | ==== 110 | 111 | === Client-Mail hochgeladen 112 | Von der korrigierten (*_From_* Header) und um die Dienstkennung erweiterte Mail wird eine Kopie angelegt, die die Basis für die an den Fachdienst zu übermittelnde KOM-LE Nachricht bildet. Anschließen wir die modifizierte Client-Mail signiert und verschlüsselt und das binäre Ergebnis und durch Aufruf der Methode addAttachment auf den KIM Attachment Service hochgeladen. Nach einem erfolgreichen Upload ersetzt das KOM-LE Modul den Body der KOM-LE Nachricht durch die KIM Attachment Datenstruktur. 113 | 114 | .KOM-LE Nachricht mit Attachment Datenstruktur 115 | [%collapsible%open] 116 | ==== 117 | [source,txt, linenums] 118 | ---- 119 | Message-ID: 120 | Date: Fri, 9 Sep 2022 15:47:00 +0200 121 | MIME-Version: 1.0 122 | User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 123 | Thunderbird/91.13.0 124 | Subject: KIM 1.5 Testnachricht 125 | X-KIM-Dienstkennung: KIM-Mail;Default;V1.0 126 | From: "user.test15@gematik.kim.telematik-test" 127 | 128 | To: "user.test15@gematik.kim.telematik-test" 129 | 130 | Content-Type: text/plain; charset=utf-8 131 | Content-Disposition: x-kas 132 | 133 | {"link":"https://kas.gematik.kim.telematik-test/attachments/v2.3/attachment/a566f001-7fa6-4f87-a088-7def2d609c87","k":"AZtUCtV3M5mTC/XzfDDl25mZ4FwoOADyaIi3Fn8wH6w=","hash":"Wc148UGImi84VG3H/fF+3x6ouGMknls6hf2wn0qcqjU=","size":27262976} 134 | ---- 135 | ==== 136 | 137 | === KOM-LE Mail finalisiert 138 | Der Body der KOM-LE Nachricht wird ebenfalls signiert und verschlüsselt und im Header Informationen zum verwendeten Clientmodul, der Produkltypversion und dem verwendeten Konnektor hinterlegt. Anschließend wird die Nachricht per SMTP an den Fachdienst übertragen. 139 | 140 | .signierte und verschlüsselte KOM-LE Nachricht 141 | [%collapsible%open] 142 | ==== 143 | [source,txt, linenums] 144 | ---- 145 | Subject: KOM-LE-Nachricht 146 | Date: Fri, 9 Sep 2022 15:47:00 +0200 147 | From: "user.test15@gematik.kim.telematik-test" 148 | 149 | To: "user.test15@gematik.kim.telematik-test" 150 | 151 | Message-ID: 152 | X-KIM-Dienstkennung: KIM-Mail;Default;V1.0 153 | X-KOM-LE-Version: 1.5 154 | X-KIM-CMVersion: AKNET_1.1.0-0 155 | X-KIM-PTVersion: 1.2.1 156 | X-KIM-KONVersion: <5.0.2><2.0.0><5.0.5> 158 | MIME-Version: 1.0 159 | Expires: Thu, 08 Dec 2022 15:48:35 +0200 160 | Content-Type: application/pkcs7-mime; smime-type=authenticated-enveloped-data; 161 | name=smime.p7m 162 | Content-Disposition: attachment; filename=smime.p7m 163 | Content-Transfer-Encoding: base64 164 | 165 | MIAGCyqGSIb3DQEJEA[...] 166 | ---- 167 | ==== 168 | 169 | == Empfang einer E-Mail 170 | Die folgenden Kapitel befassen sich mit der empfangenden Seite des KIM Clientmoduls, die nun die in den vorherigen Kapiteln zusammengestellte KOM-LE Mail vom Fachdienst abrufen und verarbeiten wird. 171 | 172 | Ablauf beim Empfang einer E-Mail 173 | ++++ 174 |

175 | 176 |

177 | ++++ 178 | 179 | === KOM-LE Mail empfangen 180 | Über POP3 ruft das KIM Clientmodul eine KOM-LE Nachricht beim Fachdienst ab. 181 | 182 | .abgerufene KOM-LE Nachricht 183 | [%collapsible%open] 184 | ==== 185 | [source,txt, linenums] 186 | ---- 187 | Return-Path: 188 | Received: from 10.65.0.11 (EHLO 192.168.169.20:64500) ([10.65.0.11]) 189 | by mailserver.gematik.kim.telematik-test (JAMES SMTP Server ) with ESMTPA ID 54965859 190 | for ; 191 | Fri, 09 Sep 2022 15:50:05 +0200 (CEST) 192 | Subject: KOM-LE-Nachricht 193 | Date: Fri, 9 Sep 2022 15:47:00 +0200 194 | From: "user.test15@gematik.kim.telematik-test" 195 | 196 | To: "user.test15@gematik.kim.telematik-test" 197 | 198 | Message-ID: 199 | X-KIM-Dienstkennung: KIM-Mail;Default;V1.0 200 | X-KOM-LE-Version: 1.5 201 | X-KIM-CMVersion: KIM_CM_1.1.0-0 202 | X-KIM-PTVersion: 1.2.1 203 | X-KIM-KONVersion: <5.0.2><2.0.0><5.0.5> 205 | MIME-Version: 1.0 206 | Expires: Thu, 08 Dec 2022 15:48:35 +0200 207 | Content-Type: application/pkcs7-mime; smime-type=authenticated-enveloped-data; 208 | name=smime.p7m 209 | Content-Disposition: attachment; filename=smime.p7m 210 | Content-Transfer-Encoding: base64 211 | 212 | MIAGCyqGSIb3DQEJEAEXoIAwg[...] 213 | 214 | ---- 215 | ==== 216 | 217 | === KOM-LE Mail prozessiert 218 | Das KIM-Clientmodul entschlüsselt die KOM-LE Nachricht und führt die Integritätsprüfungsschritte durch. 219 | Nach der Entschlüsselung ist die KIM-Attachment Datenstruktur lesbar und die Informationen können genutzt werden, um die auf dem KAS abgelegte Client Mail abzurufen. 220 | 221 | .entschlüsselte KOM-LE Mail 222 | [%collapsible%open] 223 | ==== 224 | [source,txt, linenums] 225 | ---- 226 | Message-ID: 227 | Date: Fri, 9 Sep 2022 15:47:00 +0200 228 | MIME-Version: 1.0 229 | User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 230 | Thunderbird/91.13.0 231 | Subject: KIM 1.5 Testnachricht 232 | X-KIM-Dienstkennung: KIM-Mail;Default;V1.0 233 | From: "user.test15@gematik.kim.telematik-test" 234 | 235 | To: "user.test15@gematik.kim.telematik-test" 236 | 237 | Content-Type: text/plain; charset=utf-8 238 | Content-Disposition: x-kas 239 | 240 | {"link":"https://kas.gematik.kim.telematik-test/attachments/v2.3/attachment/a566f001-7fa6-4f87-a088-7def2d609c87","k":"AZtUCtV3M5mTC/XzfDDl25mZ4FwoOADyaIi3Fn8wH6w=","hash":"Wc148UGImi84VG3H/fF+3x6ouGMknls6hf2wn0qcqjU=","size":27262976} 241 | ---- 242 | ==== 243 | 244 | === Client-Mail heruntergeladen 245 | Mit den Informationen aus der KIM-Attachment Datenstruktur wird die auf dem KAS abgelegte Mail heruntergeladen, entschlüsselt und die Signatur geprüft. 246 | 247 | .vom KAS heruntergeladene entschlüsselte Nachricht 248 | [%collapsible%open] 249 | ==== 250 | [source,txt, linenums] 251 | ---- 252 | Message-ID: 253 | Date: Fri, 9 Sep 2022 15:47:00 +0200 254 | MIME-Version: 1.0 255 | User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 256 | Thunderbird/91.13.0 257 | Subject: KIM 1.5 Testnachricht 258 | X-KIM-Dienstkennung: KIM-Mail;Default;V1.0 259 | From: "user.test15@gematik.kim.telematik-test" 260 | 261 | To: "user.test15@gematik.kim.telematik-test" 262 | 263 | Content-Type: multipart/mixed; boundary="------------v0Sp8vvZ1qGfAWh1MYiwrJ0W" 264 | 265 | --------------v0Sp8vvZ1qGfAWh1MYiwrJ0W 266 | Content-Type: text/plain; charset=UTF-8; format=flowed 267 | Content-Transfer-Encoding: 7bit 268 | 269 | Text der Testnachricht 270 | 271 | --------------v0Sp8vvZ1qGfAWh1MYiwrJ0W 272 | Content-Type: text/plain; charset=UTF-8; name="1mb.test" 273 | Content-Disposition: attachment; filename="1mb.test" 274 | Content-Transfer-Encoding: base64 275 | 276 | fHx3d3cuZGFzaW50ZXJuZX[...] 277 | 278 | 279 | 280 | --------------v0Sp8vvZ1qGfAWh1MYiwrJ0W-- 281 | ---- 282 | ==== 283 | 284 | === Client-Mail finalisiert 285 | Die Header Felder der vom KAS heruntergeladenen Client-Mail werden mit den Header Feldern der KOM-LE Nachricht abgeglichen. In der Client-Mail werden die Header Felder (Received, Return Path, X-KIM Check Results) befüllt und Fehlertexte im Body ergänzt. Anschließend wird die Client-Mail Base64 codiert an das via POP3 abfragende Clientsystem ausgeliefert. 286 | 287 | .Fertige Client Mail 288 | [%collapsible%open] 289 | ==== 290 | [source,txt, linenums] 291 | ---- 292 | Message-ID: 293 | Date: Fri, 9 Sep 2022 15:47:00 +0200 294 | MIME-Version: 1.0 295 | User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 296 | Thunderbird/91.13.0 297 | Subject: KIM 1.5 Testnachricht 298 | X-KIM-Dienstkennung: KIM-Mail;Default;V1.0 299 | From: "user.test15@gematik.kim.telematik-test" 300 | 301 | To: "user.test15@gematik.kim.telematik-test" 302 | 303 | X-KIM-DecryptionResult: 00 304 | X-KIM-IntegrityCheckResult: 01 305 | Return-Path: 306 | Received: from 10.65.0.11 (EHLO 192.168.169.20:64500) ([10.65.0.11]) 307 | by mailserver.gematik.kim.telematik-test (JAMES SMTP Server ) with ESMTPA ID 54965859 308 | for ; 309 | Fri, 09 Sep 2022 15:50:05 +0200 (CEST) 310 | Content-Type: multipart/mixed; boundary="------------v0Sp8vvZ1qGfAWh1MYiwrJ0W" 311 | 312 | --------------v0Sp8vvZ1qGfAWh1MYiwrJ0W 313 | Content-Type: text/plain; charset=utf-8; format=flowed 314 | Content-Transfer-Encoding: 7bit 315 | 316 | Text der Testnachricht 317 | 318 | 319 | --------------------------------------------- 320 | Die Nachricht wurde entschlüsselt. 321 | Die Signatur wurde erfolgreich geprüft. 322 | 323 | --------------v0Sp8vvZ1qGfAWh1MYiwrJ0W 324 | Content-Type: text/plain; charset=UTF-8; name="1mb.test" 325 | Content-Disposition: attachment; filename="1mb.test" 326 | Content-Transfer-Encoding: base64 327 | 328 | fHx3d3cuZGFzaW50ZXJuZX[...] 329 | 330 | 331 | --------------v0Sp8vvZ1qGfAWh1MYiwrJ0W-- 332 | 333 | ---- 334 | ==== 335 | 336 | -------------------------------------------------------------------------------- /docs/Fachdienst.adoc: -------------------------------------------------------------------------------- 1 | :imagesdir: ../images 2 | :doctype: book 3 | :toc: macro 4 | :toclevels: 5 5 | :toc-title: Inhaltsverzeichnis 6 | :numbered: 7 | 8 | image:gematik_logo.svg[width=70%] 9 | 10 | toc::[] 11 | 12 | = Fachdienst 13 | Der Fachdienst besteht aus den drei Teilkomponenten Account Manager, Mail Server und dem KIM-Attachment Service. Dieser stellt dem Clientmodul verschiedene Schnittstellen bereit, um die Kommunikations mit der jeweiligen Teilkomponente zu ermöglichen. In der folgenden Abbildung (links) sind alle Schnittstellen, die der Fachdienst anbietet, mit der jeweiligen Teilkomponente, dargestellt. 14 | 15 | ++++ 16 |

17 | 18 |

19 | ++++ 20 | 21 | Im folgenden Kapitel werden die Teilkomponenten weiter beschrieben. 22 | 23 | == Mail-Server 24 | Die Teilkomponente Mail-Server stellt die Schnittstelle `I_Message_Service` bereit. Diese wird über die Protokolle SMTP und POP3 aufgerufen. Die beim Mail-Server ankommenden E-Mails sind verschlüsselt, sodass nicht auf deren Inhalt geschlossen werden kann. Gehört eine dem Mail-Server übergebene E-Mail nicht zu einem lokalen Nutzer-Account, wird diese an den zuständigen KIM Mail-Server weitergeleitet. Die Teilkomponente Mail Server des Fachdienstes ist in *[gemSpec_FD_KOMLE#4.1]* spezifiziert. 25 | 26 | == Account Manager 27 | Die Teilkomponente Account Manager ermöglicht die Konfiguration von Nutzer-Accounts am Fachdienst. Beginnend mit KIM 1.5 müssen die verschiedenen Clientmodule zu jedem Fachdienst interoperabel sein. Um dies zu gewährleisten, werden die Schnittstellen des Account Managers durch die gematik normiert. Die Schnittstelle `I_AccountManager_Service` ermöglicht eine einheitliche Durchführung der Registrierung eines KIM-Teilnehmers sowie die Verwaltung der Nutzer-Accounts. Für die Registrierung bzw. Kontoverwaltung wird das im Clientmodul integrierte Administrationsmodul genutzt, welches die Schnittstlle `I_AccountManager_Service` am Account Manager des Fachdienstes aufruft. Weitere Funktionen des Account Managers sind das Einstellen von Abwesenheitsnotizen durch einen KIM-Teilnehmer sowie die Portierung einer KIM-E-Mail zu einer neuen Telematik-ID. Für die Abfrage von technischen Konfigurationsparametern eines Nutzer-Accounts bietet der Account Manager dem Clientmodul die Schnittstelle `I_AccountLimit_Service` an. Für die Abfrage von technischen Konfigurationsparametern des Fachdienstes bietet der Account Manager dem Clientmodul die Schnittstelle `I_ServiceInformation` an. Für die Pflege der Fachdaten in den Verzeichniseinträgen ruft der Account Manager die REST-Schnittstelle `I_Directory_Application_Maintenance` auf. Die Teilkomponente Account Manager des Fachdienstes ist in *[gemSpec_FD_KOMLE#4.3]* spezifiziert. 28 | 29 | Die Beschreibung der REST-Schnittstelle `I_AccountManager_Service` ist hier zu finden: link:../src/openapi/AccountManager.yaml[AccountManager.yaml] + 30 | Die Beschreibung der REST-Schnittstelle `I_AccountLimit_Service` ist hier zu finden: link:../src/openapi/AccountLimit.yaml[AccountLimit.yaml] + 31 | Die Beschreibung der REST-Schnittstelle `I_ServiceInformation` ist hier zu finden: link:../src/openapi/ServiceInformation.yaml[ServiceInformation.yaml] 32 | 33 | == KIM Attachment Service (KAS) 34 | Ab KIM 1.5 werden die E-Mail-Daten einer Mail, die größer 15 MiB ist, ausgelagert. Für die Ablage der E-Mail-Daten wird der Fachdienst um die Teilkomponente KIM Attachment Service (KAS) erweitert. Die Teilkomponente KAS des Fachdienstes stellt dem Clientmodul die REST-Schnittstelle `I_Attachment_Service` bereit. Die Teilkomponente KAS ist in *[gemSpec_FD_KOMLE#4.2]* spezifiziert. 35 | 36 | Die Beschreibung der REST-Schnittstelle `I_Attachment_Service` ist hier zu finden: link:../src/openapi/AttachmentService.yaml[AttachmentService.yaml] 37 | 38 | Die gematik stellt für den KAS eine Referenzimplementierung bereit. Diese ist unter dem folgenden Link zu finden: link:https://github.com/gematik/kim-attachment-service[KIM-Attachment-Service] 39 | -------------------------------------------------------------------------------- /docs/Lastverteilung und Performance beim Einsatz von KIM 1.0.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/docs/Lastverteilung und Performance beim Einsatz von KIM 1.0.pdf -------------------------------------------------------------------------------- /docs/Versionierung.adoc: -------------------------------------------------------------------------------- 1 | :imagesdir: ../images 2 | :doctype: book 3 | :toc: macro 4 | :toclevels: 3 5 | :toc-title: Inhaltsverzeichnis 6 | :numbered: 7 | 8 | image:gematik_logo.svg[width=70%] 9 | 10 | toc::[] 11 | 12 | == Versionierung 13 | Im Folgenden wird die Versionierung der REST-Schnittstelle sowie die Versionierung der YAML-Files beschrieben. 14 | 15 | === Versionierung der REST-Schnittstelle 16 | 17 | Mittels der URI-Versionierung wird die Rückwärtskompatibilität der KIM-REST-API gewährleistet. 18 | + 19 | In der URI wird das folgende Versionierungsschema verwendet: **.** 20 | 21 | *Beispiel* 22 | 23 | [source,bash] 24 | ----------------- 25 | https://account-manager.hrst1.kim.telematik/AccountMgmt/v2.2/account 26 | https://account-manager.hrst1.kim.telematik/AccountMgmt/v2.0/account 27 | ----------------- 28 | 29 | Die Änderung der URI sollte möglichst selten erfolgen, damit der Implementierungaufwand bei den Clients gering gehalten wird. Daher erhöhen sich *MAJOR* und *MINOR* nur 30 | dann, wenn es die Notwendigkeit gibt, die Schnittstelle unter einer neuen URI zur Verfügung zu stellen. Zum Beispiel wenn inkompatible API-Änderungen vorgenommen wurden. 31 | 32 | === Versionierung der YAML-Files 33 | 34 | Für die Versionierung der YAML-Files gelten die gematik-Vorgaben aus *[gemSpec_OM#2]*. Die Versionierung ist in allen REST-Schnittstellendefinitionen (YAML-Files) enthalten. 35 | 36 | *Beispiel* 37 | 38 | [source,bash] 39 | ----------------- 40 | openapi: 3.0.3 41 | info: 42 | title: I_AccountManager_Service 43 | description: Über diese Schnittstelle wird der KIM Account verwaltet. 44 | # Für alle Operationen muss der Zeichensatz "utf-8” unterstützt werden. 45 | version: 2.2.0 46 | ### 2.2.0 47 | # - updated url to https://account-manager.hrst1.kim.telematik/AccountMgmt/v2.2 48 | # - changed /components/schemas/Account: 49 | # added parameter dataTimeToLive & maxMailSize 50 | # specified kimVersion with enum 51 | # - changed operation createCert: 52 | # added error codes 400 & 404 53 | ### 2.0.0 54 | # - included new operations for outOfOffice 55 | # - included new operations for porting an e-mail address to new telematikID 56 | # - removed operations: register_State, cm_version and pw_change 57 | # - added new operations setAccount and getAccount 58 | # - renamed and updated operations for user account (e.g. registerAccount and 59 | # deregisterAccount) 60 | # - added operation createCert to generate PKCS#12 files 61 | # - added HTTP error code 500 62 | # - changed authentication to JWT 63 | ----------------- 64 | -------------------------------------------------------------------------------- /docs/Verzeichnisdienst.adoc: -------------------------------------------------------------------------------- 1 | ifdef::env-github[] 2 | :tip-caption: :bulb: 3 | :note-caption: :information_source: 4 | :important-caption: :heavy_exclamation_mark: 5 | :caution-caption: :fire: 6 | :warning-caption: :warning: 7 | endif::[] 8 | 9 | :imagesdir: ../images 10 | :doctype: book 11 | :toc: macro 12 | :toclevels: 3 13 | :toc-title: Inhaltsverzeichnis 14 | :numbered: 15 | 16 | image:gematik_logo.svg[width=70%] 17 | 18 | toc::[] 19 | 20 | == Verzeichnisdienst 21 | Ab der KIM Version 1.5 können zur Abfrage der KIM-Fachdaten ausschließlich die Protokolle LDAPv3 und HTTP (REST) an der Schnittstelle `I_Directory_Application_Maintenance` am Verzeichnisdienst verwenden werden. Zu den Fachdaten gehören die KIM-Mail-Adressen, die verwendete KOM-LE-Version der Clientmodule sowie ein oder mehrere Anwendungskennzeichen. Ausgehend von dieser KOM-LE-Version entscheidet das Clientmodul des Senders, ob das Clientmodul des Empfängers kompatibel ist. Mit dem Hinterlegen eines oder mehrerer Anwendungskennzeichen signalisiert der jeweilige KIM Teilnehmer die Möglichkeit Nachrichten im Rahmen spezieller Anwendungen (z. B. eAU, eArztbrief u.a.) entgegenzunehmen und zu verarbeiten. Ein Primär- bzw. Clientsystem kann, mit Kenntnis der für einen geplanten Empfänger hinterlegten Anwendungskennzeichen, bereits bei der Erstellung einer Nachricht entscheiden ob diese vom Empfänger verarbeitet werden kann und die Bearbeitung im Negativfall abbrechen. Die neuen Datenstrukturen `komLeData` und `kimData` sind in *[gemSpec_VZD#5]* spezifiziert. 22 | 23 | Die Beschreibung der REST-Schnittstelle `I_Directory_Application_Maintenance` für KIM ist hier zu finden: link:https://github.com/gematik/api-vzd/blob/main/src/openapi/DirectoryApplicationMaintenance.yaml[DirectoryApplicationMaintenance.yaml] 24 | 25 | Im Folgenden sind die LDAP-Directory-Attribute der KIM-Fachdaten dargestellt: + 26 | 27 | //image:KOMLE_Fachdaten.PNG[width=45%] 28 | 29 | ++++ 30 |

31 | 32 |

33 | ++++ 34 | 35 | TIP: Die Abfrage der KIM-Fachdaten sollte aus den strukturierten KIM-Fachdaten erfolgen (nicht aus der flachen Liste). Die flache Liste enthält die niedrigste KIM-Version aller KIM-Anbieter für diesen Verzeichniseintrag. 36 | -------------------------------------------------------------------------------- /images/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/.gitkeep -------------------------------------------------------------------------------- /images/A_email_empfangen.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/A_email_empfangen.jpg -------------------------------------------------------------------------------- /images/A_email_senden.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/A_email_senden.jpg -------------------------------------------------------------------------------- /images/Anw_account_mgr_v1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/Anw_account_mgr_v1.PNG -------------------------------------------------------------------------------- /images/Anw_email_receive.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/Anw_email_receive.PNG -------------------------------------------------------------------------------- /images/Anw_email_send.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/Anw_email_send.PNG -------------------------------------------------------------------------------- /images/CM_Integration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/CM_Integration.png -------------------------------------------------------------------------------- /images/I_AccountLimit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/I_AccountLimit.png -------------------------------------------------------------------------------- /images/I_AccountManager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/I_AccountManager.png -------------------------------------------------------------------------------- /images/I_Fachdienst.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/I_Fachdienst.png -------------------------------------------------------------------------------- /images/I_KAS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/I_KAS.png -------------------------------------------------------------------------------- /images/Int_PS-KIM.svg: -------------------------------------------------------------------------------- 1 | SchnittstellenPS-KIMPrimärsystemPOP3-Proxy[KIM-Clientmodul]SMTP-Proxy[KIM-Clientmodul]LDAPv3-Proxy[Konnektor]VerzeichnisdienstKIM-Provideruseuseuseuseuseuseuse -------------------------------------------------------------------------------- /images/Int_PS-KOMLE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/Int_PS-KOMLE.png -------------------------------------------------------------------------------- /images/KIM_Varianten.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/KIM_Varianten.png -------------------------------------------------------------------------------- /images/KOMLE_Fachdaten.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/KOMLE_Fachdaten.PNG -------------------------------------------------------------------------------- /images/KOMLE_Fachdaten.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | Zeichenblatt-1 43 | 45 | 46 | Rechteck 47 | 48 | 49 | 50 | 51 | 52 | 53 | Rechteck.2 54 | 55 | 56 | 57 | 58 | 59 | 60 | Tabelle.3 61 | 62 | 63 | 64 | Tabelle.6 65 | 66 | 67 | 68 | Tabelle.7 69 | KOM-LE_Fachdaten 70 | 71 | 72 | 73 | KOM-LE_Fachdaten 74 | 75 | Tabelle.11 76 | +dn[1] = ou=KOM-LE,uid=[entryID],dc=vzd,dc=telematik 77 | 78 | 79 | 80 | +dn[1] = ou=KOM-LE,uid=[entryID],dc=vzd,dc=telematik 81 | 82 | Tabelle.12 83 | +dn[1] = ou=FAD1,ou=KOM-LE,uid=[entryID],dc=vzd,dc=telematik ... 84 | 85 | 86 | 87 | +dn[1] = ou=FAD1,ou=KOM-LE,uid=[entryID],dc=vzd,dc=telematik+mail[0..*]+komLeData[0..*] - version[1] - mail[1]+kimData[0..*] - mail[1] - version[1] -appTags[0..*] 92 | 93 | Tabelle.13 94 | FAD1 95 | 96 | 97 | 98 | FAD1 99 | 100 | Tabelle.18 101 | 102 | 103 | 104 | Raute 105 | 106 | 107 | 108 | 110 | 111 | 112 | 113 | 114 | 115 | Tabelle.20 116 | 1 117 | 118 | 119 | 120 | 1 121 | 122 | Tabelle.21 123 | * 124 | 125 | 126 | 127 | * 128 | 129 | 130 | -------------------------------------------------------------------------------- /images/MTA_SMTP_Benutzername.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/MTA_SMTP_Benutzername.png -------------------------------------------------------------------------------- /images/Multikonnektoren.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/Multikonnektoren.png -------------------------------------------------------------------------------- /images/Seq_acc_abwesenheitsnotiz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/Seq_acc_abwesenheitsnotiz.png -------------------------------------------------------------------------------- /images/Seq_acc_anwendungskennzeichen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/Seq_acc_anwendungskennzeichen.png -------------------------------------------------------------------------------- /images/Seq_acc_deregister.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/Seq_acc_deregister.png -------------------------------------------------------------------------------- /images/Seq_acc_kontoverwaltung.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/Seq_acc_kontoverwaltung.png -------------------------------------------------------------------------------- /images/Seq_acc_mgr.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/Seq_acc_mgr.PNG -------------------------------------------------------------------------------- /images/Seq_acc_portierung.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/Seq_acc_portierung.png -------------------------------------------------------------------------------- /images/Seq_acc_register.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/Seq_acc_register.png -------------------------------------------------------------------------------- /images/Seq_acc_zertifikat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/Seq_acc_zertifikat.png -------------------------------------------------------------------------------- /images/Seq_email_empfangen.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/Seq_email_empfangen.PNG -------------------------------------------------------------------------------- /images/Seq_email_senden.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/Seq_email_senden.PNG -------------------------------------------------------------------------------- /images/UC_PS-KIM.svg: -------------------------------------------------------------------------------- 1 | ClientsystemAnwendungsfälleLeistungserbringerEmpfänger ermittelnNachricht generierenund übernehmenNachricht versendenNachricht empfangen -------------------------------------------------------------------------------- /images/UC_PS-KOMLE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/UC_PS-KOMLE.png -------------------------------------------------------------------------------- /images/acmgr_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/acmgr_overview.png -------------------------------------------------------------------------------- /images/diagrams/Fachdienst/Seq_acc_abwesenheitsnotiz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/diagrams/Fachdienst/Seq_acc_abwesenheitsnotiz.png -------------------------------------------------------------------------------- /images/diagrams/Fachdienst/Seq_acc_abwesenheitsnotiz.svg: -------------------------------------------------------------------------------- 1 | Clientmodul Fachdienst LeistungserbringerAdministrationsmodulAccount-ManagerAbwesenheitkonfigurierengetOutOfOfficeKonfigurationopt[Abwesenheitsnotiz bearbeiten]updateOutOfOfficestatusstatus -------------------------------------------------------------------------------- /images/diagrams/Fachdienst/Seq_acc_anwendungskennzeichen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/diagrams/Fachdienst/Seq_acc_anwendungskennzeichen.png -------------------------------------------------------------------------------- /images/diagrams/Fachdienst/Seq_acc_anwendungskennzeichen.svg: -------------------------------------------------------------------------------- 1 | Clientmodul Fachdienst LeistungserbringerAdministrationsmodulAccount-ManagerAnwendungskennzeichenkonfigurierengetAccountKonfigurationopt[Anwendungskennzeichen bearbeiten]setAccountstatusstatus -------------------------------------------------------------------------------- /images/diagrams/Fachdienst/Seq_acc_deregister.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/diagrams/Fachdienst/Seq_acc_deregister.png -------------------------------------------------------------------------------- /images/diagrams/Fachdienst/Seq_acc_deregister.svg: -------------------------------------------------------------------------------- 1 | Clientmodul Fachdienst LeistungserbringerAdministrationsmodulAccount-ManagerDeregistrierung aufrufenderegisterAccountstatusstatus -------------------------------------------------------------------------------- /images/diagrams/Fachdienst/Seq_acc_kontoverwaltung.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/diagrams/Fachdienst/Seq_acc_kontoverwaltung.png -------------------------------------------------------------------------------- /images/diagrams/Fachdienst/Seq_acc_kontoverwaltung.svg: -------------------------------------------------------------------------------- 1 | Clientmodul Fachdienst LeistungserbringerAdministrationsmodulAccount-ManagerKontoverwaltungopt[Kontodaten abfragen]getAccountstatusopt[Kontodaten ändern]setAccountstatusstatus -------------------------------------------------------------------------------- /images/diagrams/Fachdienst/Seq_acc_portierung.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/diagrams/Fachdienst/Seq_acc_portierung.png -------------------------------------------------------------------------------- /images/diagrams/Fachdienst/Seq_acc_portierung.svg: -------------------------------------------------------------------------------- 1 | Clientmodul Fachdienst Directory LeistungserbringerAdministrationsmodulAccount-ManagerVZDPortierung durchführengetOTPOTPsetTIDMail-Adresse entfernenMail-Adresse füralte Telematik-IDentfernenstatusMail-Adresse hinzufügenMail-Adresse fürneue Telematik-IDhinzufügenstatusstatusstatus -------------------------------------------------------------------------------- /images/diagrams/Fachdienst/Seq_acc_register.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/diagrams/Fachdienst/Seq_acc_register.png -------------------------------------------------------------------------------- /images/diagrams/Fachdienst/Seq_acc_register.svg: -------------------------------------------------------------------------------- 1 | Clientmodul Fachdienst Directory LeistungserbringerAdministrationsmodulAccount-ManagerVZDRegistrierung aufrufenregisterAccountKIM Fachdaten eintragenstatusstatusopt[PKCS#12 != true]createCertPKCS#12status -------------------------------------------------------------------------------- /images/diagrams/Fachdienst/Seq_acc_revoke_deregister.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/diagrams/Fachdienst/Seq_acc_revoke_deregister.png -------------------------------------------------------------------------------- /images/diagrams/Fachdienst/Seq_acc_revoke_deregister.svg: -------------------------------------------------------------------------------- 1 | Clientmodul Fachdienst LeistungserbringerAdministrationsmodulAccount-ManagerDeregistrierung zurücknehmenrevokeDeregistrationstatusstatus -------------------------------------------------------------------------------- /images/diagrams/Fachdienst/Seq_acc_zertifikat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/diagrams/Fachdienst/Seq_acc_zertifikat.png -------------------------------------------------------------------------------- /images/diagrams/Fachdienst/Seq_acc_zertifikat.svg: -------------------------------------------------------------------------------- 1 | Clientmodul Fachdienst AdministrationsmodulAccount-ManagerPrüfung AblaufTLS ZertifikatcreateCertPKCS#12 -------------------------------------------------------------------------------- /images/diagrams/Fachdienst/Seq_kas_email_empfangen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/diagrams/Fachdienst/Seq_kas_email_empfangen.png -------------------------------------------------------------------------------- /images/diagrams/Fachdienst/Seq_kas_email_senden.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/diagrams/Fachdienst/Seq_kas_email_senden.png -------------------------------------------------------------------------------- /images/diagrams/Int_PS-KIM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/diagrams/Int_PS-KIM.png -------------------------------------------------------------------------------- /images/diagrams/Int_PS-KIM.svg: -------------------------------------------------------------------------------- 1 | SchnittstellenPS-KIMPrimärsystemPOP3-Proxy[KIM-Clientmodul]SMTP-Proxy[KIM-Clientmodul]LDAPv3-Proxy[Konnektor]VerzeichnisdienstKIM-Provideruseuseuseuseuseuseuse -------------------------------------------------------------------------------- /images/diagrams/KIM_2.0_Architektur-Seite-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/diagrams/KIM_2.0_Architektur-Seite-1.png -------------------------------------------------------------------------------- /images/diagrams/UC_PS-KIM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/diagrams/UC_PS-KIM.png -------------------------------------------------------------------------------- /images/diagrams/UC_PS-KIM.svg: -------------------------------------------------------------------------------- 1 | ClientsystemAnwendungsfälleLeistungserbringerEmpfänger ermittelnNachricht generierenund übernehmenNachricht versendenNachricht empfangen -------------------------------------------------------------------------------- /images/diagrams/eMail_status_empfangen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/diagrams/eMail_status_empfangen.png -------------------------------------------------------------------------------- /images/diagrams/eMail_status_empfangen.svg: -------------------------------------------------------------------------------- 1 | KOM-LE Mail empfangendo / Entschlüsselung des Mail Bodysdo / Prüfung der Signaturexit / Entschlüsselung erfolgreich abgeschlossenKOM-LE Mail prozessiertdo / Auslesen der KIM-Attachment Strukturdo / Binary vom KAS herunterladenexit / Download erfolgreichClient-Mail heruntergeladendo / Entschlüsselung der heruntergeladenen Mail-Datendo / Prüfen der Signatur der heruntergeladenen Maildo / Integritätsprüfungdo / Nachverarbeitung (z.B. hinzufügen der KIM-header Felder)exit / Nachverarbeitung abgeschlossenClient-Mail finalisiertdo / Übermittlung der Client-Mail an das Client-Systemexit / Übermittlung erfolgreich abgeschlossenPOP3 Abruf vom Fachdienst -------------------------------------------------------------------------------- /images/diagrams/eMail_status_senden.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/diagrams/eMail_status_senden.png -------------------------------------------------------------------------------- /images/diagrams/eMail_status_senden.svg: -------------------------------------------------------------------------------- 1 | Client-Mail empfangendo / decodiere Base64exit / finished decodingClient-Mail prozessiertdo / Integritätsprüfungdo / Mailgröße bestimmendo / KIM header hinzufügenexit / Verarbeitung der Client Mail abgeschlossenClient-Mail hochgeladendo / erstelle Kopie der prozessierten Client-Mal als Basis für die KOM-LE Maildo / signiere und verschlüssele die prozessierte Client-Maildo / upload des verschlüsselten Binaries auf den KASdo / ersetze den Mail body in der Basis für die KOM-LE Mail mit der KIM-Attachment Strukturexit / initiale KOM-LE Mail erstelltKOM-LE Mail finalisiertdo / hinzufügen der Header mit Versionsinformationen(Konnektor, Clientmodul, Produkttyp)do / signiere und verschlüssle den Mail Bodyexit / finale KOM-LE Mail erstelltVersand an den Fachdienst -------------------------------------------------------------------------------- /images/gematik_logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/gematik_logo_simple.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/gematik_logo_simple.jpg -------------------------------------------------------------------------------- /images/kas_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/kas_overview.png -------------------------------------------------------------------------------- /images/kim_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/images/kim_overview.png -------------------------------------------------------------------------------- /samples/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/samples/.gitkeep -------------------------------------------------------------------------------- /samples/KAS/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/samples/KAS/.gitkeep -------------------------------------------------------------------------------- /samples/KAS/1_1_Client-Mail_empfangen.txt: -------------------------------------------------------------------------------- 1 | Message-ID: 2 | Date: Fri, 9 Sep 2022 15:47:00 +0200 3 | MIME-Version: 1.0 4 | User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 5 | Thunderbird/91.13.0 6 | To: "user.test15@gematik.kim.telematik-test" 7 | , 8 | not_allowed_recipient@not.telematik-test 9 | From: "not allowed mail sender" 10 | 11 | Subject: KIM 1.5 Testnachricht 12 | Sender: user.test15@gematik.kim.telematik-test 13 | Content-Type: multipart/mixed; boundary="------------v0Sp8vvZ1qGfAWh1MYiwrJ0W" 14 | 15 | --------------v0Sp8vvZ1qGfAWh1MYiwrJ0W 16 | Content-Type: text/plain; charset=UTF-8; format=flowed 17 | Content-Transfer-Encoding: 7bit 18 | 19 | Text der Testnachricht 20 | 21 | --------------v0Sp8vvZ1qGfAWh1MYiwrJ0W 22 | Content-Type: text/plain; charset=UTF-8; name="20mb.test" 23 | Content-Disposition: attachment; filename="20mb.test" 24 | Content-Transfer-Encoding: base64 25 | 26 | fHx3d3cuZGFzaW50ZXJuZXQubmV0f[...] 27 | 28 | 29 | --------------v0Sp8vvZ1qGfAWh1MYiwrJ0W-- -------------------------------------------------------------------------------- /samples/KAS/1_2_Client-Mail_prozessiert.txt: -------------------------------------------------------------------------------- 1 | Message-ID: 2 | Date: Fri, 9 Sep 2022 15:47:00 +0200 3 | MIME-Version: 1.0 4 | User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 5 | Thunderbird/91.13.0 6 | Subject: KIM 1.5 Testnachricht 7 | X-KIM-Dienstkennung: KIM-Mail;Default;V1.0 8 | From: "user.test15@gematik.kim.telematik-test" 9 | 10 | To: "user.test15@gematik.kim.telematik-test" 11 | 12 | Content-Type: multipart/mixed; boundary="------------v0Sp8vvZ1qGfAWh1MYiwrJ0W" 13 | 14 | --------------v0Sp8vvZ1qGfAWh1MYiwrJ0W 15 | Content-Type: text/plain; charset=UTF-8; format=flowed 16 | Content-Transfer-Encoding: 7bit 17 | 18 | Text der Testnachricht 19 | 20 | --------------v0Sp8vvZ1qGfAWh1MYiwrJ0W 21 | Content-Type: text/plain; charset=UTF-8; name="1mb.test" 22 | Content-Disposition: attachment; filename="1mb.test" 23 | Content-Transfer-Encoding: base64 24 | 25 | fHx3d3cuZGFzaW50ZXJuZXQubmV[...] 26 | 27 | --------------v0Sp8vvZ1qGfAWh1MYiwrJ0W-- -------------------------------------------------------------------------------- /samples/KAS/1_3_Client-Mail_hochgeladen.txt: -------------------------------------------------------------------------------- 1 | Message-ID: 2 | Date: Fri, 9 Sep 2022 15:47:00 +0200 3 | MIME-Version: 1.0 4 | User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 5 | Thunderbird/91.13.0 6 | Subject: KIM 1.5 Testnachricht 7 | X-KIM-Dienstkennung: KIM-Mail;Default;V1.0 8 | From: "user.test15@gematik.kim.telematik-test" 9 | 10 | To: "user.test15@gematik.kim.telematik-test" 11 | 12 | Content-Type: text/plain; charset=utf-8 13 | Content-Disposition: x-kas 14 | 15 | {"link":"https://kas.gematik.kim.telematik-test/attachments/v2.3/attachment/a566f001-7fa6-4f87-a088-7def2d609c87","k":"AZtUCtV3M5mTC/XzfDDl25mZ4FwoOADyaIi3Fn8wH6w=","hash":"Wc148UGImi84VG3H/fF+3x6ouGMknls6hf2wn0qcqjU=","size":27262976} -------------------------------------------------------------------------------- /samples/KAS/1_4_KOM-LE-Mail_finalisiert.txt: -------------------------------------------------------------------------------- 1 | Subject: KOM-LE-Nachricht 2 | Date: Fri, 9 Sep 2022 15:47:00 +0200 3 | From: "user.test15@gematik.kim.telematik-test" 4 | 5 | To: "user.test15@gematik.kim.telematik-test" 6 | 7 | Message-ID: 8 | X-KIM-Dienstkennung: KIM-Mail;Default;V1.0 9 | X-KOM-LE-Version: 1.5 10 | X-KIM-CMVersion: AKNET_1.1.0-0 11 | X-KIM-PTVersion: 1.2.1 12 | X-KIM-KONVersion: <5.0.2><2.0.0><5.0.5> 14 | MIME-Version: 1.0 15 | Expires: Thu, 08 Dec 2022 15:48:35 +0200 16 | Content-Type: application/pkcs7-mime; smime-type=authenticated-enveloped-data; 17 | name=smime.p7m 18 | Content-Disposition: attachment; filename=smime.p7m 19 | Content-Transfer-Encoding: base64 20 | 21 | MIAGCyqGSIb3DQEJEA[...] -------------------------------------------------------------------------------- /samples/KAS/2_1_KOM-LE-Mail_empfangen.txt: -------------------------------------------------------------------------------- 1 | Return-Path: 2 | Received: from 10.65.0.11 (EHLO 192.168.169.20:64500) ([10.65.0.11]) 3 | by mailserver.gematik.kim.telematik-test (JAMES SMTP Server ) with ESMTPA ID 54965859 4 | for ; 5 | Fri, 09 Sep 2022 15:50:05 +0200 (CEST) 6 | Subject: KOM-LE-Nachricht 7 | Date: Fri, 9 Sep 2022 15:47:00 +0200 8 | From: "user.test15@gematik.kim.telematik-test" 9 | 10 | To: "user.test15@gematik.kim.telematik-test" 11 | 12 | Message-ID: 13 | X-KIM-Dienstkennung: KIM-Mail;Default;V1.0 14 | X-KOM-LE-Version: 1.5 15 | X-KIM-CMVersion: KIM_CM_1.1.0-0 16 | X-KIM-PTVersion: 1.2.1 17 | X-KIM-KONVersion: <5.0.2><2.0.0><5.0.5> 19 | MIME-Version: 1.0 20 | Expires: Thu, 08 Dec 2022 15:48:35 +0200 21 | Content-Type: application/pkcs7-mime; smime-type=authenticated-enveloped-data; 22 | name=smime.p7m 23 | Content-Disposition: attachment; filename=smime.p7m 24 | Content-Transfer-Encoding: base64 25 | 26 | MIAGCyqGSIb3DQEJEAEXoIAwg[...] 27 | -------------------------------------------------------------------------------- /samples/KAS/2_2_KOM-LE-Mail_prozessiert.txt: -------------------------------------------------------------------------------- 1 | Message-ID: 2 | Date: Fri, 9 Sep 2022 15:47:00 +0200 3 | MIME-Version: 1.0 4 | User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 5 | Thunderbird/91.13.0 6 | Subject: KIM 1.5 Testnachricht 7 | X-KIM-Dienstkennung: KIM-Mail;Default;V1.0 8 | From: "user.test15@gematik.kim.telematik-test" 9 | 10 | To: "user.test15@gematik.kim.telematik-test" 11 | 12 | Content-Type: text/plain; charset=utf-8 13 | Content-Disposition: x-kas 14 | 15 | {"link":"https://kas.gematik.kim.telematik-test/attachments/v2.3/attachment/a566f001-7fa6-4f87-a088-7def2d609c87","k":"AZtUCtV3M5mTC/XzfDDl25mZ4FwoOADyaIi3Fn8wH6w=","hash":"Wc148UGImi84VG3H/fF+3x6ouGMknls6hf2wn0qcqjU=","size":27262976} -------------------------------------------------------------------------------- /samples/KAS/2_3_Client-Mail_heruntergeladen.txt: -------------------------------------------------------------------------------- 1 | Message-ID: 2 | Date: Fri, 9 Sep 2022 15:47:00 +0200 3 | MIME-Version: 1.0 4 | User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 5 | Thunderbird/91.13.0 6 | Subject: KIM 1.5 Testnachricht 7 | X-KIM-Dienstkennung: KIM-Mail;Default;V1.0 8 | From: "user.test15@gematik.kim.telematik-test" 9 | 10 | To: "user.test15@gematik.kim.telematik-test" 11 | 12 | Content-Type: multipart/mixed; boundary="------------v0Sp8vvZ1qGfAWh1MYiwrJ0W" 13 | 14 | --------------v0Sp8vvZ1qGfAWh1MYiwrJ0W 15 | Content-Type: text/plain; charset=UTF-8; format=flowed 16 | Content-Transfer-Encoding: 7bit 17 | 18 | Text der Testnachricht 19 | 20 | --------------v0Sp8vvZ1qGfAWh1MYiwrJ0W 21 | Content-Type: text/plain; charset=UTF-8; name="1mb.test" 22 | Content-Disposition: attachment; filename="1mb.test" 23 | Content-Transfer-Encoding: base64 24 | 25 | fHx3d3cuZGFzaW50ZXJuZX[...] 26 | 27 | 28 | 29 | --------------v0Sp8vvZ1qGfAWh1MYiwrJ0W-- -------------------------------------------------------------------------------- /samples/KAS/2_4_Client-Mail_finalisiert.txt: -------------------------------------------------------------------------------- 1 | Message-ID: 2 | Date: Fri, 9 Sep 2022 15:47:00 +0200 3 | MIME-Version: 1.0 4 | User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 5 | Thunderbird/91.13.0 6 | Subject: KIM 1.5 Testnachricht 7 | X-KIM-Dienstkennung: KIM-Mail;Default;V1.0 8 | From: "user.test15@gematik.kim.telematik-test" 9 | 10 | To: "user.test15@gematik.kim.telematik-test" 11 | 12 | X-KIM-DecryptionResult: 00 13 | X-KIM-IntegrityCheckResult: 01 14 | Return-Path: 15 | Received: from 10.65.0.11 (EHLO 192.168.169.20:64500) ([10.65.0.11]) 16 | by mailserver.gematik.kim.telematik-test (JAMES SMTP Server ) with ESMTPA ID 54965859 17 | for ; 18 | Fri, 09 Sep 2022 15:50:05 +0200 (CEST) 19 | Content-Type: multipart/mixed; boundary="------------v0Sp8vvZ1qGfAWh1MYiwrJ0W" 20 | 21 | --------------v0Sp8vvZ1qGfAWh1MYiwrJ0W 22 | Content-Type: text/plain; charset=utf-8; format=flowed 23 | Content-Transfer-Encoding: 7bit 24 | 25 | Text der Testnachricht 26 | 27 | 28 | --------------------------------------------- 29 | Die Nachricht wurde entschlüsselt. 30 | Die Signatur wurde erfolgreich geprüft. 31 | 32 | --------------v0Sp8vvZ1qGfAWh1MYiwrJ0W 33 | Content-Type: text/plain; charset=UTF-8; name="1mb.test" 34 | Content-Disposition: attachment; filename="1mb.test" 35 | Content-Transfer-Encoding: base64 36 | 37 | fHx3d3cuZGFzaW50ZXJuZX[...] 38 | 39 | 40 | --------------v0Sp8vvZ1qGfAWh1MYiwrJ0W-- 41 | -------------------------------------------------------------------------------- /samples/SMIME-Profil.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/samples/SMIME-Profil.zip -------------------------------------------------------------------------------- /src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/src/.gitkeep -------------------------------------------------------------------------------- /src/json/README.adoc: -------------------------------------------------------------------------------- 1 | = Documentation for json files 2 | 3 | == badges.json 4 | 5 | This file is used to create dynamic badges for api-kim. 6 | 7 | Badges 8 | 9 | - Release Notes version, color red, style plastic, logo github, logoColor red 10 | 11 | - KIM Clientmodul Spezifikationen version, color green, style plastic, logo github, logoColor green 12 | - KIM Fachdienst Spezifikationen version, color green, style plastic, logo github, logoColor green 13 | 14 | - AccountManager.yaml version, color blue, style plastic, logo github, logoColor lightBlue 15 | - AttachmentService.yaml version, color blue, style plastic, logo github, logoColor lightBlue 16 | - AccountLimit.yaml version, color blue, style plastic, logo github, logoColor lightBlue 17 | - ServiceInformation.yaml version, color blue, style plastic, logo github, logoColor lightBlue 18 | -------------------------------------------------------------------------------- /src/json/badges.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Dynamic badges for api-kim", 3 | "badges": { 4 | "releaseNotes": { 5 | "version": " v1.5.3-2" 6 | }, 7 | "kimClientmodulSpec": { 8 | "version": " v1.5.3" 9 | }, 10 | "kimFachdienstSpec": { 11 | "version": " v1.5.3" 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/openapi/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/src/openapi/.gitkeep -------------------------------------------------------------------------------- /src/openapi/AccountLimit.yaml: -------------------------------------------------------------------------------- 1 | openapi: 3.0.3 2 | info: 3 | title: I_AccountLimit_Service 4 | description: The limits of a user account are queried via this interface 5 | version: 1.1.3 6 | ### 1.1.3 7 | # - removed operation setLimits for compatibility with KIM 1.5.2 8 | # - changed security to basic auth for compatibility with KIM 1.5.2 9 | # - changed dataTimeToLive maximum value for compatibility with KIM 1.5.2 10 | # - changed servers -url for compatibility with KIM 1.5.2 11 | ### 1.1.2 12 | # - changed servers -url 13 | # - adding new operation setLimits 14 | # - added object property AccountLimit.kasMailSizeThreshold 15 | # - added traceId to Error object 16 | ### 1.1.1 17 | # - changed minimum value for maxMailSize 18 | # - changed descriptions 19 | ### 1.1.0 20 | # - changed version number in server url 21 | # - removed quotation marks and added minimum value for maxMailSize 22 | ### 1.0.0 23 | # - initial Version of I_AccountLimit_Service 24 | 25 | externalDocs: 26 | description: GitHub - documentation 27 | url: https://github.com/gematik/api-kim 28 | servers: 29 | - url: /AccountLimit/v1.1/ 30 | # Die URL muss wie folgt gebildet werden: 31 | # https://: 32 | # Die SRV und TXT RR sind unter dem Resource Record Bezeichner zu finden. 33 | tags: 34 | - name: AccountLimit 35 | 36 | paths: 37 | /limit: 38 | get: 39 | tags: 40 | - AccountLimit 41 | summary: Query the limits of an account 42 | description: Query the limits of an account 43 | operationId: getLimits 44 | 45 | responses: 46 | 200: 47 | description: OK 48 | # Returning the metadata of a user account 49 | content: 50 | application/json; charset=utf-8: 51 | schema: 52 | $ref: '#/components/schemas/AccountLimit' 53 | 401: 54 | $ref: 'CommonSchemas.yaml#/components/responses/401' 55 | 404: 56 | $ref: 'CommonSchemas.yaml#/components/responses/404' 57 | 500: 58 | $ref: 'CommonSchemas.yaml#/components/responses/500' 59 | 60 | components: 61 | schemas: 62 | AccountLimit: 63 | type: object 64 | properties: 65 | dataTimeToLive: 66 | type: integer 67 | minimum: 10 68 | maximum: 365 69 | default: 90 70 | example: 90 71 | description: Storage duration of emails on the mail server and attachments on the KAS backend service. Specified in days. 72 | maxMailSize: 73 | type: integer 74 | format: int64 75 | minimum: 734003200 76 | example: 734003200 77 | description: Sets the maximum size of a KIM email in bytes. 78 | quota: 79 | type: integer 80 | format: int64 81 | readOnly: true 82 | example: 160000000000 83 | description: Specifies the maximum storage volume for a user account. 84 | remainQuota: 85 | type: integer 86 | format: int64 87 | readOnly: true 88 | example: 112000000000 89 | description: Specifies the remaining storage volume for a user account. 90 | 91 | securitySchemes: 92 | KIMBasicAuth: 93 | $ref: 'CommonSchemas.yaml#/components/securitySchemes/KIMBasicAuth' 94 | -------------------------------------------------------------------------------- /src/openapi/AttachmentService.yaml: -------------------------------------------------------------------------------- 1 | openapi: 3.0.3 2 | info: 3 | title: I_Attachment_Service 4 | description: Encrypted email attachments can be sent via this interface 5 | uploaded and made available. 6 | version: 2.3.3 7 | ### 2.3.3 8 | # - changed operationId readMaildata 9 | ### 2.3.2 10 | # - added distinct definition for header element Content-Length in add_Attachment: 11 | # - Content-Length full request body 12 | # - Content-Length of the actual mail data of the "attachment" form-data in body, which is required in order to check against maxMailSize + performant storage streaming 13 | # - added traceId to Error object 14 | # - changed servers -url 15 | # - changed operationId readAttachment 16 | ### 2.3.1 17 | # - added delete_Maildata feature 18 | ### 2.3.0 19 | # - changed server url to new api version 20 | # - added response code for wrong input parameters 21 | # - added response type object for operation add_Attachment 22 | ### 2.2.0 23 | # - updated url to https://kas.hrst1.kim.telematik/attachments/v2.2/ 24 | # - deleted operation read_MaxMailSize 25 | # - changed operation add_Attachment: 26 | # renamed "Shared-Link" to "sharedLink" 27 | # added parameters: expires, recipients, messageID 28 | # added error code 507 29 | # - changed operation read_Attachment: 30 | # added parameter recipient 31 | # added error code 429 32 | ### 2.0.0 33 | # - added client authentication for operation add_Attachment 34 | # - changed URI for operations add_attachment and read_attachment 35 | # - added error message strings 36 | # - added HTTP error code 500 37 | ### 1.1.0 38 | # - changed data type in operation read_maxMailSize 39 | # - changed error code 405 to 400 in operation add_Attachment 40 | # - changed MIME type multipart/form-data to application/octet-stream in operation add_Attachment() and read_Attachment() 41 | ### 1.0.1 42 | # - added errorcode 413 in operation add_Attachment 43 | # - extended URI to interface releases 44 | ### 1.0.0 45 | # - initial Version of I_Attachment_Service 46 | 47 | externalDocs: 48 | description: GitHub - documentation 49 | url: https://github.com/gematik/api-kim 50 | servers: 51 | - url: /attachments/v2.3/ 52 | # Die URL muss wie folgt gebildet werden: 53 | # https://: 54 | # Die SRV und TXT RR sind unter dem Resource Record Bezeichner zu finden. 55 | tags: 56 | - name: Maildata 57 | 58 | paths: 59 | /attachment/{attachmentId}: 60 | get: 61 | tags: 62 | - Maildata 63 | summary: Download an attachment 64 | description: returns the attachment encrypted under a share link. 65 | operationId: readMaildata 66 | 67 | parameters: 68 | - name: attachmentId 69 | in: path 70 | description: Link reference to the encrypted attachment in the service. 71 | required: true 72 | schema: 73 | type: string 74 | - name: recipient 75 | in: header 76 | description: The recipient's passed email (KIM) address. 77 | required: true 78 | schema: 79 | type: string 80 | format: email 81 | 82 | responses: 83 | 200: 84 | description: OK 85 | # Attachment was downloaded successfully 86 | content: 87 | application/octet-stream: 88 | schema: 89 | type: string 90 | format: binary 91 | 400: 92 | $ref: 'CommonSchemas.yaml#/components/responses/400' 93 | 403: 94 | description: Recipient not included in the KIM email recipient list. 95 | content: 96 | application/json; charset=utf-8: 97 | schema: 98 | $ref: 'CommonSchemas.yaml#/components/schemas/Error' 99 | 404: 100 | description: Resource not found at the specified link. 101 | content: 102 | application/json; charset=utf-8: 103 | schema: 104 | $ref: 'CommonSchemas.yaml#/components/schemas/Error' 105 | 429: 106 | description: Downloaded attachment too many times. 107 | content: 108 | application/json; charset=utf-8: 109 | schema: 110 | $ref: 'CommonSchemas.yaml#/components/schemas/Error' 111 | 500: 112 | $ref: 'CommonSchemas.yaml#/components/responses/500' 113 | 114 | delete: 115 | tags: 116 | - Maildata 117 | summary: Delete email data from KAS 118 | description: Deletion of email data stored on the KAS, Uri corresponds to sharedLink from add_Attachment. 119 | operationId: deleteMaildata 120 | 121 | security: 122 | - KIMBasicAuth: [] 123 | # Authentication takes place with username/password from the mail account of the data creator/sender. 124 | 125 | parameters: 126 | - name: attachmentId 127 | in: path 128 | description: Link reference to the encrypted attachment in the service. 129 | required: true 130 | schema: 131 | type: string 132 | 133 | responses: 134 | 200: 135 | description: OK - data has been deleted. 136 | 400: 137 | $ref: 'CommonSchemas.yaml#/components/responses/400' 138 | 401: 139 | $ref: 'CommonSchemas.yaml#/components/responses/401' 140 | 404: 141 | description: Resource not found at the specified link. 142 | content: 143 | application/json; charset=utf-8: 144 | schema: 145 | $ref: 'CommonSchemas.yaml#/components/schemas/Error' 146 | 500: 147 | $ref: 'CommonSchemas.yaml#/components/responses/500' 148 | 149 | /attachment/: 150 | post: 151 | tags: 152 | - Maildata 153 | summary: Add an attachment 154 | description: An encrypted attachment is added under a newly created sharing link. 155 | operationId: addMaildata 156 | 157 | security: 158 | - KIMBasicAuth: [] 159 | # Authentication takes place with username/password from the mail account. 160 | 161 | parameters: 162 | - name: Content-Length 163 | in: header 164 | description: Total size/length of the request body. 165 | required: true 166 | schema: 167 | type: integer 168 | format: int64 169 | example: 524299123 170 | 171 | requestBody: 172 | content: 173 | multipart/form-data: 174 | schema: 175 | type: object 176 | required: [messageID, attachment, recipients, expires] 177 | properties: 178 | messageID: 179 | type: string 180 | description: MessageID of the associated KIM email. 181 | recipients: 182 | type: array 183 | description: List of all recipients (KIM addresses) of the KIM email recipients; 184 | Exactly one address is specified per form part and the form part is 185 | specified multiple times (exploded=true). 186 | # curl e.g. 187 | # -F 'recipients=user1@example.kim.telematik' \ 188 | # -F 'recipients=user2@example.kim.telematik' \ 189 | items: 190 | type: string 191 | format: email 192 | expires: 193 | type: string 194 | description: Time at which the attachment must be deleted. 195 | (Format RFC5322 date-time) 196 | attachment: 197 | type: string 198 | format: binary 199 | description: Contains the encrypted maildata. 200 | 201 | encoding: 202 | attachment: 203 | contentType: application/octet-stream 204 | headers: 205 | Content-Length: 206 | required: true 207 | description: Amount of data in bytes of the mail data to be transmitted on the KAS. 208 | schema: 209 | type: integer 210 | format: int64 211 | example: 524288000 212 | Content-Disposition: 213 | required: true 214 | schema: 215 | type: string 216 | example: "Content-Disposition: form-data; name=attachment; filename=attachment.enc" 217 | 218 | responses: 219 | 201: 220 | description: Created 221 | # The attachment was successfully created under the shared link provided. 222 | content: 223 | application/json; charset=utf-8: 224 | schema: 225 | type: object 226 | properties: 227 | sharedLink: 228 | type: string 229 | # Contains the link to the download point. 230 | # The attachment can be accessed from KAS via the link. 231 | # The link contains the attachmentID - required in operation read_Attachment. 232 | 400: 233 | $ref: 'CommonSchemas.yaml#/components/responses/400' 234 | 401: 235 | $ref: 'CommonSchemas.yaml#/components/responses/401' 236 | 413: 237 | description: Payload Too Large 238 | # The maximum permitted document size has been exceeded. 239 | content: 240 | application/json; charset=utf-8: 241 | schema: 242 | $ref: 'CommonSchemas.yaml#/components/schemas/Error' 243 | 500: 244 | $ref: 'CommonSchemas.yaml#/components/responses/500' 245 | 507: 246 | description: Not enough memory available. 247 | content: 248 | application/json; charset=utf-8: 249 | schema: 250 | $ref: 'CommonSchemas.yaml#/components/schemas/Error' 251 | 252 | components: 253 | securitySchemes: 254 | KIMBasicAuth: 255 | $ref: 'CommonSchemas.yaml#/components/securitySchemes/KIMBasicAuth' -------------------------------------------------------------------------------- /src/openapi/CommonSchemas.yaml: -------------------------------------------------------------------------------- 1 | info: 2 | title: I_CommonSchemas 3 | version: 1.0.2 4 | 5 | ### 1.0.2 6 | # - new eror code 424, when default Anwendungskennzeichen will be lost or is necessary 7 | ### 1.0.1 8 | # - removed minLength from Password for KIM 1.5.2 compatability 9 | ### 1.0.0 10 | # - created 11 | 12 | components: 13 | schemas: 14 | Username: 15 | type: string 16 | maxLength: 256 17 | format: email 18 | description: Username/email of the account. 19 | Password: 20 | type: string 21 | maxLength: 256 22 | format: byte 23 | description: The password is transmitted base64 encoded. 24 | writeOnly: true 25 | Error: 26 | type: object 27 | properties: 28 | message: 29 | type: string 30 | traceId: 31 | type: string 32 | maxLength: 255 33 | example: 19aaf69260f63694 34 | description: Unique character string for tracing the error in the KIM service 35 | 36 | responses: 37 | 400: 38 | description: Error in the input data, description of the error is in the error text 39 | content: 40 | application/json; charset=utf-8: 41 | schema: 42 | $ref: '#/components/schemas/Error' 43 | 401: 44 | description: Authentification failed 45 | content: 46 | application/json; charset=utf-8: 47 | schema: 48 | $ref: '#/components/schemas/Error' 49 | 404: 50 | description: Email account not available. 51 | content: 52 | application/json; charset=utf-8: 53 | schema: 54 | $ref: '#/components/schemas/Error' 55 | 423: 56 | description: VZD entry is locked. 57 | content: 58 | application/json; charset=utf-8: 59 | schema: 60 | $ref: '#/components/schemas/Error' 61 | 424: 62 | description: default Anwendungskennzeichen will be lost or is necessary. 63 | content: 64 | application/json; charset=utf-8: 65 | schema: 66 | $ref: '#/components/schemas/Error' 67 | 500: 68 | description: Internal Server Error 69 | content: 70 | application/json; charset=utf-8: 71 | schema: 72 | $ref: '#/components/schemas/Error' 73 | 502: 74 | description: VZD cannot be reached or returns errors 75 | content: 76 | application/json; charset=utf-8: 77 | schema: 78 | $ref: '#/components/schemas/Error' 79 | 80 | securitySchemes: 81 | KIMBearerAuth: 82 | type: http 83 | scheme: bearer 84 | bearerFormat: JWT 85 | # The JWT is encoded in compact serialization (RFC 7515, Section 3.1) and transmitted in the HTTP header Authorization according to the bearer schema. 86 | 87 | KIMBasicAuth: 88 | type: http 89 | scheme: basic 90 | -------------------------------------------------------------------------------- /src/openapi/ServiceInformation.yaml: -------------------------------------------------------------------------------- 1 | openapi: 3.0.3 2 | info: 3 | title: I_ServiceInformation 4 | description: Information about the KIM service is requested via this interface. 5 | version: 1.0.2 6 | ### 1.0.2 7 | # - added operation GET /appTags 8 | ### 1.0.1 9 | # - added kimServiceVersion and jwtExpirations to the ServiceInformation object 10 | ### 1.0.0 11 | # - initial Version of I_ServiceInformation 12 | # - added traceId to Error object 13 | 14 | externalDocs: 15 | description: GitHub - documentation 16 | url: https://github.com/gematik/api-kim 17 | servers: 18 | - url: /ServiceInformation/v1.0/ 19 | # The URL must be formed as follows: 20 | # https://: 21 | # Die SRV und TXT RR sind unter dem Resource Record Bezeichner zu finden. 22 | tags: 23 | - name: ServiceInformation 24 | 25 | paths: 26 | /serviceinfo: 27 | get: 28 | tags: 29 | - ServiceInformation 30 | summary: Request information via the KIM backend service 31 | description: Request information via the KIM backend service 32 | operationId: getServiceInformation 33 | responses: 34 | 200: 35 | description: OK 36 | # Return the information via the KIM backend service 37 | content: 38 | application/json; charset=utf-8: 39 | schema: 40 | $ref: '#/components/schemas/ServiceInformation' 41 | 500: 42 | $ref: 'CommonSchemas.yaml#/components/responses/500' 43 | 44 | /appTags: 45 | get: 46 | tags: 47 | - appTags 48 | summary: Request information for application identifiers (Anwendungskennzeichen) 49 | description: The list of application identifiers (Anwendungskennzeichen) is queried. 50 | The application identifiers are used as the FHIR code system in the 51 | Submit response 52 | operationId: getAppTags 53 | 54 | responses: 55 | 200: 56 | description: OK 57 | # Return of the application identifiers as FHIR CodeSystem (ServiceIdentifierCS) 58 | # Please refer https://simplifier.net/app-transport-framework/service-identifier-cs/~json 59 | content: 60 | application/json; charset=utf-8: 61 | schema: 62 | externalDocs: 63 | description: Return of the application identifiers as FHIR CodeSystem (ServiceIdentifierCS) 64 | url: https://simplifier.net/app-transport-framework/service-identifier-cs/~json 65 | 500: 66 | $ref: 'CommonSchemas.yaml#/components/responses/500' 67 | 68 | components: 69 | schemas: 70 | ServiceInformation: 71 | type: object 72 | properties: 73 | kimServiceVersion: 74 | type: string 75 | description: Specifies the version of the KIM backend service. 76 | passwordPolicyRegEx: 77 | type: string 78 | description: Specifies the password policy that the AccountManager requires as a regular expression (in java compatible style). 79 | passwordPolicyDisplay: 80 | type: string 81 | description: Specifies the password policy that the AccountManager requires in text form. 82 | jwtExpiration: 83 | type: integer 84 | minimum: 300 85 | maximum: 21600 86 | description: Specifies the configured expiration time range for JWTs. The value is given in seconds. 87 | referenceIdRequired: 88 | type: boolean 89 | description: Specifies whether the referenceID is required during initial registration. 90 | initialPasswordRequired: 91 | type: boolean 92 | description: Specifies whether the initial password is required during initial registration. 93 | example: 94 | kimServiceVersion: 1.5.3 95 | passwordPolicyRegEx: ^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[*.!@#$%^&(){}\[\]:;'<>,?/~_+\-=|\\]).{12,256}$ 96 | passwordPolicyDisplay: At least one number [0-9] 97 | At least one lowercase letter [a-z] 98 | At least one capital letter [A-Z] 99 | At least one special character [*.!@#$%^&(){}[]:;'<>,?/~_+-=|\] 100 | Minimum length 12 characters 101 | Maximum length 256 characters. 102 | jwtExpiration: 300 103 | referenceIdRequired: true 104 | initialPasswordRequired: false 105 | 106 | -------------------------------------------------------------------------------- /src/plantuml/Fachdienst/Seq_acc_abwesenheitsnotiz.puml: -------------------------------------------------------------------------------- 1 | /' 2 | # KIM 1.5 3 | # Account Manager 4 | # Sequence Diagram 5 | # Name: Operation Abwesenheitsnotiz 6 | '/ 7 | 8 | @startuml 9 | skinparam sequenceMessageAlign direction 10 | skinparam minClassWidth 200 11 | skinparam BoxPadding 15 12 | skinparam sequenceReferenceHeaderBackgroundColor palegreen 13 | scale max 2048 width 14 | hide footbox 15 | 16 | skinparam sequence { 17 | ArrowColor black 18 | ArrowFontSize 17 19 | ActorBorderColor black 20 | LifeLineBorderColor black 21 | LifeLineBackgroundColor Gainsboro 22 | 23 | ParticipantBorderColor Motivation 24 | ParticipantBackgroundColor Motivation 25 | ParticipantFontSize 20 26 | ParticipantFontColor black 27 | ParticipantBorderColor Black 28 | ParticipantBackgroundColor MOTIVATION 29 | 30 | ActorBackgroundColor Gainsboro 31 | ActorFontColor black 32 | ActorFontSize 20 33 | ActorFontName Aapex 34 | } 35 | actor L as "Leistungserbringer" 36 | box Clientmodul\n #WhiteSmoke 37 | participant A as "Administrationsmodul" 38 | end box 39 | box Fachdienst\n #WhiteSmoke 40 | participant AM as "Account-Manager" 41 | end box 42 | 43 | L->A: Abwesenheit \nkonfigurieren 44 | activate A 45 | A->AM: getOutOfOffice 46 | activate AM 47 | AM --> A: Konfiguration 48 | deactivate AM 49 | 50 | opt Abwesenheitsnotiz bearbeiten 51 | A->AM: updateOutOfOffice 52 | activate AM 53 | AM --> A: status 54 | deactivate AM 55 | end 56 | A-->L: status 57 | deactivate A 58 | @enduml -------------------------------------------------------------------------------- /src/plantuml/Fachdienst/Seq_acc_anwendungskennzeichen.puml: -------------------------------------------------------------------------------- 1 | /' 2 | # KIM 1.5 3 | # Account Manager 4 | # Sequence Diagram 5 | # Name: Operation Abwesenheitsnotiz 6 | '/ 7 | 8 | @startuml 9 | skinparam sequenceMessageAlign direction 10 | skinparam minClassWidth 200 11 | skinparam BoxPadding 15 12 | skinparam sequenceReferenceHeaderBackgroundColor palegreen 13 | scale max 2048 width 14 | hide footbox 15 | 16 | skinparam sequence { 17 | ArrowColor black 18 | ArrowFontSize 17 19 | ActorBorderColor black 20 | LifeLineBorderColor black 21 | LifeLineBackgroundColor Gainsboro 22 | 23 | ParticipantBorderColor Motivation 24 | ParticipantBackgroundColor Motivation 25 | ParticipantFontSize 20 26 | ParticipantFontColor black 27 | ParticipantBorderColor Black 28 | ParticipantBackgroundColor MOTIVATION 29 | 30 | ActorBackgroundColor Gainsboro 31 | ActorFontColor black 32 | ActorFontSize 20 33 | ActorFontName Aapex 34 | } 35 | actor L as "Leistungserbringer" 36 | box Clientmodul\n #WhiteSmoke 37 | participant A as "Administrationsmodul" 38 | end box 39 | box Fachdienst\n #WhiteSmoke 40 | participant AM as "Account-Manager" 41 | end box 42 | 43 | L->A: Anwendungskennzeichen \nkonfigurieren 44 | activate A 45 | A->AM: getAccount 46 | activate AM 47 | AM --> A: Konfiguration 48 | deactivate AM 49 | 50 | opt Anwendungskennzeichen bearbeiten 51 | A->AM: setAccount 52 | activate AM 53 | AM --> A: status 54 | deactivate AM 55 | end 56 | A-->L: status 57 | deactivate A 58 | @enduml -------------------------------------------------------------------------------- /src/plantuml/Fachdienst/Seq_acc_deregister.puml: -------------------------------------------------------------------------------- 1 | /' 2 | # KIM 1.5 3 | # Account Manager 4 | # Sequence Diagram 5 | # Name: Operation deregister 6 | '/ 7 | 8 | @startuml 9 | skinparam sequenceMessageAlign direction 10 | skinparam minClassWidth 200 11 | skinparam BoxPadding 15 12 | skinparam sequenceReferenceHeaderBackgroundColor palegreen 13 | scale max 2048 width 14 | hide footbox 15 | 16 | skinparam sequence { 17 | ArrowColor black 18 | ArrowFontSize 17 19 | ActorBorderColor black 20 | LifeLineBorderColor black 21 | LifeLineBackgroundColor Gainsboro 22 | 23 | ParticipantBorderColor Motivation 24 | ParticipantBackgroundColor Motivation 25 | ParticipantFontSize 20 26 | ParticipantFontColor black 27 | ParticipantBorderColor Black 28 | ParticipantBackgroundColor MOTIVATION 29 | 30 | ActorBackgroundColor Gainsboro 31 | ActorFontColor black 32 | ActorFontSize 20 33 | ActorFontName Aapex 34 | } 35 | actor L as "Leistungserbringer" 36 | box Clientmodul\n #WhiteSmoke 37 | participant A as "Administrationsmodul" 38 | end box 39 | box Fachdienst\n #WhiteSmoke 40 | participant AM as "Account-Manager" 41 | end box 42 | 43 | L->A: Deregistrierung aufrufen 44 | activate A 45 | A->AM: deregisterAccount 46 | activate AM 47 | AM --> A: status 48 | deactivate AM 49 | A-->L: status 50 | deactivate A 51 | @enduml -------------------------------------------------------------------------------- /src/plantuml/Fachdienst/Seq_acc_kontoverwaltung.puml: -------------------------------------------------------------------------------- 1 | /' 2 | # KIM 1.5 3 | # Account Manager 4 | # Sequence Diagram 5 | # Name: Operation Kontodaten abfragen/ändern 6 | '/ 7 | 8 | @startuml 9 | skinparam sequenceMessageAlign direction 10 | skinparam minClassWidth 200 11 | skinparam BoxPadding 15 12 | skinparam sequenceReferenceHeaderBackgroundColor palegreen 13 | scale max 2048 width 14 | hide footbox 15 | 16 | skinparam sequence { 17 | ArrowColor black 18 | ArrowFontSize 17 19 | ActorBorderColor black 20 | LifeLineBorderColor black 21 | LifeLineBackgroundColor Gainsboro 22 | 23 | ParticipantBorderColor Motivation 24 | ParticipantBackgroundColor Motivation 25 | ParticipantFontSize 20 26 | ParticipantFontColor black 27 | ParticipantBorderColor Black 28 | ParticipantBackgroundColor MOTIVATION 29 | 30 | ActorBackgroundColor Gainsboro 31 | ActorFontColor black 32 | ActorFontSize 20 33 | ActorFontName Aapex 34 | } 35 | actor L as "Leistungserbringer" 36 | box Clientmodul\n #WhiteSmoke 37 | participant A as "Administrationsmodul" 38 | end box 39 | box Fachdienst\n #WhiteSmoke 40 | participant AM as "Account-Manager" 41 | end box 42 | 43 | L->A: Kontoverwaltung 44 | activate A 45 | opt Kontodaten abfragen 46 | A->AM: getAccount 47 | activate AM 48 | AM --> A: status 49 | deactivate AM 50 | end 51 | opt Kontodaten ändern 52 | A->AM: setAccount 53 | activate AM 54 | AM --> A: status 55 | deactivate AM 56 | end 57 | A-->L: status 58 | deactivate A 59 | @enduml -------------------------------------------------------------------------------- /src/plantuml/Fachdienst/Seq_acc_portierung.puml: -------------------------------------------------------------------------------- 1 | /' 2 | # KIM 1.5 3 | # Account Manager 4 | # Sequence Diagram 5 | # Name: Operation Account portieren 6 | '/ 7 | 8 | @startuml 9 | skinparam sequenceMessageAlign direction 10 | skinparam minClassWidth 200 11 | skinparam BoxPadding 15 12 | skinparam sequenceReferenceHeaderBackgroundColor palegreen 13 | scale max 2048 width 14 | hide footbox 15 | 16 | skinparam sequence { 17 | ArrowColor black 18 | ArrowFontSize 17 19 | ActorBorderColor black 20 | LifeLineBorderColor black 21 | LifeLineBackgroundColor Gainsboro 22 | 23 | ParticipantBorderColor Motivation 24 | ParticipantBackgroundColor Motivation 25 | ParticipantFontSize 20 26 | ParticipantFontColor black 27 | ParticipantBorderColor Black 28 | ParticipantBackgroundColor MOTIVATION 29 | 30 | ActorBackgroundColor Gainsboro 31 | ActorFontColor black 32 | ActorFontSize 20 33 | ActorFontName Aapex 34 | } 35 | actor L as "Leistungserbringer" 36 | box Clientmodul\n #WhiteSmoke 37 | participant A as "Administrationsmodul" 38 | end box 39 | box Fachdienst\n #WhiteSmoke 40 | participant AM as "Account-Manager" 41 | end box 42 | box Directory\n #WhiteSmoke 43 | participant VZD as "VZD" 44 | end box 45 | 46 | L->A: Portierung durchführen 47 | activate A 48 | A->AM: getOTP 49 | activate AM 50 | AM-->A: OTP 51 | deactivate AM 52 | 53 | A -> AM: setTID 54 | activate AM 55 | AM->VZD: Mail-Adresse entfernen 56 | activate VZD 57 | VZD -> VZD: Mail-Adresse für \nalte Telematik-ID\n entfernen 58 | VZD --> AM: status 59 | deactivate VZD 60 | 61 | AM->VZD: Mail-Adresse hinzufügen 62 | activate VZD 63 | VZD -> VZD: Mail-Adresse für \nneue Telematik-ID\n hinzufügen 64 | VZD --> AM: status 65 | deactivate VZD 66 | 67 | AM-->A: status 68 | A-->L: status 69 | deactivate A 70 | @enduml -------------------------------------------------------------------------------- /src/plantuml/Fachdienst/Seq_acc_register.puml: -------------------------------------------------------------------------------- 1 | /' 2 | # KIM 1.5 3 | # Account Manager 4 | # Sequence Diagram 5 | # Name: Operation Account registrieren 6 | '/ 7 | 8 | @startuml 9 | skinparam sequenceMessageAlign direction 10 | skinparam minClassWidth 200 11 | skinparam BoxPadding 15 12 | skinparam sequenceReferenceHeaderBackgroundColor palegreen 13 | scale max 2048 width 14 | hide footbox 15 | 16 | skinparam sequence { 17 | ArrowColor black 18 | ArrowFontSize 17 19 | ActorBorderColor black 20 | LifeLineBorderColor black 21 | LifeLineBackgroundColor Gainsboro 22 | 23 | ParticipantBorderColor Motivation 24 | ParticipantBackgroundColor Motivation 25 | ParticipantFontSize 20 26 | ParticipantFontColor black 27 | ParticipantBorderColor Black 28 | ParticipantBackgroundColor MOTIVATION 29 | 30 | ActorBackgroundColor Gainsboro 31 | ActorFontColor black 32 | ActorFontSize 20 33 | ActorFontName Aapex 34 | } 35 | actor L as "Leistungserbringer" 36 | box Clientmodul\n #WhiteSmoke 37 | participant A as "Administrationsmodul" 38 | end box 39 | box Fachdienst\n #WhiteSmoke 40 | participant AM as "Account-Manager" 41 | end box 42 | box Directory\n #WhiteSmoke 43 | participant VZD as "VZD" 44 | end box 45 | 46 | L->A: Registrierung aufrufen 47 | activate A 48 | A->AM: registerAccount 49 | activate AM 50 | AM -> VZD: KIM Fachdaten eintragen 51 | activate VZD 52 | VZD --> AM: status 53 | deactivate VZD 54 | AM --> A: status 55 | deactivate AM 56 | 57 | opt PKCS#12 != true 58 | A->AM: createCert 59 | activate AM 60 | AM --> A: PKCS#12 61 | deactivate AM 62 | end 63 | A-->L: status 64 | deactivate A 65 | @enduml -------------------------------------------------------------------------------- /src/plantuml/Fachdienst/Seq_acc_revoke_deregister.puml: -------------------------------------------------------------------------------- 1 | /' 2 | # KIM 1.5 3 | # Account Manager 4 | # Sequence Diagram 5 | # Name: Operation revokeDeregistration 6 | '/ 7 | 8 | @startuml 9 | skinparam sequenceMessageAlign direction 10 | skinparam minClassWidth 200 11 | skinparam BoxPadding 15 12 | skinparam sequenceReferenceHeaderBackgroundColor palegreen 13 | scale max 2048 width 14 | hide footbox 15 | 16 | skinparam sequence { 17 | ArrowColor black 18 | ArrowFontSize 17 19 | ActorBorderColor black 20 | LifeLineBorderColor black 21 | LifeLineBackgroundColor Gainsboro 22 | 23 | ParticipantBorderColor Motivation 24 | ParticipantBackgroundColor Motivation 25 | ParticipantFontSize 20 26 | ParticipantFontColor black 27 | ParticipantBorderColor Black 28 | ParticipantBackgroundColor MOTIVATION 29 | 30 | ActorBackgroundColor Gainsboro 31 | ActorFontColor black 32 | ActorFontSize 20 33 | ActorFontName Aapex 34 | } 35 | actor L as "Leistungserbringer" 36 | box Clientmodul\n #WhiteSmoke 37 | participant A as "Administrationsmodul" 38 | end box 39 | box Fachdienst\n #WhiteSmoke 40 | participant AM as "Account-Manager" 41 | end box 42 | 43 | L->A: Deregistrierung zurücknehmen 44 | activate A 45 | A->AM: revokeDeregistration 46 | activate AM 47 | AM --> A: status 48 | deactivate AM 49 | A-->L: status 50 | deactivate A 51 | @enduml -------------------------------------------------------------------------------- /src/plantuml/Fachdienst/Seq_acc_zertifikat.puml: -------------------------------------------------------------------------------- 1 | /' 2 | # KIM 1.5 3 | # Account Manager 4 | # Sequence Diagram 5 | # Name: Operation Account registrieren 6 | '/ 7 | 8 | @startuml 9 | skinparam sequenceMessageAlign direction 10 | skinparam minClassWidth 200 11 | skinparam BoxPadding 15 12 | skinparam sequenceReferenceHeaderBackgroundColor palegreen 13 | scale max 2048 width 14 | hide footbox 15 | 16 | skinparam sequence { 17 | ArrowColor black 18 | ArrowFontSize 17 19 | ActorBorderColor black 20 | LifeLineBorderColor black 21 | LifeLineBackgroundColor Gainsboro 22 | 23 | ParticipantBorderColor Motivation 24 | ParticipantBackgroundColor Motivation 25 | ParticipantFontSize 20 26 | ParticipantFontColor black 27 | ParticipantBorderColor Black 28 | ParticipantBackgroundColor MOTIVATION 29 | 30 | ActorBackgroundColor Gainsboro 31 | ActorFontColor black 32 | ActorFontSize 20 33 | ActorFontName Aapex 34 | } 35 | box Clientmodul\n #WhiteSmoke 36 | participant A as "Administrationsmodul" 37 | end box 38 | box Fachdienst\n #WhiteSmoke 39 | participant AM as "Account-Manager" 40 | end box 41 | 42 | 43 | activate A 44 | A->A: Prüfung Ablauf\n TLS Zertifikat 45 | A->AM: createCert 46 | activate AM 47 | AM --> A: PKCS#12 48 | deactivate AM 49 | deactivate A 50 | @enduml -------------------------------------------------------------------------------- /src/plantuml/Fachdienst/Seq_kas_email_empfangen.puml: -------------------------------------------------------------------------------- 1 | /' 2 | # KIM 1.5 3 | # Account Manager 4 | # Sequence Diagram 5 | # Name: Operation kas mail empfangen 6 | '/ 7 | 8 | @startuml 9 | skinparam sequenceMessageAlign direction 10 | skinparam minClassWidth 200 11 | skinparam BoxPadding 15 12 | skinparam sequenceReferenceHeaderBackgroundColor palegreen 13 | scale max 2048 width 14 | hide footbox 15 | 16 | skinparam sequence { 17 | ArrowColor black 18 | ArrowFontSize 17 19 | ActorBorderColor black 20 | LifeLineBorderColor black 21 | LifeLineBackgroundColor Gainsboro 22 | 23 | ParticipantBorderColor Motivation 24 | ParticipantBackgroundColor Motivation 25 | ParticipantFontSize 20 26 | ParticipantFontColor black 27 | ParticipantBorderColor Black 28 | ParticipantBackgroundColor MOTIVATION 29 | 30 | ActorBackgroundColor Gainsboro 31 | ActorFontColor black 32 | ActorFontSize 20 33 | ActorFontName Aapex 34 | } 35 | actor L as "Leistungserbringer" 36 | box Primärsystem\n #WhiteSmoke 37 | participant P as "PVS/KIS/Mailclient" 38 | end box 39 | box Clientmodul\n #WhiteSmoke 40 | participant KM as "KIM-Dienst" 41 | end box 42 | box Fachdienst\n #WhiteSmoke 43 | participant AM as "Account-Manager" 44 | participant K as "KAS" 45 | participant MS as "Mailserver" 46 | end box 47 | 48 | L->P: Mail abrufen 49 | activate P 50 | P->KM: Mail abrufen 51 | activate KM 52 | KM->MS++: receive Message 53 | MS-->KM--: KOM-LE-Mail 54 | KM->KM: E-Mail entschlüsseln und\n Signatur prüfen 55 | KM->KM: Prüfen der KIM-Version 56 | opt KIM-Attachment-Datenstruktur vorhanden 57 | KM->KM: KAS-Informationen aus der\nKIM-Attachment-Datenstruktur\nextrahieren 58 | KM->K: readAttachement 59 | activate K 60 | K->K: Berechtigung prüfen 61 | K->K: verschlüsselte Client-Mail suchen 62 | K-->KM: verschlüsselte Client-Mail 63 | deactivate K 64 | KM->KM: Client-Mail mit dem\nsymmetrischen Schlüssel\nentschlüsseln 65 | KM->KM: Bildung des Hashwertes 66 | KM->KM: Vergleich der Hashwerte 67 | KM->KM: Client-Mail aufbereiten 68 | end 69 | KM-->P: Client-Mail 70 | deactivate K 71 | P-->L: Client-Mail 72 | deactivate P 73 | @enduml 74 | -------------------------------------------------------------------------------- /src/plantuml/Fachdienst/Seq_kas_email_senden.puml: -------------------------------------------------------------------------------- 1 | /' 2 | # KIM 1.5 3 | # Account Manager 4 | # Sequence Diagram 5 | # Name: Operation kas mail senden 6 | '/ 7 | 8 | @startuml 9 | skinparam sequenceMessageAlign direction 10 | skinparam minClassWidth 200 11 | skinparam BoxPadding 15 12 | skinparam sequenceReferenceHeaderBackgroundColor palegreen 13 | scale max 2048 width 14 | hide footbox 15 | 16 | skinparam sequence { 17 | ArrowColor black 18 | ArrowFontSize 17 19 | ActorBorderColor black 20 | LifeLineBorderColor black 21 | LifeLineBackgroundColor Gainsboro 22 | 23 | ParticipantBorderColor Motivation 24 | ParticipantBackgroundColor Motivation 25 | ParticipantFontSize 20 26 | ParticipantFontColor black 27 | ParticipantBorderColor Black 28 | ParticipantBackgroundColor MOTIVATION 29 | 30 | ActorBackgroundColor Gainsboro 31 | ActorFontColor black 32 | ActorFontSize 20 33 | ActorFontName Aapex 34 | } 35 | actor L as "Leistungserbringer" 36 | box Primärsystem\n #WhiteSmoke 37 | participant P as "PVS/KIS/Mailclient" 38 | end box 39 | box Clientmodul\n #WhiteSmoke 40 | participant KM as "KIM-Dienst" 41 | end box 42 | box Fachdienst\n #WhiteSmoke 43 | participant AM as "Account-Manager" 44 | participant K as "KAS" 45 | participant MS as "Mailserver" 46 | end box 47 | 48 | L->P: Email mit großen\n Anhängen erzeugen 49 | activate P 50 | P->KM: E-Mail weiterleiten 51 | activate KM 52 | KM->KM: Prüfen der E-Mailgröße 53 | KM->KM: Prüfen der KIM-Version\n des Empfängers 54 | opt Mailgröße>15 MB 55 | KM->AM: getLimits 56 | activate AM 57 | AM-->KM: Limits 58 | deactivate AM 59 | KM->KM: Erzeugung eines symmetrischen\n Schlüssels für die Mail 60 | KM->KM: Bildung des Hashwertes 61 | KM->KM: Verschlüsselung der Mail \nmit dem symmetrischen Schlüssel 62 | KM->K: add_Maildata (recipients, messageID, expires, verschlüsselte E-Mail) 63 | activate K 64 | K->K: Berechtigung prüfen 65 | K->K: Dateigröße prüfen 66 | K->K: Freigabelink erzeugen 67 | K->K: E-Mail Daten ablegen 68 | K-->KM: Freigabelink 69 | deactivate K 70 | KM->KM: KIM-Attachment-Datenstruktur \nim Body der KOM-LE-Mail einfügen 71 | end 72 | KM->KM: KOM-LE-Mail signieren \nund asymmetrisch verschlüsseln 73 | KM->MS++: send Message 74 | MS-->KM--: status 75 | KM-->P:status 76 | deactivate KM 77 | P-->L:status 78 | deactivate P 79 | @enduml 80 | -------------------------------------------------------------------------------- /src/plantuml/Int_PS-KIM.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | /' 3 | # KIM 1.5.x 4 | # Primaersystemleitfaden 5 | # KIM Schnittstellen 6 | '/ 7 | 8 | 9 | skinparam actorStyle awesome 10 | left to right direction 11 | scale 6/3 12 | 13 | skinparam sequence { 14 | ArrowColor black 15 | ArrowFontSize 17 16 | ActorBorderColor black 17 | LifeLineBorderColor black 18 | LifeLineBackgroundColor Gainsboro 19 | 20 | skinparam component { 21 | FontSize 10 22 | BackgroundColor<> LightCoral 23 | BorderColor<> #FF6655 24 | FontName Courier 25 | BorderColor black 26 | BackgroundColor gold 27 | ArrowFontName Impact 28 | ArrowFontSize 8 29 | ArrowColor #FF6655 30 | ArrowFontColor #777777 31 | } 32 | 33 | ParticipantBorderColor Motivation 34 | ParticipantBackgroundColor Motivation 35 | ParticipantFontName Impact 36 | ParticipantFontSize 20 37 | ParticipantFontColor black 38 | ParticipantBorderColor Black 39 | ParticipantBackgroundColor MOTIVATION 40 | 41 | ActorBackgroundColor Gainsboro 42 | ActorFontColor black 43 | ActorFontSize 13 44 | ActorFontName Aapex 45 | } 46 | 47 | package SchnittstellenPS-KIM { 48 | [Primärsystem] ..> [POP3-Proxy\n[KIM-Clientmodul]] :use 49 | [Primärsystem] ..> [SMTP-Proxy\n[KIM-Clientmodul]] :use 50 | [Primärsystem] ..> [LDAPv3-Proxy\n[Konnektor]] :use 51 | [LDAPv3-Proxy\n[Konnektor]] ..> [Verzeichnisdienst] :use 52 | [SMTP-Proxy\n[KIM-Clientmodul]] ..> [Verzeichnisdienst] :use 53 | [POP3-Proxy\n[KIM-Clientmodul]] ..> [KIM-Provider] :use 54 | [SMTP-Proxy\n[KIM-Clientmodul]] ..> [KIM-Provider] :use 55 | } 56 | 57 | @enduml -------------------------------------------------------------------------------- /src/plantuml/UC_PS-KIM.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | /' 3 | # KIM 1.5.x 4 | # Primaersystemleitfaden 5 | # Use Case Diagram 6 | # Anwendungsfaelle 7 | '/ 8 | 9 | 10 | skinparam actorStyle awesome 11 | left to right direction 12 | scale 6/3 13 | 14 | skinparam sequence { 15 | ArrowColor black 16 | ArrowFontSize 17 17 | ActorBorderColor black 18 | LifeLineBorderColor black 19 | LifeLineBackgroundColor Gainsboro 20 | 21 | ParticipantBorderColor Motivation 22 | ParticipantBackgroundColor Motivation 23 | ParticipantFontName Impact 24 | ParticipantFontSize 20 25 | ParticipantFontColor black 26 | ParticipantBorderColor Black 27 | ParticipantBackgroundColor MOTIVATION 28 | 29 | ActorBackgroundColor Gainsboro 30 | ActorFontColor black 31 | ActorFontSize 13 32 | ActorFontName Aapex 33 | } 34 | 35 | package Clientsystem { 36 | actor "Leistungserbringer" as le 37 | } 38 | 39 | package Anwendungsfälle { 40 | usecase "Empfänger ermitteln" as UC1 #AliceBlue 41 | usecase "Nachricht generieren \nund übernehmen" as UC2 #AliceBlue 42 | usecase "Nachricht versenden" as UC3 #AliceBlue 43 | usecase "Nachricht empfangen" as UC4 #AliceBlue 44 | } 45 | 46 | le --> UC1 47 | le --> UC2 48 | le --> UC3 49 | le --> UC4 50 | 51 | @enduml -------------------------------------------------------------------------------- /src/plantuml/architecture/KIM, receive 500MB, proof of concept.puml: -------------------------------------------------------------------------------- 1 | @startuml "KIM Anwendungsfall 500MB senden" 2 | skinparam sequenceMessageAlign direction 3 | skinparam minClassWidth 200 4 | skinparam BoxPadding 1 5 | skinparam sequenceReferenceHeaderBackgroundColor palegreen 6 | scale max 2048 width 7 | 8 | skinparam sequence { 9 | ArrowColor black 10 | ArrowFontSize 17 11 | ActorBorderColor black 12 | LifeLineBorderColor black 13 | LifeLineBackgroundColor Gainsboro 14 | 15 | ParticipantBorderColor Motivation 16 | ParticipantBackgroundColor Motivation 17 | ParticipantFontName Impact 18 | ParticipantFontSize 20 19 | ParticipantFontColor black 20 | ParticipantBorderColor Black 21 | ParticipantBackgroundColor MOTIVATION 22 | 23 | ActorBackgroundColor Gainsboro 24 | ActorFontColor black 25 | ActorFontSize 20 26 | ActorFontName Aapex 27 | } 28 | 29 | actor u as "User" 30 | participant mc as "Mail-Client" 31 | participant cm as "Clientmodul" 32 | participant kon as "Konnektor" 33 | participant kas as "KAS" 34 | participant ms as "Mailserver" 35 | participant vzd as "VZD" 36 | 37 | activate mc 38 | mc -> cm: POP3 (STAT, LIST) 39 | activate cm 40 | cm -> ms: POP3 (STAT, LIST) 41 | activate ms 42 | ms --> cm: POP3 OK Message list 43 | cm --> mc: POP3 OK Message list 44 | mc -> cm: POP3 RETR 1 45 | group #WhiteSmoke Mailclient and Mailserver must wait, keep alive required 46 | cm -> ms: POP3 RETR 1 47 | ms --> cm: POP3 OK Message 1 48 | cm -> kon: decryptDocument (KIM-Mail) 49 | kon --> cm: decrypted KIM-Mail 50 | cm -> kon: verifyDocument (decrypted KIM-Mail) 51 | kon --> cm: verificationStatus 52 | cm -> cm: process KIM-Mail\nextract KAS download url\nextract symmetric key 53 | cm -> kas: HTTP download from url 54 | activate kas 55 | kas --> cm: encrypted E-Mail data 56 | deactivate kas 57 | cm -> cm: decrypt encrypted E-Mail data\nwith symmetric key 58 | cm -> cm: create hash and\nverify with KAS hash value 59 | cm --> mc: POP3 OK decrypted Message 1 60 | end 61 | deactivate cm 62 | deactivate ms 63 | 64 | @enduml -------------------------------------------------------------------------------- /src/plantuml/architecture/KIM, send 500MB, proof of concept.puml: -------------------------------------------------------------------------------- 1 | @startuml "KIM Anwendungsfall 500MB senden" 2 | skinparam sequenceMessageAlign direction 3 | skinparam minClassWidth 200 4 | skinparam BoxPadding 1 5 | skinparam sequenceReferenceHeaderBackgroundColor palegreen 6 | scale max 2048 width 7 | 8 | skinparam sequence { 9 | ArrowColor black 10 | ArrowFontSize 17 11 | ActorBorderColor black 12 | LifeLineBorderColor black 13 | LifeLineBackgroundColor Gainsboro 14 | 15 | ParticipantBorderColor Motivation 16 | ParticipantBackgroundColor Motivation 17 | ParticipantFontName Impact 18 | ParticipantFontSize 20 19 | ParticipantFontColor black 20 | ParticipantBorderColor Black 21 | ParticipantBackgroundColor MOTIVATION 22 | 23 | ActorBackgroundColor Gainsboro 24 | ActorFontColor black 25 | ActorFontSize 20 26 | ActorFontName Aapex 27 | } 28 | 29 | actor u as "User" 30 | participant mc as "Mail-Client" 31 | participant cm as "Clientmodul" 32 | participant kon as "Konnektor" 33 | participant kas as "KAS" 34 | participant ms as "Mailserver" 35 | participant vzd as "VZD" 36 | 37 | u -> mc: compose E-Mail\n(with big attachment 500MB) 38 | activate mc 39 | u -> mc: E-Mail senden 40 | mc -> cm: SMTP (MAIL from, RCPT to, DATA) 41 | activate cm 42 | cm -> ms: SMTP (MAIL from, RCPT to, DATA) 43 | activate ms 44 | ms --> cm: SMTP START 45 | group #WhiteSmoke Mailserver must wait, keep alive required 46 | cm --> mc: SMTP START 47 | mc -> cm: send E-Mail data 48 | mc -> cm: send "." + CRLF 49 | mc -> cm: SMTP QUIT 50 | deactivate mc 51 | cm -> vzd: LDAP query mail=to 52 | vzd --> cm: LDAP entry with komLeData 53 | cm -> cm: to-address has KIM-version "1.5+" 54 | cm -> cm: create symmetric key 55 | cm -> cm: encrypt E-Mail data 56 | cm -> kas: http upload encrypted E-Mail data 57 | activate kas 58 | kas --> cm: http response with KAS download url 59 | deactivate kas 60 | cm -> cm: create new E-Mail with\nKIM attachment data structure 61 | cm -> kon: signDocument(new E-Mail) 62 | activate kon 63 | kon --> cm: new E-Mail with signature 64 | cm -> kon: encryptDocument(new E-Mail with signature) 65 | kon --> cm: encrypted KIM-Mail 66 | deactivate kon 67 | cm -> ms: send KIM-Mail 68 | end 69 | cm -> ms: send "." + CRLF 70 | cm -> ms: SMTP QUIT 71 | deactivate cm 72 | deactivate ms 73 | 74 | @enduml -------------------------------------------------------------------------------- /src/plantuml/eMail_status_empfangen.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | scale max 2048 width 3 | 4 | state "KOM-LE Mail empfangen" as rkm 5 | rkm: do / Entschlüsselung des Mail Bodys 6 | rkm: do / Prüfung der Signatur 7 | rkm: exit / Entschlüsselung erfolgreich abgeschlossen 8 | 9 | state "KOM-LE Mail prozessiert" as dkm 10 | dkm: do / Auslesen der KIM-Attachment Struktur 11 | dkm: do / Binary vom KAS herunterladen 12 | dkm: exit / Download erfolgreich 13 | 14 | state "Client-Mail heruntergeladen" as kdcm 15 | kdcm: do / Entschlüsselung der heruntergeladenen Mail-Daten 16 | kdcm: do / Prüfen der Signatur der heruntergeladenen Mail 17 | kdcm: do / Integritätsprüfung 18 | kdcm: do / Nachverarbeitung (z.B. hinzufügen der KIM-header Felder) 19 | kdcm: exit / Nachverarbeitung abgeschlossen 20 | 21 | state "Client-Mail finalisiert" as cm 22 | cm: do / Übermittlung der Client-Mail an das Client-System 23 | cm: exit / Übermittlung erfolgreich abgeschlossen 24 | 25 | [*] -d-> rkm : POP3 Abruf vom Fachdienst 26 | rkm -d-> dkm 27 | dkm -d-> kdcm 28 | kdcm -d-> cm 29 | cm -d-> [*] 30 | 31 | @enduml 32 | -------------------------------------------------------------------------------- /src/plantuml/eMail_status_senden.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | scale max 2048 width 3 | 4 | state "Client-Mail empfangen" as cm 5 | cm : do / decodiere Base64 6 | cm : exit / finished decoding 7 | 8 | state "Client-Mail prozessiert" as dcm 9 | dcm: do / Integritätsprüfung 10 | dcm: do / Mailgröße bestimmen 11 | dcm: do / KIM header hinzufügen 12 | dcm: exit / Verarbeitung der Client Mail abgeschlossen 13 | 14 | state "Client-Mail hochgeladen" as cmcm 15 | cmcm: do / erstelle Kopie der prozessierten Client-Mal als Basis für die KOM-LE Mail 16 | cmcm: do / signiere und verschlüssele die prozessierte Client-Mail 17 | cmcm: do / upload des verschlüsselten Binaries auf den KAS 18 | cmcm: do / ersetze den Mail body in der Basis für die KOM-LE Mail mit der KIM-Attachment Struktur 19 | cmcm: exit / initiale KOM-LE Mail erstellt 20 | 21 | state "KOM-LE Mail finalisiert" as ckm 22 | ckm: do / hinzufügen der Header mit Versionsinformationen(Konnektor, Clientmodul, Produkttyp) 23 | ckm: do / signiere und verschlüssle den Mail Body 24 | ckm: exit / finale KOM-LE Mail erstellt 25 | 26 | [*] -d-> cm 27 | cm -d-> dcm 28 | dcm -d-> cmcm 29 | cmcm -d-> ckm 30 | ckm -d-> [*] : Versand an den Fachdienst 31 | 32 | @enduml 33 | -------------------------------------------------------------------------------- /src/schema/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gematik/api-kim/eddf625807846385f9d1e6e90854ffd05b7cb36c/src/schema/.gitkeep -------------------------------------------------------------------------------- /src/schema/Attachment_schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Structure of Attachment", 3 | "type": "object", 4 | "properties": 5 | { 6 | "link": { "type": "string" }, 7 | "k": { "type": "string" }, 8 | "hash": { "type": "string" }, 9 | "size": { "type": "integer" } 10 | }, 11 | "required": ["link", "k", "hash", "size"] 12 | } 13 | --------------------------------------------------------------------------------