﻿*
  KONZEPT – SÄMTLICHE INHALTE UNTER ÄNDERUNGSVORBEHALT !

  Kontakt:
  Robert Koch-Institut
  Nordufer 20
  13353 Berlin

  E-Mail: Vertrauensstelle-IRD@rki.de
*/

* Version techn. Spec: 1.2 */

{
  "openapi": "3.0.1",
  "info": {
    "title": "VIRD Service für die Übertragung von Vitalstatus-Meldungen sowie Anfragen dazu, dem Abruf von asynchronen Fehlern, die bei der Verarbeitung von Daten aufgetreten sind, sowie die Information von Anonymisierungen von Versicherten in der Vertrauensstelle und der Registerstelle",
    "version": "v1"
  },
  "paths": {
    "/api/v1/anonymizationnotifications": {
      "get": {
        "summary": "Gibt die Info über die Anonymisierung von Versicherten in der Registerstelle und der Vertrauensstelle zurück",
        "responses": {
          "200": {
            "description": "Die Operation wurde erfolgreich abgeschlossen",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnonymizationNotificationsBundle"
                }
              }
            }
          },
          "204": {
            "description": "Es sind keine Daten vorhanden"
          },
          "401": {
            "description": "Die Authentifizierung an der Schnittstelle ist fehlgeschlagen"
          },
          "403": {
            "description": "Die Anfrage war nicht autorisiert"
          },
          "500": {
            "description": "Es ist ein interner Fehler bei der Verarbeitung aufgetreten"
          }
        }
      }
    },
    "/api/v1/vitalstatusnotification": {
      "post": {
        "summary": "Speichert eine Datenlieferung von Vitalstatus-Meldungen",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VitalStatusNotificationBundle"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Die Operation wurde erfolgreich abgeschlossen"
          },
          "400": {
            "description": "Es wurde eine fehlerhafte Nachricht gesendet"
          },
          "401": {
            "description": "Die Authentifizierung an der Schnittstelle ist fehlgeschlagen"
          },
          "403": {
            "description": "Die Anfrage war nicht autorisiert"
          },
          "415": {
            "description": "Es wurde ein falscher Content-Type gesendet"
          },
          "500": {
            "description": "Es ist ein interner Fehler bei der Verarbeitung aufgetreten"
          }
        }
      }
    },
    "/api/v1/vitalstatusnotification/requests": {
      "get": {
        "summary": "Gibt Anfragen zu Vitalstatus-Meldungen von Versicherten zurück",
        "responses": {
          "200": {
            "description": "Die Operation wurde erfolgreich abgeschlossen",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestsForVitalStatusNotificationBundle"
                }
              }
            }
          },
          "204": {
            "description": "Es sind keine Daten vorhanden"
          },
          "401": {
            "description": "Die Authentifizierung an der Schnittstelle ist fehlgeschlagen"
          },
          "403": {
            "description": "Die Anfrage war nicht autorisiert"
          },
          "500": {
            "description": "Es ist ein interner Fehler bei der Verarbeitung aufgetreten"
          }
        }
      }
    },
    "/api/v1/vitalstatusnotification/processingerrors": {
      "get": {
        "summary": "Gibt Fehler zurück, die bei der Verarbeitung von Vitalstatus-Meldungen auf Seiten der Vertrauensstelle oder der Registerstelle aufgetreten sind",
        "responses": {
          "200": {
            "description": "Die Operation wurde erfolgreich abgeschlossen",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VitalStatusNotificationProcessingErrorsBundle"
                }
              }
            }
          },
          "204": {
            "description": "Es sind keine Daten vorhanden"
          },
          "401": {
            "description": "Die Authentifizierung an der Schnittstelle ist fehlgeschlagen"
          },
          "403": {
            "description": "Die Anfrage war nicht autorisiert"
          },
          "500": {
            "description": "Es ist ein interner Fehler bei der Verarbeitung aufgetreten"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AnonymizationNotification": {
        "required": [
          "IdVersicherter"
        ],
        "type": "object",
        "properties": {
          "IdVersicherter": {
            "type": "string",
            "format": "byte"
          }
        },
        "additionalProperties": false
      },
      "AnonymizationNotificationsBundle": {
        "required": [
          "Anonymisierungen",
          "Signatur"
        ],
        "type": "object",
        "properties": {
          "Anonymisierungen": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnonymizationNotification"
            },
            "description": "Liste der Anonymisierungen"
          },
          "Signatur": {
            "type": "string",
            "description": "Signatur über die Daten",
            "format": "byte"
          }
        },
        "additionalProperties": false
      },
      "RequestForVitalStatusNotification": {
        "required": [
          "IdVersicherter"
        ],
        "type": "object",
        "properties": {
          "IdVersicherter": {
            "type": "string",
            "format": "byte"
          }
        },
        "additionalProperties": false
      },
      "RequestsForVitalStatusNotificationBundle": {
        "required": [
          "Anfragen",
          "Signatur"
        ],
        "type": "object",
        "properties": {
          "Anfragen": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RequestForVitalStatusNotification"
            },
            "description": "Liste der Anfragen"
          },
          "Signatur": {
            "type": "string",
            "description": "Signatur über die Daten",
            "format": "byte"
          }
        },
        "additionalProperties": false
      },
      "VitalStatusNotification": {
        "required": [
          "IdDatensatz",
          "IdVersicherter",
          "Sterbedatum",
          "Vitalstatus"
        ],
        "type": "object",
        "properties": {
          "IdDatensatz": {
            "type": "string",
            "description": "Definiert die eindeutige Id eines Datensatzes innerhalb dieser Meldung."
          },
          "IdVersicherter": {
            "type": "string",
            "description": "Identifikator des Versicherten. Dieser Wert ist für die VST verschlüsselt.",
            "format": "byte"
          },
          "Vitalstatus": {
            "type": "string",
            "description": "Der Vitalstatus des Versicherten. Dieser Wert ist für die RST verschlüsselt.",
            "format": "byte"
          },
          "Sterbedatum": {
            "type": "string",
            "description": "Sterbedatum des Versicherten. Dieser Wert ist für die RST verschlüsselt.",
            "format": "byte"
          }
        },
        "additionalProperties": false,
        "description": "Definiert einen Datensatz zu einem Vitalstatus eines Versicherten"
      },
      "VitalStatusNotificationBundle": {
        "required": [
          "IdDatenlieferung",
          "Meldungen",
          "Signatur"
        ],
        "type": "object",
        "properties": {
          "IdDatenlieferung": {
            "type": "string",
            "description": "Definiert die eindeutige Id der Datenlieferung"
          },
          "Meldungen": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VitalStatusNotification"
            },
            "description": "Die Liste der Meldungen"
          },
          "Signatur": {
            "type": "string",
            "description": "Signatur über die Angaben der Datenlieferung.",
            "format": "byte"
          }
        },
        "additionalProperties": false,
        "description": "Definiert eine Datenlieferung von Vitalstatus-Meldungen"
      },
      "VitalStatusNotificationProcessingErrorResult": {
        "required": [
          "Code",
          "IdDatenlieferung",
          "IdDatensatz"
        ],
        "type": "object",
        "properties": {
          "IdDatenlieferung": {
            "type": "string",
            "description": "Eindeutige Id der Datenlieferung zurück"
          },
          "IdDatensatz": {
            "type": "string",
            "description": "Eindeutige Id des Datensatzes innerhalb einer Datenlieferung"
          },
          "Code": {
            "$ref": "#/components/schemas/VitalStatusNotificationProcessingErrorResultCode"
          }
        },
        "additionalProperties": false,
        "description": "Definiert einen Fehler, der bei der Verarbeitung eines Datensatzes aufgetreten ist"
      },
      "VitalStatusNotificationProcessingErrorResultCode": {
        "enum": [
          "DecryptionError",
          "WrongFormatIdVersicherter",
          "DuplicateIdVersicherter"
        ],
        "type": "string",
        "description": "Definiert einen Fehlercode, der bei der Verarbeitung eines Datensatzes aufgetreten ist"
      },
      "VitalStatusNotificationProcessingErrorsBundle": {
        "required": [
          "Fehler",
          "Signatur"
        ],
        "type": "object",
        "properties": {
          "Fehler": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VitalStatusNotificationProcessingErrorResult"
            },
            "description": "Liste der Fehler"
          },
          "Signatur": {
            "type": "string",
            "description": "Signatur über die Daten",
            "format": "byte"
          }
        },
        "additionalProperties": false
      }
    }
  }
}