All Downloads are FREE. Search and download functionalities are using the official Maven repository.

metadata-schemas.metadata_schema_1.3.0.json Maven / Gradle / Ivy

Go to download

Library that provides client access to the FIT-Connect api-endpoints for sending, subscribing and routing

The newest version!
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://schema.fitko.de/fit-connect/metadata/1.3.0/metadata.schema.json",
  "type": "object",
  "title": "Metadaten",
  "description": "",
  "required": [
    "contentStructure"
  ],
  "properties": {
    "$schema": {
      "description": "URI des Schemas, dem diese Metadaten entsprechen. Zulässig sind alle Schema-URLs mit enthaltener Version 1.x.y, wobei x und y beliebige Minor- und Patch-Versionen gemäß https://semver.org/ sein können.",
      "type": "string",
      "pattern": "^https://schema\\.fitko\\.de/fit-connect/metadata/1\\.\\d+\\.\\d+/metadata\\.schema\\.json$"
    },
    "contentStructure": {
      "description": "Beschreibt die Struktur der zusätzlichen Inhalte der Einreichung, wie Anlagen oder Fachdaten.",
      "type": "object",
      "required": [
        "attachments"
      ],
      "properties": {
        "data": {
          "description": "Definiert das Schema und die Signatur(-art), die für die Fachdaten verwendet werden.",
          "type": "object",
          "required": [
            "hash",
            "submissionSchema"
          ],
          "properties": {
            "hash": {
              "$ref": "#/properties/contentStructure/$defs/hash"
            },
            "signature": {
              "$ref": "#/properties/contentStructure/$defs/signature"
            },
            "submissionSchema": {
              "title": "Fachdatenschema",
              "description": "Referenz auf ein Schema, das die Struktur der Fachdaten einer Einreichung beschreibt.",
              "type": "object",
              "required": [
                "schemaUri",
                "mimeType"
              ],
              "properties": {
                "schemaUri": {
                  "type": "string",
                  "format": "uri",
                  "description": "URI des Fachschemas. Wird hier eine URL verwendet, sollte das Schema unter der angegebenen URL abrufbar sein. Eine Verfügbarkeit des Schemas unter der angegebenen URL darf jedoch nicht vorausgesetzt werden."
                },
                "mimeType": {
                  "type": "string",
                  "description": "Mimetype (z.B. application/json oder application/xml) des referenzierten Schemas (z.B. XSD- oder JSON-Schema).",
                  "enum": [
                    "application/json",
                    "application/xml"
                  ]
                }
              }
            }
          }
        },
        "attachments": {
          "type": "array",
          "items": {
            "type": "object",
            "description": "Eine in der Einreichung enthaltene Anlage.",
            "required": [
              "hash",
              "purpose",
              "mimeType",
              "attachmentId"
            ],
            "properties": {
              "hash": {
                "$ref": "#/properties/contentStructure/$defs/hash"
              },
              "signature": {
                "$ref": "#/properties/contentStructure/$defs/signature"
              },
              "purpose": {
                "description": "Zweck/Art der Anlage\n- form: Automatisch generierte PDF-Repräsentation des vollständigen Antragsformulars\n- attachment: Anlage, die von einem Bürger hochgeladen wurde\n- report: Vom Onlinedienst, nachträglich erzeugte Unterlage",
                "type": "string",
                "enum": [
                  "form",
                  "attachment",
                  "report"
                ]
              },
              "filename": {
                "type": "string",
                "description": "Ursprünglicher Dateiname bei Erzeugung oder Upload"
              },
              "description": {
                "type": "string",
                "description": "Optionale Beschreibung der Anlage"
              },
              "mimeType": {
                "type": "string",
                "title": "MIME Type",
                "description": "Internet Media Type gemäß RFC 2045, z. B. application/pdf.",
                "examples": [
                  "application/xml"
                ],
                "pattern": "^[-\\w.]+/[-\\w.+]+$"
              },
              "attachmentId": {
                "type": "string",
                "description": "Global eindeutige ID der Anlage im Format einer UUIDv4.",
                "format": "uuid",
                "minLength": 32,
                "maxLength": 36
              },
              "fragments": {
                "type": "array",
                "uniqueItems": true,
                "description": "UUIDs der Fragmente dieses Attachments.",
                "minContains": 1,
                "contains": {
                  "type": "string"
                },
                "items": {
                  "type": "string",
                  "format": "uuid",
                  "minLength": 32,
                  "maxLength": 36
                }
              }
            }
          }
        }
      },
      "$defs": {
        "hash": {
          "type": "object",
          "title": "Hashwert",
          "description": "Der Hashwert der unverschlüsselten Fachdaten/Anlage. Die Angabe des Hashwertes dient der Integritätssicherung des Gesamtantrags und schützt vor einem Austausch der Daten durch Systeme zwischen Sender und Subscriber (z.B. dem Zustelldienst).",
          "required": [
            "type",
            "content"
          ],
          "properties": {
            "type": {
              "type": "string",
              "description": "Der verwendete Hash-Algorithmus. Derzeit ist nur `sha512` erlaubt.",
              "enum": [
                "sha512"
              ]
            },
            "content": {
              "type": "string",
              "description": "Der Hex-kodierte Hashwert gemäß des angegebenen Algorithmus.",
              "pattern": "^[a-f0-9]{128}$"
            }
          }
        },
        "signature": {
          "type": "object",
          "description": "Beschreibt das Signaturformat und Profile",
          "examples": [],
          "properties": {
            "signatureFormat": {
              "type": "string",
              "description": "Beschreibt, welches Signaturformat die genutzte Signatur / das genutzte Siegel nutzt. Aktuell wird die Hinterlegung folgender Signaturformate unterstützt: CMS = Cryptographic Message Syntax, Asic = Associated Signature Containers, PDF = PDF Signatur, XML = XML-Signature, JSON = JSON Web Signature. ",
              "enum": [
                "cms",
                "xml",
                "pdf",
                "asic",
                "json"
              ]
            },
            "eidasAdesProfile": {
              "type": "string",
              "description": "Referenziert ein eindeutiges Profil einer AdES (advanced electronic signature/seal) gemäß eIDAS-Verordnung über eine URI gemäß [ETSI TS 119 192](https://www.etsi.org/deliver/etsi_ts/119100_119199/119192/01.01.01_60/ts_119192v010101p.pdf).\n\nFür die Details zur Verwendung und Validierung von Profilen siehe auch https://ec.europa.eu/cefdigital/DSS/webapp-demo/doc/dss-documentation.html#_signatures_profile_simplification",
              "enum": [
                "http://uri.etsi.org/ades/191x2/level/baseline/B-B#",
                "http://uri.etsi.org/ades/191x2/level/baseline/B-T#",
                "http://uri.etsi.org/ades/191x2/level/baseline/B-LT#",
                "http://uri.etsi.org/ades/191x2/level/baseline/B-LTA#"
              ]
            },
            "detachedSignature": {
              "type": "boolean",
              "description": "Beschreibt, ob die Signatur als separate (detached) Signatur (`true`) oder als Teil des Fachdatensatzes bzw. der Anlage  (`false`) übertragen wird. Wenn der Wert `true` ist, dann wird die Signatur Base64- oder Base64Url-kodiert im Feld `content` übertragen."
            },
            "content": {
              "type": "string",
              "description": "Hier wird die Signatur im Falle einer Detached-Signatur als Base64- oder Base64Url-kodierte Zeichenkette hinterlegt. Eine Base64Url-Kodierung kommt nur bei Einsatz von JSON Web Signatures (JWS / JAdES) zum Einsatz.",
              "pattern": "^[a-zA-Z0-9+/=]+|[a-zA-Z0-9_-]+$"
            }
          },
          "required": [
            "signatureFormat",
            "detachedSignature"
          ]
        }
      }
    },
    "publicServiceType": {
      "deprecated": true,
      "type": "object",
      "title": "Verwaltungsleistung",
      "description": "Beschreibung der Art der Verwaltungsleistung. Eine Verwaltungsleistung sollte immer mit einer LeiKa-Id beschrieben werden. Ist für die gegebene Verwaltungsleistung keine LeiKa-Id vorhanden, kann die Verwaltungsleistung übergangsweise über die Angabe einer anderen eindeutigen Schema-URN beschrieben werden.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name/Bezeichnung der Verwaltungsleistung"
        },
        "description": {
          "type": "string",
          "description": "(Kurz-)Beschreibung der Verwaltungsleistung"
        },
        "identifier": {
          "title": "Leistungs-Identifikator",
          "description": "URN einer Leistung. Im Falle einer Leistung aus dem Leistungskatalog sollte hier `urn:de:fim:leika:leistung:` vorangestellt werden.",
          "type": "string",
          "minLength": 7,
          "maxLength": 255,
          "pattern": "^urn:[a-z0-9][a-z0-9-]{0,31}:[a-z0-9()+,.:=@;$_!*'%/?#-]+$"
        }
      },
      "required": [
        "identifier"
      ]
    },
    "authenticationInformation": {
      "description": "Eine Liste aller Identifikationsnachweise der Einreichung.",
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "description": "Eine Struktur, die einen Identifikationsnachweis beschreibt.",
        "properties": {
          "type": {
            "description": "Definiert die Art des Identifikationsnachweises.",
            "type": "string",
            "enum": [
              "identificationReport"
            ]
          },
          "version": {
            "type": "string",
            "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$",
            "description": "semver kompatible Versionsangabe des genutzten Nachweistyps."
          },
          "content": {
            "type": "string",
            "description": "Der Nachweis wird als Base64Url-kodierte Zeichenkette angegeben.",
            "pattern": "^[a-zA-Z0-9_\\-.]+$"
          }
        },
        "required": [
          "type",
          "version",
          "content"
        ]
      }
    },
    "paymentInformation": {
      "description": "Dieses Objekt enthält die Informationen vom Bezahldienst.",
      "type": "object",
      "required": [
        "transactionReference",
        "transactionId",
        "paymentMethod",
        "status"
      ],
      "properties": {
        "transactionUrl": {
          "type": "string",
          "format": "uri",
          "minLength": 1,
          "examples": [
            "https://payment.bundesland.zzzz/api/v1/paymenttransaction/12002312/MELD-ANT-FORM-4711/9xxd-432x-6543-xfd6-gfdx-fd27"
          ],
          "description": "Die Rest-URL der Payment Transaction für die Statusabfrage."
        },
        "transactionId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 36,
          "pattern": "^[\\w\\d-]+$",
          "examples": [
            "9xxd-432x-6543-xfd6-gfdx-fd27"
          ],
          "description": "Eine vom Bezahldienst vergebene Transaktions-Id."
        },
        "transactionReference": {
          "type": "string",
          "description": "Bezahlreferenz bzw. Verwendungszweck, wie z. B. ein Kassenzeichen."
        },
        "transactionTimestamp": {
          "type": "string",
          "format": "date-time",
          "description": "Zeitstempel der erfolgreichen Durchführung der Bezahlung."
        },
        "paymentMethod": {
          "type": "string",
          "enum": [
            "GIROPAY",
            "PAYDIRECT",
            "CREDITCARD",
            "PAYPAL",
            "INVOICE",
            "OTHER"
          ],
          "examples": [
            "CREDITCARD"
          ],
          "description": "Die vom Benutzer ausgewählte Zahlart. Das Feld ist nur bei einer erfolgreichen Zahlung vorhanden / befüllt."
        },
        "paymentMethodDetail": {
          "type": "string",
          "minLength": 1,
          "maxLength": 36,
          "pattern": "^[\\w\\d-]+$",
          "examples": [
            "Visa"
          ],
          "description": "Weitere Erläuterung zur gewählten Zahlart."
        },
        "status": {
          "type": "string",
          "enum": [
            "INITIAL",
            "BOOKED",
            "FAILED",
            "CANCELED"
          ],
          "description": "- INITIAL - der Einreichung hat einen Payment-Request ausgelöst und eine Payment-Transaction wurde angelegt. Der Nutzer hat aber im Bezahldienst noch keine Wirkung erzeugt.\n- BOOKED - der Nutzer hat die Bezahlung im Bezahldienst autorisiert.\n- FAILED - der Vorgang wurde vom Bezahldienst aufgrund der Nutzereingaben abgebrochen.\n- CANCELED - der Nutzer hat die Bezahlung im Bezahldienst abgebrochen."
        },
        "grossAmount": {
          "type": "number",
          "minimum": 0.01,
          "multipleOf": 0.01,
          "description": "Bruttobetrag"
        }
      }
    },
    "replyChannel": {
      "title": "Rückkanäle",
      "description": "Informationen zu den durch die Antragsteller:in gewünschten Rückkanälen. Die gewählten Rückkanäle sollten eine Untermenge der in einem Zustellpunkt hinterlegten Rückkanäle (`replyChannels`) entsprechen. Wenn zum Beispiel in einem Zustellpunkt die Rückkanäle `eMail` und `elster` hinterlegt sind, dann kann der Sender E-Mail oder Elster wählen oder aber keinen Rückkanal. Falls kein Rückkanal gewählt wird, wird der Briefweg verwendet.",
      "type": "object",
      "minProperties": 1,
      "maxProperties": 1,
      "properties": {
        "eMail": {
          "type": "object",
          "properties": {
            "address": {
              "type": "string",
              "format": "email"
            },
            "pgpPublicKey": {
              "type": "string",
              "description": "Hilfe zur Erstellung gibt es in der Dokumentation unter https://docs.fitko.de/fit-connect/docs/metadata/replyChannel",
              "pattern": "^-----BEGIN PGP PUBLIC KEY BLOCK-----\\n\\n"
            }
          },
          "required": [
            "address"
          ]
        },
        "deMail": {
          "type": "object",
          "description": "Akkreditierte Anbieter siehe https://www.bsi.bund.de/DE/Themen/Oeffentliche-Verwaltung/Moderner-Staat/De-Mail/Akkreditierte-DMDA/akkreditierte-dmda_node.html",
          "properties": {
            "address": {
              "type": "string",
              "format": "email"
            }
          },
          "required": [
            "address"
          ]
        },
        "fink": {
          "type": "object",
          "description": "Postfachadresse in einem interoperablen Servicekonto (FINK.PFISK)",
          "properties": {
            "finkPostfachRef": {
              "type": "string",
              "description": "FINK Postfachadresse",
              "examples": [
                "hh/by/12345"
              ],
              "maxLength": 150,
              "pattern": "^[-._a-z0-9~/]*$"
            },
            "host": {
              "type": "string",
              "description": "URL des Servicekontos, in dem das Ziel-Postfach liegt",
              "format": "uri",
              "examples": [
                "https://servicekonto1.example.com/"
              ]
            }
          },
          "required": [
            "finkPostfachRef"
          ]
        },
        "elster": {
          "type": "object",
          "description": "Siehe https://www.elster.de/elsterweb/infoseite/elstertransfer_hilfe_schnittstellen",
          "properties": {
            "accountId": {
              "type": "string"
            },
            "lieferTicket": {
              "type": "string"
            },
            "geschaeftszeichen": {
              "type": "string",
              "maxLength": 10
            }
          },
          "required": [
            "accountId"
          ]
        },
        "fitConnect": {
          "type": "object",
          "description": "Hiermit kann den sendenden Systemen signalisiert werden, dass die empfangende Stelle für Einreichungen an diesen Zustellpunkt eine Rückkanalkommunikation per FIT-Connect unterstützt.",
          "required": [
            "processStandards",
            "encryptionPublicKey"
          ],
          "properties": {
            "processStandards": {
              "description": "Hier ist eine eindeutige Referenz auf den zu verwendenden Datenaustauschstandard (einschließlich der Version) mittels der offiziellen URI des Datenaustauschstandards zu hinterlegen.",
              "type": "array",
              "minItems": 1,
              "items": {
                "type": "string",
                "format": "uri"
              }
            },
            "encryptionPublicKey": {
              "title": "JSON Web Key (JWK)",
              "type": "object",
              "description": "JSON Web Key - RFC 7517",
              "required": [
                "kty",
                "key_ops",
                "alg",
                "kid",
                "n",
                "e"
              ],
              "properties": {
                "kty": {
                  "type": "string",
                  "description": "Der Parameter \"kty\" (Schlüsseltyp) identifiziert die kryptografische Algorithmus Familie, die mit dem Schlüssel verwendet wird, z. B. \"RSA\" oder \"EC\". In FIT-Connect sind aktuell nur RSA-Schlüssel erlaubt.",
                  "enum": [
                    "RSA"
                  ]
                },
                "key_ops": {
                  "type": "array",
                  "description": "Der Parameter \"key_ops\" (Schlüsseloperationen) identifiziert die Operation(en) für die der Schlüssel verwendet werden soll. Die Bedeutung der Erlaubten Operationen sind:  - `verify`: Digitale Signatur oder MAC überprüfen  - `wrapKey`: Verschlüsselungsschlüssel",
                  "items": {
                    "type": "string",
                    "enum": [
                      "wrapKey"
                    ]
                  }
                },
                "alg": {
                  "type": "string",
                  "description": "Der Parameter \"alg\" (Algorithmus) identifiziert den Algorithmus, der für Verwendung mit dem Schlüssel vorgesehen ist. In FIT-Connect wird `PS512` für Signaturschlüssel und `RSA-OAEP-256` für Verschlüsselungsschlüssel genutzt.",
                  "enum": [
                    "RSA-OAEP-256"
                  ]
                },
                "kid": {
                  "type": "string",
                  "description": "Der Parameter \"kid\" (Schlüssel-Id) wird verwendet, um einen bestimmten Schlüssel zu identifizieren.",
                  "minLength": 8,
                  "maxLength": 64
                },
                "n": {
                  "type": "string",
                  "description": "Modulus des Schlüssels. Die minimale Länge von 683 Zeichen repräsentiert eine Schlüssellange von mindestens 4096 Bit.",
                  "minLength": 683
                },
                "e": {
                  "type": "string",
                  "description": "Öffentliche Exponent des Schlüssels",
                  "enum": [
                    "AQAB"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "additionalReferenceInfo": {
      "type": "object",
      "description": "Eine Struktur, um zusätzliche Informationen zu hinterlegen",
      "properties": {
        "senderReference": {
          "type": "string",
          "description": "Eine Referenz zum Vorgang im sendenden System, um bei Problemen und Rückfragen außerhalb von FIT-Connect den Vorgang im dortigen System schneller zu identifizieren."
        },
        "applicationDate": {
          "type": "string",
          "format": "date",
          "description": "Das Datum der Antragstellung. Das Datum muss nicht zwingend identisch mit dem Datum der Einreichung des Antrags über FIT-Connect sein."
        }
      }
    }
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy