metadata-schemas.metadata_schema_1.2.0.json Maven / Gradle / Ivy
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://schema.fitko.de/fit-connect/metadata/1.2.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
}
}
}
}
},
"$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 - 2025 Weber Informatics LLC | Privacy Policy