{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://schema.fitko.de/fit-connect/metadata/3.0.0/metadata.schema.json","type":"object","title":"Metadaten","description":"","required":["$schema","contentStructure"],"properties":{"$schema":{"description":"URI des Schemas, dem diese Metadaten entsprechen. Zulässig sind alle Schema-URLs mit enthaltener Version 3.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/3\\.\\d+\\.\\d+/metadata\\.schema\\.json$"},"contentStructure":{"description":"Beschreibt die Struktur der zusätzlichen Inhalte der Einreichung, wie Anlagen oder Fachdaten.","type":"object","required":["attachments","data"],"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\n- data: Fachdaten die aufgrund ihrer Größe nicht innerhalb der Einreichung (contentStructure), sondern als Anhang übertragen werden","type":"string","enum":["form","attachment","report","data"]},"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"]}}},"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"}}},"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."},"idBundDeApplicationId":{"type":"string","description":"Die Antrags-ID (applicationId) aus dem DeutschlandID Login für den DeutschlandID Statusmonitor.","format":"uuid","minLength":32,"maxLength":36},"zustimmungZumDigitalenBescheid":{"type":"boolean","description":"Zustimmung des Antragsstellers zur elektronischen Bescheidzustellung. Wenn die Zustimmung des Antragstellers zur elektronischen Zustellung aktiv eingeholt wurde, muss der entsprechende Wert hier hinterlegt werden. Eine ausdrückliche Ablehnung ist durch den Boolean-Wert 'false' zu übermitteln. Das Feld darf nicht weggelassen werden, um eine Ablehnung auszudrücken – in diesem Fall ist 'false' erforderlich."}},"additionalProperties":false},"author":{"type":"object","title":"Autor","description":"Selbstauskunft des Absendersystems. Diese Informationen können zur Nachverfolgbarkeit von Problemen nützlich sein.","required":["name","product"],"properties":{"name":{"type":"string","description":"Name des sendenden Systems (des Portals, der Platform, der Website)"},"description":{"type":"string","description":"Beschreibung des sendenden Systems"},"url":{"type":"string","description":"URL des sendenden Systems (Portal / Platform)"},"product":{"type":"object","title":"Softwareprodukt","description":"Selbstauskunft des Softwareprodukts an sich","required":["name","version","manufacturer"],"properties":{"name":{"type":"string","description":"Name des Softwareprodukts"},"description":{"type":"string","description":"Beschreibung des Softwareprodukts"},"version":{"type":"string","description":"Version des Softwareprodukts"},"manufacturer":{"type":"string","description":"Hersteller des Softwareprodukts"}}}}},"dataSets":{"type":"array","description":"Ein Array, das beliebig viele untergeordnete Datensätze enthalten kann, von denen jeder einem ausgelagerten Schema entspricht. In jedem Element wird also neben den Nutzdaten an sich auch eine Referenz auf das zugehörige Schema angegeben.","items":{"type":"object","properties":{"dataSetId":{"type":"string","format":"uuid","description":"Eine ID, die innerhalb dieses Arrays eindeutig sein muss."},"schema":{"type":"object","description":"Gibt das ausgelagerte Schema an, dem das `content`-Feld entsprechen muss. Für bestimmte Anwendungsfälle wie die Übermittlung von Identifikationsnachweisen gibt es Standard-Schemata. Die Verwendung von weiteren Schemata muss zwischen den Kommunikationspartnern abgestimmt werden.","required":["schemaUri","mimeType"],"properties":{"schemaUri":{"type":"string","format":"uri","description":"Eindeutiger, versionierter Identifikator für das verwendete Schema in Form einer URL. Idealerweise, aber nicht notwendiger Weise, ist das Schema auch von dieser URL abrufbar."},"mimeType":{"type":"string","description":"Datenformat der Nutzdaten.","enum":["application/json","application/xml","application/jose"]}}},"hash":{"$ref":"#/$defs/dataSetHash"},"description":{"type":"string","description":"Menschenlesbare Beschreibung des dataSet-Elements."},"content":{"description":"Die eigentlichen Nutzdaten des DataSets."}},"required":["dataSetId","schema","hash","content"]}}},"$defs":{"dataSetHash":{"type":"object","title":"Hashwert","description":"Der Hashwert über das `content`-Feld des dataSets, also über seine unverschlüsselten Nutzdaten. 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}$"}}}}}