diff options
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/at/gv/egiz/moazs/client/TnvzHelper.java | 34 | ||||
-rw-r--r-- | src/main/java/at/gv/egiz/moazs/scheme/Msg2MzsConverter.java | 36 | ||||
-rw-r--r-- | src/main/java/at/gv/egiz/moazs/scheme/NameSpace.java | 3 | ||||
-rw-r--r-- | src/main/java/at/gv/egiz/moazs/scheme/NotificationResponse.java | 2 | ||||
-rw-r--r-- | src/main/resources/mzs/app2mzs.xsd | 6 | ||||
-rw-r--r-- | src/main/resources/zusemsg/zuse_mypersondata_en_p2.xsd | 7 | ||||
-rw-r--r-- | src/main/resources/zusemsg/zuse_p2.xsd | 110 | ||||
-rw-r--r-- | src/main/resources/zusetnvz/ksb2tnvz_p2.wsdl | 5 | ||||
-rw-r--r-- | src/main/resources/zusetnvz/zuse2tnvz_p2.wsdl | 4 | ||||
-rw-r--r-- | src/main/resources/zusetnvz/zusenqd_p2.xsd | 10 | ||||
-rw-r--r-- | src/main/resources/zusetnvz/zusetnvz_p2.xsd | 66 |
11 files changed, 193 insertions, 90 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/client/TnvzHelper.java b/src/main/java/at/gv/egiz/moazs/client/TnvzHelper.java index 5cc4954..e6bacec 100644 --- a/src/main/java/at/gv/egiz/moazs/client/TnvzHelper.java +++ b/src/main/java/at/gv/egiz/moazs/client/TnvzHelper.java @@ -69,9 +69,9 @@ public class TnvzHelper { var tnvzResponse = tnvzPort.queryPerson(tnvzQuery); verifyResponse(tnvzResponse); - var tnvzResult = getResult(tnvzResponse); + var tnvzResult = getFirstResult(tnvzResponse); var typesInRequest = extractListOfMimemtypesIn(mzsRequest); - checkMimetypes(tnvzResult, typesInRequest); + checkMimetypes(tnvzResponse, typesInRequest); return tnvzResult.getSuccess().getIdentification(); } @@ -196,14 +196,15 @@ public class TnvzHelper { } } - private PersonResultType getResult(QueryPersonResponse tnvzResponse) { + private PersonResultType getFirstResult(QueryPersonResponse tnvzResponse) { return tnvzResponse.getQueryResultList().getQueryResult().get(0); } - private void checkMimetypes(PersonResultType tnvzResult, Set<String> typesInRequest) { - var mismatchedTypes = findMimeTypeMismatches(tnvzResult, typesInRequest); + private void checkMimetypes(QueryPersonResponse tnvzResponse, Set<String> typesInRequest) { + + var mismatchedTypes = findMimeTypeMismatches(tnvzResponse, typesInRequest); if (!mismatchedTypes.isEmpty()) { - var acceptedTypesString = join(",", getAcceptedTypes(tnvzResult)); + var acceptedTypesString = join(",", getAcceptedTypes(tnvzResponse)); var mismatchedTypesString = join(",", mismatchedTypes); var message = String.format(MIMETYPE_MISSMATCH_ERROR_MSG, mismatchedTypesString, acceptedTypesString); var code = MoaZSException.ERROR_MZS_MIMETYPE_MISSMATCH; @@ -211,10 +212,11 @@ public class TnvzHelper { } } - private Collection<String> findMimeTypeMismatches(PersonResultType result, Set<String> typesInRequest) { - var acceptedTypes = getAcceptedTypes(result); + private Collection<String> findMimeTypeMismatches(QueryPersonResponse response, Set<String> typesInRequest) { + var acceptedTypes = getAcceptedTypes(response); - if (acceptedTypes.contains("*/*")) { + var result = getFirstResult(response); + if (result.getSuccess().getAllStandardMimeTypes() != null) { return List.of(); } @@ -224,8 +226,18 @@ public class TnvzHelper { return typesInRequestCopy; } - private List<String> getAcceptedTypes(PersonResultType result) { - return result.getSuccess().getMimeTypeList().getMimeType(); + private Set<String> getAcceptedTypes(QueryPersonResponse response) { + + Set<String> union = new HashSet<>(); + var standardTypes = response.getStandardMimeTypeList().getMimeType(); + union.addAll(standardTypes); + + var acceptedTypeList = getFirstResult(response).getSuccess().getMimeTypeList(); + if(acceptedTypeList != null) { + union.addAll(acceptedTypeList.getMimeType()); + } + + return union; } diff --git a/src/main/java/at/gv/egiz/moazs/scheme/Msg2MzsConverter.java b/src/main/java/at/gv/egiz/moazs/scheme/Msg2MzsConverter.java index 65b6425..cabb128 100644 --- a/src/main/java/at/gv/egiz/moazs/scheme/Msg2MzsConverter.java +++ b/src/main/java/at/gv/egiz/moazs/scheme/Msg2MzsConverter.java @@ -24,53 +24,48 @@ import static java.util.stream.Collectors.toList; @Component public class Msg2MzsConverter { - private static final Logger log = LoggerFactory.getLogger(Msg2MzsConverter.class); - - private static final String ANSWERS_MISSING_ERROR_MSG = "msg:DeliveryNotification contains no msg:Answer elements" + - " and cannot be converted to mzs:DeliveryNotification."; private static final String UNKNOWN_ANSWER_ERROR_MSG = "msg:DeliveryNotification/msg:Answer is of unknown type" + " and cannot be converted."; - private static final String TOO_MANY_ANSWERS_MSG = "msg:DeliveryNotification contains more msg:Answer elements than" + - " expected. All answers except the first one will be ignored."; public DeliveryResponseType convert(DeliveryRequestStatusType status, Optional<byte[]> signedStatus) { var responseBuilder = deliveryResponseTypeBuilder(); if (status.getError() != null) { - responseBuilder.withError(convert(status.getError(), signedStatus)); + responseBuilder.withError(convert(status.getError(), signedStatus, status.getRelayedViaERV())); } else if (status.getSuccess() != null) { - responseBuilder.withSuccess(convert(status.getSuccess(), signedStatus)); + responseBuilder.withSuccess(convert(status.getSuccess(), signedStatus, status.getRelayedViaERV())); } else { - responseBuilder.withPartialSuccess(convert(status.getPartialSuccess(), signedStatus)); + responseBuilder.withPartialSuccess(convert(status.getPartialSuccess(), signedStatus, status.getRelayedViaERV())); } return responseBuilder.build(); } - private SuccessType convert(DeliveryRequestStatusType.Success success, Optional<byte[]> signedStatus) { + private SuccessType convert(DeliveryRequestStatusType.Success success, Optional<byte[]> signedStatus, RelayedViaERV relayed) { return successTypeBuilder() .withAppDeliveryID(success.getAppDeliveryID()) .withDeliverySystem(success.getDeliverySystem()) .withGZ(success.getGZ()) .withZSDeliveryID(success.getZSDeliveryID()) .withSignedDeliveryRequestStatus(signedStatus.orElse(null)) - .withRelayedViaERV(success.isRelayedViaERV()) + .withRelayedViaERV(relayed) .withDeliveryTimestamp(success.getDeliveryTimestamp()) .build(); } - private PartialSuccessType convert(DeliveryAnswerType answer, Optional<byte[]> signedStatus) { + private PartialSuccessType convert(DeliveryAnswerType answer, Optional<byte[]> signedStatus, RelayedViaERV relayed) { return partialSuccessTypeBuilder() .withAppDeliveryID(answer.getAppDeliveryID()) .withDeliverySystem(answer.getDeliverySystem()) .withGZ(answer.getGZ()) .withZSDeliveryID(answer.getZSDeliveryID()) + .withRelayedViaERV(relayed) .withSignedDeliveryRequestStatus(signedStatus.orElse(null)) .build(); } - private ErrorType convert(DeliveryRequestStatusType.Error error, Optional<byte[]> signedStatus) { + private ErrorType convert(DeliveryRequestStatusType.Error error, Optional<byte[]> signedStatus, RelayedViaERV relayed) { var builder = errorTypeBuilder() .withAppDeliveryID(error.getAppDeliveryID()) .withDeliverySystem(error.getDeliverySystem()) @@ -78,6 +73,7 @@ public class Msg2MzsConverter { .withZSDeliveryID(error.getZSDeliveryID()) .withSignedDeliveryRequestStatus(signedStatus.orElse(null)) .withPreAdviceNoteSent(error.getPreAdviceNoteSent()) + .withRelayedViaERV(relayed) .withCode(new BigInteger(error.getErrorInfo().getCode())); if(error.getErrorInfo().getText() != null) builder.withText(error.getErrorInfo().getText()); @@ -90,15 +86,7 @@ public class Msg2MzsConverter { var builder = deliveryNotificationTypeBuilder(); - if (msgNotification.getAnswer().isEmpty()) { - throw moaZSException(ANSWERS_MISSING_ERROR_MSG); - } - - if (msgNotification.getAnswer().size() > 1) { - log.warn(TOO_MANY_ANSWERS_MSG); - } - - JAXBElement<? extends AbstractOperationType> answer = msgNotification.getAnswer().get(0); + JAXBElement<? extends AbstractOperationType> answer = msgNotification.getAnswer(); if(answer.getValue() instanceof AcceptedType) { var accepted = (AcceptedType) answer.getValue(); @@ -108,6 +96,9 @@ public class Msg2MzsConverter { var error = (DeliveryErrorType) answer.getValue(); builder.withError(extractError(msgNotification, error, signedNotification)) .withNotificationsPerformed(error.getNotificationsPerformed()); + } else if(answer.getValue() instanceof ERVConfirmedDeliveryType) { + ERVConfirmedDeliveryType ervConfirmed = (ERVConfirmedDeliveryType) answer.getValue(); + builder.withERVConfirmedDelivery(ervConfirmed); } else { throw moaZSException(UNKNOWN_ANSWER_ERROR_MSG); } @@ -141,7 +132,6 @@ public class Msg2MzsConverter { .withZSDeliveryID(msgNotification.getZSDeliveryID()) .withGZ(msgNotification.getGZ()) .withSignedDeliveryRequestStatus(signedNotification.orElse(null)) - .withRelayedViaERV(msgNotification.isRelayedViaERV()) .withDeliveryTimestamp(msgNotification.getTimestamp()) .build(); } diff --git a/src/main/java/at/gv/egiz/moazs/scheme/NameSpace.java b/src/main/java/at/gv/egiz/moazs/scheme/NameSpace.java index 23b19e7..8cf82da 100644 --- a/src/main/java/at/gv/egiz/moazs/scheme/NameSpace.java +++ b/src/main/java/at/gv/egiz/moazs/scheme/NameSpace.java @@ -7,7 +7,8 @@ public class NameSpace { private static final at.gv.zustellung.msg.xsd.ObjectFactory MSG_FACTORY = new at.gv.zustellung.msg.xsd.ObjectFactory(); private static final at.gv.zustellung.app2mzs.xsd.ObjectFactory MZS_FACTORY = new at.gv.zustellung.app2mzs.xsd.ObjectFactory(); - public static final String MSG_VERSION = "2.2.0"; + public static final String MSG_VERSION = "2.2.007"; + public static final String TNVZ_VERSION = "2.2.006"; public static final String MSG = MSG_FACTORY.createDeliveryRequest(null).getName().getNamespaceURI(); public static final String MSGP = new at.gv.zustellung.msg.xsd.persondata.ObjectFactory().createPerson(null).getName().getNamespaceURI(); public static final String MZS = new at.gv.zustellung.app2mzs.xsd.ObjectFactory().createDeliveryRequest(null).getName().getNamespaceURI(); diff --git a/src/main/java/at/gv/egiz/moazs/scheme/NotificationResponse.java b/src/main/java/at/gv/egiz/moazs/scheme/NotificationResponse.java index 85e7737..1a1a8eb 100644 --- a/src/main/java/at/gv/egiz/moazs/scheme/NotificationResponse.java +++ b/src/main/java/at/gv/egiz/moazs/scheme/NotificationResponse.java @@ -67,7 +67,7 @@ public class NotificationResponse extends MsgResponse<DeliveryNotificationType> .build(); var notificationType = deliveryNotificationTypeBuilder(notification) - .withAnswer(List.of(factory.createAnswer(error))) + .withAnswer(factory.createAnswer(error)) .build(); return new NotificationResponse(notificationType); diff --git a/src/main/resources/mzs/app2mzs.xsd b/src/main/resources/mzs/app2mzs.xsd index c586606..c188faa 100644 --- a/src/main/resources/mzs/app2mzs.xsd +++ b/src/main/resources/mzs/app2mzs.xsd @@ -35,6 +35,7 @@ </xs:complexType> </xs:element> </xs:choice> + <xs:element ref="msg:ClearingProfilID" minOccurs="0"/> <xs:element ref="msg:Logo" minOccurs="0"/> <xs:element ref="msg:AdditionalCriteria" minOccurs="0"/> </xs:sequence> @@ -48,7 +49,7 @@ <xs:element name="Identification" type="p:IdentificationType" /> <xs:sequence> <xs:element ref="p:Person"/> - <xs:element ref="tnvz:AustrianAddressesOnly" minOccurs="0"/> + <xs:element ref="msg:AustrianAddressesOnly" minOccurs="0"/> <xs:element ref="p:Address" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:choice> @@ -168,6 +169,7 @@ <xs:choice> <xs:element ref="Success"/> <xs:element ref="Error"/> + <xs:element ref="msg:ERVConfirmedDelivery"/> </xs:choice> <xs:element ref="msg:SenderDetails"/> <xs:element ref="msg:ReceiverDetails"/> @@ -213,7 +215,6 @@ <xs:extension base="MessageType"> <xs:sequence> <xs:element ref="msg:DeliveryTimestamp"/> - <xs:element ref="msg:RelayedViaERV" minOccurs="0"/> </xs:sequence> </xs:extension> </xs:complexContent> @@ -253,6 +254,7 @@ <xs:element ref="msg:DeliverySystem"/> <xs:element ref="msg:ZSDeliveryID" /> <xs:element ref="msg:GZ" minOccurs="0"/> + <xs:element ref="msg:RelayedViaERV" minOccurs="0"/> <xs:element name="SignedDeliveryRequestStatus" type="xs:base64Binary" minOccurs="0"/> </xs:sequence> </xs:complexType> diff --git a/src/main/resources/zusemsg/zuse_mypersondata_en_p2.xsd b/src/main/resources/zusemsg/zuse_mypersondata_en_p2.xsd index a20e3f5..ee18bf2 100644 --- a/src/main/resources/zusemsg/zuse_mypersondata_en_p2.xsd +++ b/src/main/resources/zusemsg/zuse_mypersondata_en_p2.xsd @@ -1,10 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- Mit XMLSpy v2016 (http://www.altova.com) von Arne Tauber (TU Graz) bearbeitet --> -<!-- -PersonData Blueprint solution for use with ZUSE Spezifikation, containes slimmed down version of PersonData 2.0 spec with special consideration to ZUSE Needs, compatible with PersonData 2.0 ---> -<?xml-stylesheet type="text/xsl" href="getelementnames.xslt"?> -<xs:schema xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:p="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" targetNamespace="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.2.0"> + +<xs:schema xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:p="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" targetNamespace="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.2.006"> <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="W3C-XMLDSig.xsd"/> <xs:annotation> <xs:documentation>This version of person deploys only global elements. All types derived from abstract types have been replaced by substitution groups</xs:documentation> diff --git a/src/main/resources/zusemsg/zuse_p2.xsd b/src/main/resources/zusemsg/zuse_p2.xsd index 6fa07a4..3343263 100644 --- a/src/main/resources/zusemsg/zuse_p2.xsd +++ b/src/main/resources/zusemsg/zuse_p2.xsd @@ -1,7 +1,15 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- Mit XMLSpy v2016 (http://www.altova.com) von Arne Tauber (TU Graz) bearbeitet --> -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:p="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:msg="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" targetNamespace="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.2.0"> +<!-- ### + + Die Versionsnummer des Schemas wird immer dann hochgezogen, wenn das Schema + selbst verändert wurde aber auch dann, wenn zumindest eines der importierten + ZUSE-Schemata angepasst wurde. + + ###--> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:p="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:msg="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" targetNamespace="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.2.007"> <!--### Imports ###--> + <!--### ZUSE-Personendaten: namespace="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" version="2.2.007" ###--> <xs:import namespace="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" schemaLocation="zuse_mypersondata_en_p2.xsd"/> <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="W3C-XMLDSig.xsd"/> <!--### Abfrage der Webserviceversion--> @@ -12,7 +20,7 @@ <xs:element name="Version"> <xs:simpleType> <xs:restriction base="xs:token"> - <xs:enumeration value="2.2.0"/> + <xs:enumeration value="2.2.007"/> </xs:restriction> </xs:simpleType> </xs:element> @@ -61,20 +69,24 @@ <xs:extension base="msg:DeliveryAnswerType"> <xs:sequence> <xs:element ref="msg:DeliveryTimestamp"/> - <xs:element ref="msg:RelayedViaERV" minOccurs="0"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> - <xs:element name="PartialSuccess" type="msg:DeliveryAnswerType"> + <xs:element name="PartialSuccess"> <xs:annotation> <xs:documentation>Zustellstück wurde erfolgreich übernommen, attachment wird später geladen</xs:documentation> </xs:annotation> + <xs:complexType> + <xs:complexContent> + <xs:extension base="msg:DeliveryAnswerType"/> + </xs:complexContent> + </xs:complexType> </xs:element> <xs:element name="Error"> <xs:annotation> - <xs:documentation>Zustellstück konnte nicht erfolgreich angenommen werden</xs:documentation> + <xs:documentation>Zustellstück konnte nicht übernommen werden</xs:documentation> </xs:annotation> <xs:complexType> <xs:complexContent> @@ -88,9 +100,15 @@ </xs:complexType> </xs:element> </xs:choice> + <xs:element ref="msg:RelayedViaERV" minOccurs="0"/> <xs:element ref="dsig:Signature"/> </xs:sequence> <xs:attribute name="Version" type="msg:VersionNumberType"/> + <xs:attribute name="Id" type="xs:ID" use="optional"> + <xs:annotation> + <xs:documentation>Eindeutige ID des Elements, um in der Signatur referenziert werden zu können </xs:documentation> + </xs:annotation> + </xs:attribute> </xs:complexType> <xs:element name="DeliveryRequestStatusACK" type="msg:DeliveryRequestStatusACKType"> <xs:annotation> @@ -118,7 +136,6 @@ <xs:sequence> <xs:element ref="msg:SenderDetails"/> <xs:element ref="msg:ReceiverDetails"/> - <xs:element ref="msg:RelayedViaERV" minOccurs="0"/> <xs:element ref="msg:Timestamp"> <xs:annotation> <xs:documentation>Timestamp der Nachrichtenoperation, welcher vom Anzeigemodul erzeugt wurde. Im Falle der Annahme einer Zustellung entspricht der Timestamp dem Annahmezeitpunkt</xs:documentation> @@ -129,19 +146,28 @@ <xs:documentation>Benutzer, der die Nachricht angenommen hat.</xs:documentation> </xs:annotation> </xs:element> - <xs:element ref="msg:Answer" maxOccurs="unbounded"/> + <xs:element ref="msg:Answer"/> <xs:element ref="dsig:Signature"/> <xs:element name="AdditionalFormat" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:base64Binary"> - <xs:attribute name="Type" type="xs:token" use="required"/> + <xs:attribute name="Type" type="xs:token" use="required"> + <xs:annotation> + <xs:documentation>Als MIME-Type ist „application/pdf“ zu verwenden</xs:documentation> + </xs:annotation> + </xs:attribute> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="Version" type="msg:VersionNumberType"/> + <xs:attribute name="Id" type="xs:ID" use="optional"> + <xs:annotation> + <xs:documentation>Eindeutige ID des Elements, um in der Signatur referenziert zu können </xs:documentation> + </xs:annotation> + </xs:attribute> </xs:extension> </xs:complexContent> </xs:complexType> @@ -284,6 +310,11 @@ </xs:choice> </xs:sequence> </xs:complexType> + <xs:element name="AustrianAddressesOnly" type="msg:IndicatorType"> + <xs:annotation> + <xs:documentation>Die Existenz des Elements zeigt an, dass die gesuchte Person in Österreich gemeldet sein muss</xs:documentation> + </xs:annotation> + </xs:element> <xs:element name="AuthLevel" type="msg:token256"> <xs:annotation> <xs:documentation>Höchstes Authentifizierungsniveau mit dem sich der Teilnehmer beim Portal/Kommunikationssystem angemeldet hatte. Folgende Werte sind zulässig - absteigend sortiert nach der Höhe des Authentifizierungsniveaus: "EID" > "FON" > "LOW" @@ -331,6 +362,11 @@ </xs:element> </xs:sequence> </xs:complexType> + <xs:element name="ClearingProfilID" type="xs:token"> + <xs:annotation> + <xs:documentation>Ist zu verwenden, wenn die Abrechnung über ein anderes Profil erfolgen soll, als dem Versender-Profil </xs:documentation> + </xs:annotation> + </xs:element> <xs:element name="ConfirmationAddress"> <xs:annotation> <xs:documentation>Webservice oder E-Mail-Adresse, an welches die Zustellbestätigung oder Fehlermeldung weitergeleitet wird (Callback)</xs:documentation> @@ -439,6 +475,31 @@ </xs:element> </xs:sequence> </xs:complexType> + <xs:element name="ERVConfirmedDelivery" type="msg:ERVConfirmedDeliveryType" substitutionGroup="msg:Answer"> + <xs:annotation> + <xs:documentation>Diese Operation zeigt an, dass eine in den ERV weitergeleitete Nachricht erfolgreich im Verfügungsbereich des Empfängers eingelangt ist. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:complexType name="ERVConfirmedDeliveryType"> + <xs:complexContent> + <xs:extension base="msg:AbstractOperationType"> + <xs:sequence> + <xs:element ref="msg:ERVCode"/> + <xs:element ref="msg:ERVDeliveryTimestamp"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:element name="ERVCode" type="msg:token256"> + <xs:annotation> + <xs:documentation>Anschriftcode des Elektronischen Rechtsverkehrs der Justiz (ERV): Wenn die Nachricht in den ERV weitergeleitet wird, ist der Anschriftcode - zwecks Nachvollziehbarkeit - bis zum Versender zurückgegeben.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ERVDeliveryTimestamp" type="xs:dateTime"> + <xs:annotation> + <xs:documentation>Datum, wann die Zustellung in der jeweiligen Übermittlungsstelle und damit im Verfügungsbereich des Empfängers eingelangt ist, d.h. die Zustellung erfolgt ist, wird als Zustellzeitpunkt verwendet und an das jeweilige Zustellsystem zurück-gemeldet. Dieses Datum ist gemäß GOG berechnet und gibt den nächsten auf die Ankunft in der Übermittlungsstelle folgenden Werktag an und enthält keine Zeitangabe.</xs:documentation> + </xs:annotation> + </xs:element> <xs:element name="GZ" type="xs:token"> <xs:annotation> <xs:documentation>Geschäftszahl</xs:documentation> @@ -459,7 +520,7 @@ <xs:documentation>element of internet address type</xs:documentation> </xs:annotation> </xs:element> - <xs:element name="Language" type="msg:AustrianEthicMinorityLanguageType"> + <xs:element name="Language" type="msg:AustrianLanguageType"> <xs:annotation> <xs:documentation>Sprache in welcher der Zustellnachweis gesendet werden soll</xs:documentation> </xs:annotation> @@ -531,7 +592,7 @@ </xs:element> <xs:complexType name="MetadataEntryType"> <xs:sequence> - <xs:element name="OID"> + <xs:element name="OID" type="xs:token"> <xs:annotation> <xs:documentation>Unique object identifier</xs:documentation> </xs:annotation> @@ -677,6 +738,7 @@ Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2) <xs:element ref="p:Identification"/> <xs:sequence> <xs:element ref="p:Person"/> + <xs:element ref="msg:AustrianAddressesOnly" minOccurs="0"/> <xs:element ref="p:Address" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:choice> @@ -700,10 +762,15 @@ Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2) </xs:sequence> </xs:complexType> </xs:element> - <xs:element name="RelayedViaERV" type="xs:boolean"> + <xs:element name="RelayedViaERV"> <xs:annotation> <xs:documentation>Gibt an ob das Zustellstück über den ERV zugestellt wurde</xs:documentation> </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="msg:ERVCode"/> + </xs:sequence> + </xs:complexType> </xs:element> <xs:element name="Roles"> <xs:annotation> @@ -728,6 +795,7 @@ Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2) <xs:complexType> <xs:sequence> <xs:element ref="msg:SenderPerson"/> + <xs:element ref="msg:ClearingProfilID" minOccurs="0"/> <xs:element ref="msg:Logo" minOccurs="0"/> <xs:element ref="msg:AdditionalCriteria" minOccurs="0"> <xs:annotation> @@ -736,7 +804,7 @@ Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2) </xs:element> <xs:element ref="msg:ConfirmationAddress" minOccurs="0"> <xs:annotation> - <xs:documentation>Webservice oder E-Mail-Adresse, an welches die Zustellbestätigung, der Zustellnachweis oder Fehlermeldung weitergeleitet wird (Callback)</xs:documentation> + <xs:documentation>Webservice oder E-Mail-Adresse, an welche die Übergabebestätigung, der Zustellnachweis oder die Fehlermeldung zurückgemeldet wird (Callback)</xs:documentation> </xs:annotation> </xs:element> </xs:sequence> @@ -820,10 +888,15 @@ Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2) </xs:annotation> <xs:complexType> <xs:sequence> - <xs:element ref="msg:Tag" maxOccurs="unbounded"/> + <xs:element ref="msg:Tag" maxOccurs="20"/> </xs:sequence> </xs:complexType> </xs:element> + <xs:element name="TargetIdentification" type="p:IdentificationType"> + <xs:annotation> + <xs:documentation>Wenn im DeliveryRequest ein Target angegeben wurde, d.h. der Bereich und das VKZ des behördlichen Versenders, dann enthält das TargetIdentification Element das entsprechende, umgeschlüsselt vbPK für den Versender</xs:documentation> + </xs:annotation> + </xs:element> <xs:element name="Timestamp" type="xs:dateTime"> <xs:annotation> <xs:documentation>Timestamp, der vom Anzeigemodul erzeugt wurde. Im Falle der Annahme einer Zustellung entspricht der Timestamp dem Zustellzeitpunkt</xs:documentation> @@ -841,7 +914,7 @@ Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2) • Receiver: Empfänger persönlich • Representative: Vertretungsbevollmächtigter • InsolvencyAdministrator: Insolvenzverwalters - +• System: Eine Systemkomponente der eZustellung ist Auslöser der MessageOperation </xs:documentation> </xs:annotation> <xs:simpleType> @@ -849,10 +922,12 @@ Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2) <xs:enumeration value="Receiver"/> <xs:enumeration value="Representative"/> <xs:enumeration value="InsolvencyAdministrator"/> + <xs:enumeration value="System"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element ref="p:Identification"/> + <xs:element ref="msg:TargetIdentification" minOccurs="0"/> <xs:element ref="p:PhysicalPerson"/> </xs:sequence> </xs:complexType> @@ -868,7 +943,7 @@ Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2) </xs:element> <xs:element name="ZSDeliveryID" type="msg:token256"> <xs:annotation> - <xs:documentation>ID des Zustellstücke. Die ZSDeliveryID in Kombination mit der ParticipantID des Zustellsystems, welches die Nachricht übernmittelt hat muss eindeutig sein.</xs:documentation> + <xs:documentation>ID des Zustellstückes MUSS über alle Zustellsysteme eindeutig sein. Die ZSDeliveryID wird durch eine UUID gemäß RFC-4122 repräsentiert. Der Node-Teil MUSS pro Zustellsystem eindeutig sein und wird vom Anzeigemodul vergeben.</xs:documentation> </xs:annotation> </xs:element> <!--### Simple Types--> @@ -881,13 +956,14 @@ Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2) <xs:maxLength value="256"/> </xs:restriction> </xs:simpleType> - <xs:simpleType name="AustrianEthicMinorityLanguageType"> + <xs:simpleType name="AustrianLanguageType"> <xs:annotation> <xs:documentation>2-stelliger Sprachcode der anerkannten österreichischen Minderheiten</xs:documentation> </xs:annotation> <xs:restriction base="xs:token"> <xs:minLength value="2"/> <xs:maxLength value="2"/> + <xs:enumeration value="DE"/> <xs:enumeration value="HR"/> <xs:enumeration value="HU"/> <xs:enumeration value="SL"/> @@ -907,7 +983,7 @@ Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2) <xs:documentation>Typ definiert einen regulären Ausdruck für Versionsnummer - z.B. 1.0.0</xs:documentation> </xs:annotation> <xs:restriction base="xs:token"> - <xs:pattern value="[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,2}"/> + <xs:pattern value="[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,3}"/> </xs:restriction> </xs:simpleType> </xs:schema> diff --git a/src/main/resources/zusetnvz/ksb2tnvz_p2.wsdl b/src/main/resources/zusetnvz/ksb2tnvz_p2.wsdl index c3c1c6f..7948786 100644 --- a/src/main/resources/zusetnvz/ksb2tnvz_p2.wsdl +++ b/src/main/resources/zusetnvz/ksb2tnvz_p2.wsdl @@ -46,7 +46,7 @@ <wsdl:binding name="TnvzKsbPortSoap12" type="service:TnvzKsbPort"> <soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="GetVersion"> - <soap12:operation soapAction="GetVersion" soapActionRequired="false"/> + <soap12:operation soapAction="GetVersion" soapActionRequired="false" style="document"/> <wsdl:input name="GetVersionRequest"> <soap12:body use="literal"/> </wsdl:input> @@ -55,7 +55,7 @@ </wsdl:output> </wsdl:operation> <wsdl:operation name="ImportNonQualifiedData"> - <soap12:operation soapAction="ImportNonQualifiedData" soapActionRequired="false"/> + <soap12:operation soapAction="ImportNonQualifiedData" soapActionRequired="false" style="document"/> <wsdl:input name="ImportNonQualifiedDataRequest"> <soap12:body use="literal"/> </wsdl:input> @@ -72,7 +72,6 @@ <soap12:body use="literal"/> </wsdl:output> </wsdl:operation> - <soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> </wsdl:binding> <wsdl:service name="TnvzKsbPortService"> <wsdl:port name="TnvzKsbPortSoap12" binding="service:TnvzKsbPortSoap12"> diff --git a/src/main/resources/zusetnvz/zuse2tnvz_p2.wsdl b/src/main/resources/zusetnvz/zuse2tnvz_p2.wsdl index 9501552..2ba1eea 100644 --- a/src/main/resources/zusetnvz/zuse2tnvz_p2.wsdl +++ b/src/main/resources/zusetnvz/zuse2tnvz_p2.wsdl @@ -58,7 +58,7 @@ <wsdl:binding name="TNVZServicePortSoap12" type="service:TNVZServicePort"> <soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="GetVersion"> - <soap12:operation soapAction="GetVersion" soapActionRequired="false"/> + <soap12:operation soapAction="GetVersion" soapActionRequired="false" style="document"/> <wsdl:input name="GetVersionRequest"> <soap12:body use="literal"/> </wsdl:input> @@ -67,7 +67,7 @@ </wsdl:output> </wsdl:operation> <wsdl:operation name="GetInfo"> - <soap12:operation soapAction="GetInfo" soapActionRequired="false"/> + <soap12:operation soapAction="GetInfo" soapActionRequired="false" style="document"/> <wsdl:input name="GetInfoRequest"> <soap12:body use="literal"/> </wsdl:input> diff --git a/src/main/resources/zusetnvz/zusenqd_p2.xsd b/src/main/resources/zusetnvz/zusenqd_p2.xsd index 5c31408..60a0c32 100644 --- a/src/main/resources/zusetnvz/zusenqd_p2.xsd +++ b/src/main/resources/zusetnvz/zusenqd_p2.xsd @@ -1,8 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- Mit XMLSpy v2016 (http://www.altova.com) von Arne Tauber (TU Graz) bearbeitet --> -<xs:schema xmlns:nqd="http://reference.e-government.gv.at/namespace/zustellung/tnvz/nonqualifieddata/phase2/20181206#" xmlns:p="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msg="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" targetNamespace="http://reference.e-government.gv.at/namespace/zustellung/tnvz/nonqualifieddata/phase2/20181206#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.2.0"> - <xs:import namespace="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#" schemaLocation="../zusemsg/zuse_p2.xsd"/> +<xs:schema xmlns:nqd="http://reference.e-government.gv.at/namespace/zustellung/tnvz/nonqualifieddata/phase2/20181206#" xmlns:p="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msg="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" targetNamespace="http://reference.e-government.gv.at/namespace/zustellung/tnvz/nonqualifieddata/phase2/20181206#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.2.007"> + <!--### ZUSE-Personendaten: namespace="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" version="2.2.007" ###--> <xs:import namespace="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" schemaLocation="../zusemsg/zuse_mypersondata_en_p2.xsd"/> + <!--### ZUSE-Nachricht: namespace="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#" version="2.2.007" ###--> + <xs:import namespace="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#" schemaLocation="../zusemsg/zuse_p2.xsd"/> <!--********* Definition der Request- und Response-Elemente ***********--> <!--*** Abfrage der Webserviceversion ***--> <xs:element name="GetVersionRequest" type="msg:SimpleRequestType"/> @@ -12,7 +14,7 @@ <xs:element name="Version"> <xs:simpleType> <xs:restriction base="xs:token"> - <xs:enumeration value="2.2.0"/> + <xs:enumeration value="2.2.007"/> </xs:restriction> </xs:simpleType> </xs:element> @@ -75,7 +77,7 @@ <xs:documentation>Zustellsystem, welches die Löschung durchführt</xs:documentation> </xs:annotation> </xs:element> - <xs:element name="tnvzDeleteEntryList"> + <xs:element name="DeleteEntryList"> <xs:annotation> <xs:documentation>Liste der von einer (Daten-)Löschung betroffenen Teilnehmer</xs:documentation> </xs:annotation> diff --git a/src/main/resources/zusetnvz/zusetnvz_p2.xsd b/src/main/resources/zusetnvz/zusetnvz_p2.xsd index 3fba91c..81c9082 100644 --- a/src/main/resources/zusetnvz/zusetnvz_p2.xsd +++ b/src/main/resources/zusetnvz/zusetnvz_p2.xsd @@ -1,8 +1,18 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- Mit XMLSpy v2016 (http://www.altova.com) von Arne Tauber (TU Graz) bearbeitet --> -<xs:schema xmlns:tnvz="http://reference.e-government.gv.at/namespace/zustellung/tnvz/phase2/20181206#" xmlns:p="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msg="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" targetNamespace="http://reference.e-government.gv.at/namespace/zustellung/tnvz/phase2/20181206#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.2.0"> - <xs:import namespace="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#" schemaLocation="../zusemsg/zuse_p2.xsd"/> +<!-- ### + + Die Versionsnummer des Schemas wird immer dann hochgezogen, wenn das Schema + selbst verändert wurde aber auch dann, wenn zumindest eines der importierten + ZUSE-Schemata angepasst wurde. + + ###--> +<xs:schema xmlns:tnvz="http://reference.e-government.gv.at/namespace/zustellung/tnvz/phase2/20181206#" xmlns:p="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msg="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" targetNamespace="http://reference.e-government.gv.at/namespace/zustellung/tnvz/phase2/20181206#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.2.007"> + <!--### Imports ###--> + <!--### ZUSE-Personendaten: namespace="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" version="2.2.007" ###--> <xs:import namespace="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" schemaLocation="../zusemsg/zuse_mypersondata_en_p2.xsd"/> + <!--### ZUSE-Nachricht: namespace="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#" version="2.2.007" ###--> + <xs:import namespace="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#" schemaLocation="../zusemsg/zuse_p2.xsd"/> <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="../zusemsg/W3C-XMLDSig.xsd"/> <xs:import namespace="http://www.w3.org/2001/04/xmlenc#" schemaLocation="../zusemsg/xenc-schema.xsd"/> <!--******** Definition der Request- und Response-Elemente ********--> @@ -14,7 +24,7 @@ <xs:element name="Version"> <xs:simpleType> <xs:restriction base="xs:token"> - <xs:enumeration value="2.2.0"/> + <xs:enumeration value="2.2.006"/> </xs:restriction> </xs:simpleType> </xs:element> @@ -60,13 +70,16 @@ <xs:element name="QueryPersonResponse"> <xs:complexType> <xs:choice> - <xs:element name="QueryResultList"> - <xs:complexType> - <xs:sequence> - <xs:element name="QueryResult" type="tnvz:PersonResultType" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - </xs:element> + <xs:sequence> + <xs:element ref="tnvz:StandardMimeTypeList"/> + <xs:element name="QueryResultList"> + <xs:complexType> + <xs:sequence> + <xs:element name="QueryResult" type="tnvz:PersonResultType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> <xs:element ref="tnvz:Error"/> </xs:choice> </xs:complexType> @@ -91,13 +104,16 @@ <xs:element name="QueryAddressabilityResponse"> <xs:complexType> <xs:choice> - <xs:element name="QueryResultList"> - <xs:complexType> - <xs:sequence> - <xs:element name="QueryResult" type="tnvz:AddressabilityResultType" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - </xs:element> + <xs:sequence> + <xs:element ref="tnvz:StandardMimeTypeList"/> + <xs:element name="QueryResultList"> + <xs:complexType> + <xs:sequence> + <xs:element name="QueryResult" type="tnvz:AddressabilityResultType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> <xs:element ref="tnvz:Error"/> </xs:choice> </xs:complexType> @@ -126,6 +142,7 @@ </xs:choice> <xs:element ref="msg:PreAdviceNote" minOccurs="0"/> <xs:element ref="msg:IgnorePostRedirectionOrder" minOccurs="0"/> + <xs:element ref="msg:MetadataList" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> @@ -153,6 +170,7 @@ <xs:complexType name="PersonResultSuccessType"> <xs:sequence> <xs:element ref="p:Identification"/> + <xs:element name="AllStandardMimeTypes" type="msg:IndicatorType" minOccurs="0"/> <xs:element ref="tnvz:MimeTypeList" minOccurs="0"/> </xs:sequence> </xs:complexType> @@ -184,6 +202,7 @@ </xs:choice> <xs:element ref="msg:PreAdviceNote" minOccurs="0"/> <xs:element ref="msg:IgnorePostRedirectionOrder" minOccurs="0"/> + <xs:element ref="msg:MetadataList" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> @@ -238,7 +257,7 @@ <xs:element ref="p:Identification"/> <xs:sequence> <xs:element ref="p:Person"/> - <xs:element ref="tnvz:AustrianAddressesOnly" minOccurs="0"/> + <xs:element ref="msg:AustrianAddressesOnly" minOccurs="0"/> <xs:element ref="msg:NotificationAddressList" minOccurs="0"> <xs:annotation> <xs:documentation>Ein oder mehrere Verständigungsadressen mit deren Hilfe der Empfänger eindeutig bestimmt werden soll</xs:documentation> @@ -253,18 +272,23 @@ </xs:choice> </xs:complexType> </xs:element> - <xs:element name="AustrianAddressesOnly" type="msg:IndicatorType"> + <xs:element name="StandardMimeTypeList" type="tnvz:MimeTypeListType"> <xs:annotation> - <xs:documentation>Die Existenz des Elements zeigt an, dass die gesuchte Person in Österreich gemeldet sein muss</xs:documentation> + <xs:documentation>Liste der üblichen Formaten, die der Teilnehmer jedenfalls akzeptieren muss und nicht abwählen kann. (Ausnahme: der ERV verarbeitet nur für die Langzeitarchivung geeignete PDF Formate)</xs:documentation> </xs:annotation> </xs:element> + <xs:complexType name="MimeTypeListType"> + <xs:sequence> + <xs:element ref="msg:MimeType" minOccurs="1" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> <xs:element name="MimeTypeList"> <xs:annotation> <xs:documentation>Liste der Dateiformate, die vom Empfänger neben den üblichen Formaten unterstützt werden </xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> - <xs:element ref="msg:MimeType" minOccurs="0" maxOccurs="unbounded"/> + <xs:element ref="msg:MimeType" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> |