Commit f76b5f61 authored by Mark Canterbury's avatar Mark Canterbury
Browse files

TS 104 144 CR002 - Additional structured information for Form 3

parent 479cbcfa
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -330,7 +330,7 @@
        <Name>EPOCNotificationType</Name>
        <DictionaryEntries>
            <DictionaryEntry>
                <Value>DeFactoImpossibility</Value>
                <Value>NonExecution</Value>
                <Meaning>Indicates that the Service Provider has raised an object to the EPOC or EPOC-PR according to the Regulation [i.1] Form 3.</Meaning>
            </DictionaryEntry>
            <DictionaryEntry>
+131 −90
Original line number Diff line number Diff line
<?xml version="1.0" encoding="UTF-8"?>
<HI1Message xmlns="http://uri.etsi.org/03120/common/2019/10/Core" xmlns:auth="http://uri.etsi.org/03120/common/2020/09/Authorisation" xmlns:doc="http://uri.etsi.org/03120/common/2020/09/Document" xmlns:task="http://uri.etsi.org/03120/common/2020/09/Task" xmlns:notify="http://uri.etsi.org/03120/common/2016/02/Notification" xmlns:ef1="http://uri.etsi.org/03120/common/2025/02/EpocForm1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ph="http://uri.etsi.org/03120/common/2025/02/EPOCPlaceholder" xmlns:epoc="http://data.europa.eu/edm/1/ns/epoc" xmlns:eio="http://data.europa.eu/edm/1/ns/eio" xmlns:epocform1="http://data.europa.eu/edm/1/ns/forms/EPOC-FORM-1#" xmlns:epocform2="http://data.europa.eu/edm/1/ns/forms/EPOC-PR-FORM-2#" xmlns:epocform3="http://data.europa.eu/edm/1/ns/forms/EPOC-FORM-3#" xmlns:eopcform5="http://data.europa.eu/edm/1/ns/forms/EPOC-PR-FORM-5#" xmlns:eopcform6="http://data.europa.eu/edm/1/ns/forms/EPOC-PR-FORM-6#" xmlns:common="http://uri.etsi.org/03120/common/2016/02/Common" xmlns:ecauth="http://uri.etsi.org/03120/common/2025/02/EioAuthority">
<HI1Message xmlns="http://uri.etsi.org/03120/common/2019/10/Core" xmlns:auth="http://uri.etsi.org/03120/common/2020/09/Authorisation" xmlns:doc="http://uri.etsi.org/03120/common/2020/09/Document" xmlns:task="http://uri.etsi.org/03120/common/2020/09/Task" xmlns:notify="http://uri.etsi.org/03120/common/2016/02/Notification" xmlns:ef1="http://uri.etsi.org/03120/common/2025/02/EpocForm1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ph="http://uri.etsi.org/03120/common/2025/02/EPOCPlaceholder" xmlns:epoc="http://data.europa.eu/edm/1/ns/epoc" xmlns:eio="http://data.europa.eu/edm/1/ns/eio" xmlns:epocform1="http://data.europa.eu/edm/1/ns/forms/EPOC-FORM-1#" xmlns:epocform2="http://data.europa.eu/edm/1/ns/forms/EPOC-PR-FORM-2#" xmlns:epocform3="http://data.europa.eu/edm/1/ns/forms/EPOC-FORM-3#" xmlns:eopcform5="http://data.europa.eu/edm/1/ns/forms/EPOC-PR-FORM-5#" xmlns:eopcform6="http://data.europa.eu/edm/1/ns/forms/EPOC-PR-FORM-6#" xmlns:common="http://uri.etsi.org/03120/common/2016/02/Common" xmlns:form3="http://uri.etsi.org/03120/common/2025/06/Form3Information">
    <Header>
        <SenderIdentifier>
            <CountryCode>DE</CountryCode>
@@ -34,7 +34,7 @@
                            <notify:NotificationType>
                                <common:Owner>ETSI</common:Owner>
                                <common:Name>EPOCNotificationType</common:Name>
                                                                <common:Value>DeFactoImpossibility</common:Value>
                                <common:Value>NonExecution</common:Value>
                            </notify:NotificationType>
                            <notify:NewNotification>true</notify:NewNotification>
                            <notify:NotificationTimestamp>2025-05-30T14:54:24+01:00</notify:NotificationTimestamp>
@@ -64,9 +64,7 @@ InformationRequiredFromIssuingAuthority: SectionF_1_Form3</notify:Details>
                                        <common:Name>LPTaskStatus</common:Name>
                                        <common:Value>Invalid</common:Value>
                                    </notify:Status>
                                                                        <notify:Details>Reason: INCOMPLETE
Reason: CONTAINS_MANIFEST_ERRORS
ExplanationOrOtherReason:SectionD_1_Form3</notify:Details>
                                    <notify:Details>Incomplete and conflict of law</notify:Details>
                                </notify:AssociatedObjectStatus>
                            </notify:StatusOfAssociatedObjects>
                        </HI1Object>
@@ -95,6 +93,49 @@ ExplanationOrOtherReason:SectionD_1_Form3</notify:Details>
                        </HI1Object>
                    </CREATE>
                </ActionRequest>
                <ActionRequest>
                    <ActionIdentifier>2</ActionIdentifier>
                    <CREATE>
                        <HI1Object xsi:type="form3:Form3Information">
                            <ObjectIdentifier>8e3bec9c-0851-46b4-8444-4d6f0384af56</ObjectIdentifier>
                            <CountryCode>DE</CountryCode>
                            <OwnerIdentifier>service-provider-1</OwnerIdentifier>
                            <AssociatedObjects>
                                <AssociatedObject>f966e795-bc92-4bc4-9c6b-96c1b1b8cb1d</AssociatedObject>
                            </AssociatedObjects>
                            <form3:NonExecutionReasons>
                                <form3:Reasons>INCOMPLETE</form3:Reasons>
                                <form3:Reasons>CONFLICT_OF_LAWS</form3:Reasons>
                                <form3:ExplanationOrOtherReason>Other free text can go here</form3:ExplanationOrOtherReason>
                            </form3:NonExecutionReasons>
                            <form3:ConflictOfLaw>
                                <form3:TitleOfLaw>Title of law</form3:TitleOfLaw>
                                <form3:ApplicableStatutoryProvision>Applicable statutory provision</form3:ApplicableStatutoryProvision>
                                <form3:NatureOfConflictingObligations>
                                    <form3:NatureOfConflictingObligation>
                                        <form3:Interest>FUNDAMENTAL_RIGHTS_OF_INDIVIDUALS</form3:Interest>
                                        <form3:Description>Description of conflicting obligation</form3:Description>
                                    </form3:NatureOfConflictingObligation>
                                    <form3:NatureOfConflictingObligation>
                                        <form3:Interest>FUNDAMENTAL_INTERESTS_OF_THIRD_COUNTRY</form3:Interest>
                                        <form3:Description>Description of conflicting obligation</form3:Description>
                                    </form3:NatureOfConflictingObligation>
                                    <form3:NatureOfConflictingObligation>
                                        <form3:Interest>OTHER_INTERESTS</form3:Interest>
                                        <form3:Description>Description of conflicting obligation</form3:Description>
                                    </form3:NatureOfConflictingObligation>
                                </form3:NatureOfConflictingObligations>
                                <form3:WhyLawIsApplicable>Why law is applicable</form3:WhyLawIsApplicable>
                                <form3:WhyConflictOfLawConsidered>Why conflict of law is considered</form3:WhyConflictOfLawConsidered>
                                <form3:LinkBetweenServiceProviderAndThirdCountry>Link between service provider and third country</form3:LinkBetweenServiceProviderAndThirdCountry>
                                <form3:ConsequencesForAddressee>Consequences for addressee</form3:ConsequencesForAddressee>
                                <form3:AnyOtherRelevantInformation>Any other relevant information</form3:AnyOtherRelevantInformation>
                            </form3:ConflictOfLaw>
                            <form3:PreservationStatus>PRESERVED</form3:PreservationStatus>
                            <form3:AdditionalInformation>Any additional information from section G</form3:AdditionalInformation>
                        </HI1Object>
                    </CREATE>
                </ActionRequest>
            </ActionRequests>
        </RequestPayload>
    </Payload>
+79 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:etsi="http://uri.etsi.org/03280/common/2017/07" xmlns:core="http://uri.etsi.org/03120/common/2019/10/Core" xmlns="http://uri.etsi.org/03120/common/2025/06/Form3Information" targetNamespace="http://uri.etsi.org/03120/common/2025/06/Form3Information" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:import namespace="http://uri.etsi.org/03120/common/2019/10/Core"/>
    <xs:import namespace="http://uri.etsi.org/03280/common/2017/07"/>
    <xs:complexType name="Form3Information">
        <xs:complexContent>
            <xs:extension base="core:HI1Object">
                <xs:sequence>
                    <xs:element name="NonExecutionReasons" type="ListOfNonExecutionReasons" minOccurs="0"/>
                    <xs:element name="ConflictOfLaw" type="ConflictOfLaw" minOccurs="0"/>
                    <xs:element name="RequestForClarification" type="RequestForClarification" minOccurs="0"/>
                    <xs:element name="PreservationStatus" type="PreservationStatus" minOccurs="0"/>
                    <xs:element name="AdditionalInformation" type="etsi:LongString" minOccurs="0"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="ListOfNonExecutionReasons">
        <xs:sequence>
            <xs:element name="Reasons" type="NonExecutionReason" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="ExplanationOrOtherReason" type="etsi:LongString" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="NonExecutionReason">
        <xs:restriction base="xs:string">
            <xs:enumeration value="INCOMPLETE"/>
            <xs:enumeration value="CONTAINS_MANIFEST_ERRORS"/>
            <xs:enumeration value="INSUFFICIENT_INFORMATION"/>
            <xs:enumeration value="NOT_STORED_AT_THE_TIME_OF_THE_RECEIPT"/>
            <xs:enumeration value="OTHER_REASONS_OF_DE_FACTO_IMPOSSIBILITY"/>
            <xs:enumeration value="NOT_ISSUED_OR_VALIDATED_AS_DEFINED_BY_REGULATION"/>
            <xs:enumeration value="TRAFFIC_DATA_REQUESTED_NOT_FOR_IDENTIFYING_USER"/>
            <xs:enumeration value="SERVICE_NOT_COVERED_BY_REGULATION"/>
            <xs:enumeration value="DATA_REQUESTED_IS_PROTECTED_BY_IMMUNITIES"/>
            <xs:enumeration value="CONFLICT_OF_LAWS"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="ConflictOfLaw">
        <xs:sequence>
            <xs:element name="TitleOfLaw" type="etsi:LongString" minOccurs="0"/>
            <xs:element name="ApplicableStatutoryProvision" type="etsi:LongString" minOccurs="0"/>
            <xs:element name="NatureOfConflictingObligations" type="NatureOfConflictingObligations" minOccurs="0"/>
            <xs:element name="WhyLawIsApplicable" type="etsi:LongString" minOccurs="0"/>
            <xs:element name="WhyConflictOfLawConsidered" type="etsi:LongString" minOccurs="0"/>
            <xs:element name="LinkBetweenServiceProviderAndThirdCountry" type="etsi:LongString" minOccurs="0"/>
            <xs:element name="ConsequencesForAddressee" type="etsi:LongString" minOccurs="0"/>
            <xs:element name="AnyOtherRelevantInformation" type="etsi:LongString" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="NatureOfConflictingObligations">
        <xs:sequence>
            <xs:element name="NatureOfConflictingObligation" type="NatureOfConflictingObligation" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="NatureOfConflictingObligation">
        <xs:sequence>
            <xs:element name="Interest" type="InterestType"/>
            <xs:element name="Description" type="etsi:LongString" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="InterestType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="FUNDAMENTAL_RIGHTS_OF_INDIVIDUALS"/>
            <xs:enumeration value="FUNDAMENTAL_INTERESTS_OF_THIRD_COUNTRY"/>
            <xs:enumeration value="OTHER_INTERESTS"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="RequestForClarification">
        <xs:sequence>
            <xs:element name="InformationRequiredFromIssuingAuthority" type="etsi:LongString" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="PreservationStatus">
        <xs:restriction base="xs:string">
            <xs:enumeration value="PRESERVED"/>
            <xs:enumeration value="NOT_PRESERVED"/>
        </xs:restriction>
    </xs:simpleType>
</xs:schema>
 No newline at end of file
+2 −2
Original line number Diff line number Diff line
@@ -21,11 +21,11 @@ def print_colorized_diff_line(line: str):

def lint(file: Path):
    completed = subprocess.run(
        ["xmllint", str(file)], capture_output=True, text=True, encoding="utf8"
        ["xmllint", "--format", str(file)], capture_output=True, text=True, encoding="utf8"
    )

    if completed.returncode != 0:
        print(f"  {str(f)}: FAIL")
        print(f" {str(f)}: FAIL")
        print(f"      xmlint error code {completed.returncode}")
        lines = completed.stderr.splitlines()
        for line in lines:
+2 −0
Original line number Diff line number Diff line
@@ -11,6 +11,8 @@
    "103120/schema/xsd/ts_103120_Task.xsd",
    "103120/schema/xsd/ts_103120_TrafficPolicy.xsd",
    "103280/TS_103_280.xsd",
    "104144/schema/xsd/ts_104144_EPOCAdditionalInfo.xsd",
    "104144/schema/xsd/ts_104144_Form3.xsd",
    "testing/deps/xmldsig/xmldsig-core-schema.xsd",
    "103120/examples/xml/FooServiceSchema.xsd"
  ],