metadata-schemas.metadata_schema_1.3.0.json Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of client Show documentation
Show all versions of client Show documentation
Library that provides client access to the FIT-Connect api-endpoints for sending, subscribing and
routing
{
"$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."
}
}
}
}
}