Hankintailmoitukset / hilma-api

11 stars 0 forks source link

What TED SDK version do you support? #144

Closed eduardsmirnov closed 1 year ago

eduardsmirnov commented 1 year ago

Trying to validate my notice using API /external-write/v1/eform/pin/validate The notice is valid according to TED validation API. Using your API, I get a wrong element "TransmissionDate", everything is fine when I remove this field from my XML.

Aren't you support the latest TED SDK version? TransmissionDate has been introduced in version 1.5

BadRequest {"errorCode":400,"message":"The notice is an invalid XML against its XSD. See below the full error:\n[{\"line\":6,\"column\":34,\"message\":\"cvc-complex-type.2.4.a: Invalid content was found starting with element '{\\"http://data.europa.eu/p27/eforms-ubl-extension-basic-components/1\\\":TransmissionDate}'.......

arinurkkala commented 1 year ago

Can you provide us with the XML, so we can get an undestanding on whats going on? As for TransmissionDate -field, yes it is included in the XSD model, so it should also be valid for XSD validation. It just has to be in the right place.

eduardsmirnov commented 1 year ago
<?xml version="1.0" encoding="utf-8"?>
<PriorInformationNotice xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:efac="http://data.europa.eu/p27/eforms-ubl-extension-aggregate-components/1" xmlns:efext="http://data.europa.eu/p27/eforms-ubl-extensions/1" xmlns:efbc="http://data.europa.eu/p27/eforms-ubl-extension-basic-components/1" xmlns="urn:oasis:names:specification:ubl:schema:xsd:PriorInformationNotice-2">
  <ext:UBLExtensions>
    <ext:UBLExtension>
      <ext:ExtensionContent>
        <efext:EformsExtension>
          <efbc:TransmissionDate>2023-02-24+00:00</efbc:TransmissionDate>
          <efbc:TransmissionTime>05:55:12+00:00</efbc:TransmissionTime>
          <efac:NoticeSubType>
            <cbc:SubTypeCode listName="notice-subtype">1</cbc:SubTypeCode>
          </efac:NoticeSubType>
          <efac:Organizations>
            <efac:Organization>
              <efac:Company>
                <cac:PartyIdentification>
                  <cbc:ID schemeName="organization">ORG-0001</cbc:ID>
                </cac:PartyIdentification>
                <cac:PartyName>
                  <cbc:Name languageID="ENG">Buyer 1</cbc:Name>
                </cac:PartyName>
                <cac:PostalAddress>
                  <cbc:CityName>Tallinn</cbc:CityName>
                  <cac:Country>
                    <cbc:IdentificationCode listName="country">EST</cbc:IdentificationCode>
                  </cac:Country>
                </cac:PostalAddress>
                <cac:PartyLegalEntity>
                  <cbc:CompanyID schemeID="002">B1</cbc:CompanyID>
                </cac:PartyLegalEntity>
                <cac:Contact>
                  <cbc:Telephone>112</cbc:Telephone>
                  <cbc:ElectronicMail>buyer@buyer.xx</cbc:ElectronicMail>
                </cac:Contact>
              </efac:Company>
            </efac:Organization>
            <efac:Organization>
              <efac:Company>
                <cbc:WebsiteURI>http://mercell.com/</cbc:WebsiteURI>
                <cac:PartyIdentification>
                  <cbc:ID schemeName="organization">ORG-0002</cbc:ID>
                </cac:PartyIdentification>
                <cac:PartyName>
                  <cbc:Name languageID="ENG">Mercell Holding ASA</cbc:Name>
                </cac:PartyName>
                <cac:PostalAddress>
                  <cbc:StreetName>Askekroken 11</cbc:StreetName>
                  <cbc:CityName>Oslo</cbc:CityName>
                  <cbc:PostalZone>0277</cbc:PostalZone>
                  <cbc:CountrySubentityCode listName="nuts">NO081</cbc:CountrySubentityCode>
                  <cac:Country>
                    <cbc:IdentificationCode listName="country">NOR</cbc:IdentificationCode>
                  </cac:Country>
                </cac:PostalAddress>
                <cac:PartyLegalEntity>
                  <cbc:CompanyID schemeID="002">980921565</cbc:CompanyID>
                </cac:PartyLegalEntity>
                <cac:Contact>
                  <cbc:Name>eSender</cbc:Name>
                  <cbc:Telephone>+47 21018800</cbc:Telephone>
                  <cbc:Telefax>+47 21018801</cbc:Telefax>
                  <cbc:ElectronicMail>post@mercell.com</cbc:ElectronicMail>
                </cac:Contact>
              </efac:Company>
            </efac:Organization>
          </efac:Organizations>
        </efext:EformsExtension>
      </ext:ExtensionContent>
    </ext:UBLExtension>
  </ext:UBLExtensions>
  <cbc:UBLVersionID>2.3</cbc:UBLVersionID>
  <cbc:CustomizationID>eforms-sdk-1.5</cbc:CustomizationID>
  <cbc:ID schemeName="notice-id">329ffbda-d4c2-42ee-afae-9b585d0a9519</cbc:ID>
  <cbc:IssueDate>2023-02-24+00:00</cbc:IssueDate>
  <cbc:IssueTime>05:55:12+00:00</cbc:IssueTime>
  <cbc:VersionID>01</cbc:VersionID>
  <cbc:RequestedPublicationDate>2023-03-24+02:00</cbc:RequestedPublicationDate>
  <cbc:RegulatoryDomain>32014L0024</cbc:RegulatoryDomain>
  <cbc:NoticeTypeCode listName="planning">pin-buyer</cbc:NoticeTypeCode>
  <cbc:NoticeLanguageCode>ENG</cbc:NoticeLanguageCode>
  <cac:ContractingParty>
    <cbc:BuyerProfileURI>http://buyer1.xx</cbc:BuyerProfileURI>
    <cac:ContractingPartyType>
      <cbc:PartyTypeCode listName="buyer-legal-type">body-pl</cbc:PartyTypeCode>
    </cac:ContractingPartyType>
    <cac:ContractingActivity>
      <cbc:ActivityTypeCode listName="authority-activity">defence</cbc:ActivityTypeCode>
    </cac:ContractingActivity>
    <cac:Party>
      <cac:PartyIdentification>
        <cbc:ID schemeName="organization">ORG-0001</cbc:ID>
      </cac:PartyIdentification>
      <cac:ServiceProviderParty>
        <cbc:ServiceTypeCode listName="organisation-role">ted-esen</cbc:ServiceTypeCode>
        <cac:Party>
          <cac:PartyIdentification>
            <cbc:ID schemeName="organization">ORG-0002</cbc:ID>
          </cac:PartyIdentification>
        </cac:Party>
      </cac:ServiceProviderParty>
    </cac:Party>
  </cac:ContractingParty>
  <cac:ProcurementProject>
    <cbc:Name languageID="ENG">Title 1</cbc:Name>
    <cbc:Description languageID="ENG">Description 1</cbc:Description>
    <cbc:ProcurementTypeCode listName="contract-nature">services</cbc:ProcurementTypeCode>
    <cbc:Note languageID="ENG">Test notice</cbc:Note>
    <cac:MainCommodityClassification>
      <cbc:ItemClassificationCode listName="cpv">72243000</cbc:ItemClassificationCode>
    </cac:MainCommodityClassification>
  </cac:ProcurementProject>
</PriorInformationNotice>
arinurkkala commented 1 year ago

In the eForms examples, it seems to be used in competition and contract award notices. Now you are validating for PriorInformation notice (pin in url).

eduardsmirnov commented 1 year ago

image In the SDK 1.5 I see this field for PIN as well.

arinurkkala commented 1 year ago

Can you provide the XML that you are sending? We do not log validation requests. Or you can use the PUT -operation where we have proper logging.

eduardsmirnov commented 1 year ago

Tried to PUT same PIN now, got this /external-write/v1/eform/pin

HTTP/1.1 500 Internal Server Error content-length: 0 date: Mon, 06 Mar 2023 14:22:25 GMT x-azure-ref: 20230306T142225Z-9ht0utyykp5t538eg73fyecczn00000005a000000000gppq x-cache: CONFIG_NOCACHE

arinurkkala commented 1 year ago

Hi,

I took the example XML pin-buyer_24_minimal.xml and added TransmissionDate. I used the validation endpoint and it works fine. XML:

<?xml version="1.0"?>
<!-- Based on https://ted.europa.eu/udl?uri=TED:NOTICE:168752-2020:TEXT:EN:HTML
-->
<PriorInformationNotice xmlns="urn:oasis:names:specification:ubl:schema:xsd:PriorInformationNotice-2" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:efext="http://data.europa.eu/p27/eforms-ubl-extensions/1" xmlns:efbc="http://data.europa.eu/p27/eforms-ubl-extension-basic-components/1" xmlns:efac="http://data.europa.eu/p27/eforms-ubl-extension-aggregate-components/1" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <ext:UBLExtensions>
        <ext:UBLExtension>
            <ext:ExtensionContent>
                <efext:EformsExtension>
                    <efac:NoticeSubType>
                        <cbc:SubTypeCode listName="notice-subtype">1</cbc:SubTypeCode>
                    </efac:NoticeSubType>
                    <efbc:TransmissionDate>2023-04-23+01:00</efbc:TransmissionDate>
                    <efac:Organizations>
                        <efac:Organization>
                            <efac:Company>
                                <cac:PartyIdentification>
                                    <cbc:ID schemeName="organization">ORG-0001</cbc:ID>
                                </cac:PartyIdentification>
                                <cac:PartyName>
                                    <cbc:Name languageID="ITA">IRCCS Policlinico ospedale San Martino</cbc:Name>
                                </cac:PartyName>
                                <cac:PostalAddress>
                                    <cbc:CityName>Genova</cbc:CityName>
                                    <cbc:PostalZone>ABC123</cbc:PostalZone>
                                    <cbc:CountrySubentityCode listName="nuts">ITF14</cbc:CountrySubentityCode>
                                    <cac:Country>
                                        <cbc:IdentificationCode listName="country">ITA</cbc:IdentificationCode>
                                    </cac:Country>
                                </cac:PostalAddress>
                                <cac:PartyLegalEntity>
                                    <cbc:CompanyID>123 456 789</cbc:CompanyID>
                                </cac:PartyLegalEntity>
                                <cac:Contact>
                                    <cbc:Telephone>+39 0105552612</cbc:Telephone>
                                    <cbc:ElectronicMail>settore.patrimoniale@hsanmartino.it</cbc:ElectronicMail>
                                </cac:Contact>
                            </efac:Company>
                        </efac:Organization>
                    </efac:Organizations>
                </efext:EformsExtension>
            </ext:ExtensionContent>
        </ext:UBLExtension>
    </ext:UBLExtensions>
    <cbc:UBLVersionID>2.3</cbc:UBLVersionID>
    <cbc:CustomizationID>eforms-sdk-1.3</cbc:CustomizationID>
    <cbc:ID schemeName="notice-id">e45d1409-9944-4fb0-84c5-f41ce774d37f</cbc:ID>
    <cbc:IssueDate>2020-04-08+01:00</cbc:IssueDate>
    <cbc:IssueTime>03:57:07+01:00</cbc:IssueTime>
    <cbc:VersionID>01</cbc:VersionID>
    <cbc:RegulatoryDomain>32014L0024</cbc:RegulatoryDomain>
    <cbc:NoticeTypeCode listName="planning">pin-buyer</cbc:NoticeTypeCode>
    <cbc:NoticeLanguageCode>ITA</cbc:NoticeLanguageCode>
    <cac:ContractingParty>
        <cbc:BuyerProfileURI>https://www.hsanmartino.it</cbc:BuyerProfileURI>
        <cac:ContractingPartyType>
            <cbc:PartyTypeCode listName="buyer-legal-type">pub-undert-la</cbc:PartyTypeCode>
        </cac:ContractingPartyType>
        <cac:ContractingActivity>
            <cbc:ActivityTypeCode listName="authority-activity">health</cbc:ActivityTypeCode>
        </cac:ContractingActivity>
        <cac:Party>
            <cac:PartyIdentification>
                <cbc:ID schemeName="organization">ORG-0001</cbc:ID>
            </cac:PartyIdentification>
        </cac:Party>
    </cac:ContractingParty>
    <cac:ProcurementProject>
        <cbc:Name languageID="ITA">Avviso consultazione preliminare mat. dedicato a ventilatore polmonare mod. Monnal T75</cbc:Name>
        <cbc:Description languageID="ITA">Oggetto: Consultazione preliminare di mercato volta all’eventuale acquisizione, mediante procedura negoziata senza previa pubblicazione di un bando di gara, ex art. 63, comma 2, lett. b), del decreto legislativo del 18.4.2016, n. 50, per la fornitura di materiale dedicato a ventilatore polmonare mod. Monnal T75. Motivazione della pubblicazione: con il presente avviso si intende avviare una consultazione preliminare di mercato al fine di conoscere se, diversamente dalle informazioni in possesso di questa stazione appaltante, altri operatori economici oltre a Medival srl, possano fornire i prodotti di seguito indicati: — valvola espiratoria per ventilatori Monnal T75 autoclavabile blu, n. 50 pezzi, — sensore di flusso per ventilatori Monnal T75 autoclavabile blu, n. 50 pezzi, — valvola espiratoria per ventilator Monnal T75, n. 350 pezzi, — sensore di flusso per ventilatori Monnal T75, n. 350 pezzi.</cbc:Description>
        <cbc:ProcurementTypeCode listName="contract-nature">supplies</cbc:ProcurementTypeCode>
        <cac:MainCommodityClassification>
            <cbc:ItemClassificationCode listName="cpv">33157000</cbc:ItemClassificationCode>
        </cac:MainCommodityClassification>
    </cac:ProcurementProject>
</PriorInformationNotice>
arinurkkala commented 1 year ago

By comparing our XML:s, we can see that in your request TransmissionDate is before NoticeSubType. If you move it to the correct place (after NoticeSubType), it should work. The order comes from the XSD schema.

eduardsmirnov commented 1 year ago

Where could I download the xsd schema you are using? Something is wrong on your side or you are not using TED schema.

I got your example and tried to validate it using TED CVS API and got an exception.

This is a request: { "notice": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjwhLS0gQmFzZWQgb24gaHR0cHM6Ly90ZWQuZXVyb3BhLmV1L3VkbD91cmk9VEVEOk5PVElDRToxNjg3NTItMjAyMDpURVhUOkVOOkhUTUwKLS0+CjxQcmlvckluZm9ybWF0aW9uTm90aWNlIHhtbG5zPSJ1cm46b2FzaXM6bmFtZXM6c3BlY2lmaWNhdGlvbjp1Ymw6c2NoZW1hOnhzZDpQcmlvckluZm9ybWF0aW9uTm90aWNlLTIiCiAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOmV4dD0idXJuOm9hc2lzOm5hbWVzOnNwZWNpZmljYXRpb246dWJsOnNjaGVtYTp4c2Q6Q29tbW9uRXh0ZW5zaW9uQ29tcG9uZW50cy0yIgogICAgICAgICAgICAgICAgICAgICAgICB4bWxuczpjYmM9InVybjpvYXNpczpuYW1lczpzcGVjaWZpY2F0aW9uOnVibDpzY2hlbWE6eHNkOkNvbW1vbkJhc2ljQ29tcG9uZW50cy0yIgogICAgICAgICAgICAgICAgICAgICAgICB4bWxuczplZmV4dD0iaHR0cDovL2RhdGEuZXVyb3BhLmV1L3AyNy9lZm9ybXMtdWJsLWV4dGVuc2lvbnMvMSIKICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6ZWZiYz0iaHR0cDovL2RhdGEuZXVyb3BhLmV1L3AyNy9lZm9ybXMtdWJsLWV4dGVuc2lvbi1iYXNpYy1jb21wb25lbnRzLzEiCiAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOmVmYWM9Imh0dHA6Ly9kYXRhLmV1cm9wYS5ldS9wMjcvZWZvcm1zLXVibC1leHRlbnNpb24tYWdncmVnYXRlLWNvbXBvbmVudHMvMSIKICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6Y2FjPSJ1cm46b2FzaXM6bmFtZXM6c3BlY2lmaWNhdGlvbjp1Ymw6c2NoZW1hOnhzZDpDb21tb25BZ2dyZWdhdGVDb21wb25lbnRzLTIiCiAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPgoJPGV4dDpVQkxFeHRlbnNpb25zPgoJCTxleHQ6VUJMRXh0ZW5zaW9uPgoJCQk8ZXh0OkV4dGVuc2lvbkNvbnRlbnQ+CgkJCQk8ZWZleHQ6RWZvcm1zRXh0ZW5zaW9uPgoJCQkJCTxlZmFjOk5vdGljZVN1YlR5cGU+CgkJCQkJCTxjYmM6U3ViVHlwZUNvZGUgbGlzdE5hbWU9Im5vdGljZS1zdWJ0eXBlIj4xPC9jYmM6U3ViVHlwZUNvZGU+CgkJCQkJPC9lZmFjOk5vdGljZVN1YlR5cGU+CgkJCQkJPGVmYmM6VHJhbnNtaXNzaW9uRGF0ZT4yMDIzLTA0LTIzKzAxOjAwPC9lZmJjOlRyYW5zbWlzc2lvbkRhdGU+CgkJCQkJPGVmYWM6T3JnYW5pemF0aW9ucz4KCQkJCQkJPGVmYWM6T3JnYW5pemF0aW9uPgoJCQkJCQkJPGVmYWM6Q29tcGFueT4KCQkJCQkJCQk8Y2FjOlBhcnR5SWRlbnRpZmljYXRpb24+CgkJCQkJCQkJCTxjYmM6SUQgc2NoZW1lTmFtZT0ib3JnYW5pemF0aW9uIj5PUkctMDAwMTwvY2JjOklEPgoJCQkJCQkJCTwvY2FjOlBhcnR5SWRlbnRpZmljYXRpb24+CgkJCQkJCQkJPGNhYzpQYXJ0eU5hbWU+CgkJCQkJCQkJCTxjYmM6TmFtZSBsYW5ndWFnZUlEPSJJVEEiPklSQ0NTIFBvbGljbGluaWNvIG9zcGVkYWxlIFNhbiBNYXJ0aW5vPC9jYmM6TmFtZT4KCQkJCQkJCQk8L2NhYzpQYXJ0eU5hbWU+CgkJCQkJCQkJPGNhYzpQb3N0YWxBZGRyZXNzPgoJCQkJCQkJCQk8Y2JjOkNpdHlOYW1lPkdlbm92YTwvY2JjOkNpdHlOYW1lPgoJCQkJCQkJCQk8Y2JjOlBvc3RhbFpvbmU+QUJDMTIzPC9jYmM6UG9zdGFsWm9uZT4KCQkJCQkJCQkJPGNiYzpDb3VudHJ5U3ViZW50aXR5Q29kZSBsaXN0TmFtZT0ibnV0cyI+SVRGMTQ8L2NiYzpDb3VudHJ5U3ViZW50aXR5Q29kZT4KCQkJCQkJCQkJPGNhYzpDb3VudHJ5PgoJCQkJCQkJCQkJPGNiYzpJZGVudGlmaWNhdGlvbkNvZGUgbGlzdE5hbWU9ImNvdW50cnkiPklUQTwvY2JjOklkZW50aWZpY2F0aW9uQ29kZT4KCQkJCQkJCQkJPC9jYWM6Q291bnRyeT4KCQkJCQkJCQk8L2NhYzpQb3N0YWxBZGRyZXNzPgoJCQkJCQkJCTxjYWM6UGFydHlMZWdhbEVudGl0eT4KCQkJCQkJCQkJPGNiYzpDb21wYW55SUQ+MTIzIDQ1NiA3ODk8L2NiYzpDb21wYW55SUQ+CgkJCQkJCQkJPC9jYWM6UGFydHlMZWdhbEVudGl0eT4KCQkJCQkJCQk8Y2FjOkNvbnRhY3Q+CgkJCQkJCQkJCTxjYmM6VGVsZXBob25lPiszOSAwMTA1NTUyNjEyPC9jYmM6VGVsZXBob25lPgoJCQkJCQkJCQk8Y2JjOkVsZWN0cm9uaWNNYWlsPnNldHRvcmUucGF0cmltb25pYWxlQGhzYW5tYXJ0aW5vLml0PC9jYmM6RWxlY3Ryb25pY01haWw+CgkJCQkJCQkJPC9jYWM6Q29udGFjdD4KCQkJCQkJCTwvZWZhYzpDb21wYW55PgoJCQkJCQk8L2VmYWM6T3JnYW5pemF0aW9uPgoJCQkJCTwvZWZhYzpPcmdhbml6YXRpb25zPgoJCQkJPC9lZmV4dDpFZm9ybXNFeHRlbnNpb24+CgkJCTwvZXh0OkV4dGVuc2lvbkNvbnRlbnQ+CgkJPC9leHQ6VUJMRXh0ZW5zaW9uPgoJPC9leHQ6VUJMRXh0ZW5zaW9ucz4KCTxjYmM6VUJMVmVyc2lvbklEPjIuMzwvY2JjOlVCTFZlcnNpb25JRD4KCTxjYmM6Q3VzdG9taXphdGlvbklEPmVmb3Jtcy1zZGstMS4zPC9jYmM6Q3VzdG9taXphdGlvbklEPgoJPGNiYzpJRCBzY2hlbWVOYW1lPSJub3RpY2UtaWQiPmU0NWQxNDA5LTk5NDQtNGZiMC04NGM1LWY0MWNlNzc0ZDM3ZjwvY2JjOklEPgoJPGNiYzpJc3N1ZURhdGU+MjAyMC0wNC0wOCswMTowMDwvY2JjOklzc3VlRGF0ZT4KCTxjYmM6SXNzdWVUaW1lPjAzOjU3OjA3KzAxOjAwPC9jYmM6SXNzdWVUaW1lPgoJPGNiYzpWZXJzaW9uSUQ+MDE8L2NiYzpWZXJzaW9uSUQ+Cgk8Y2JjOlJlZ3VsYXRvcnlEb21haW4+MzIwMTRMMDAyNDwvY2JjOlJlZ3VsYXRvcnlEb21haW4+Cgk8Y2JjOk5vdGljZVR5cGVDb2RlIGxpc3ROYW1lPSJwbGFubmluZyI+cGluLWJ1eWVyPC9jYmM6Tm90aWNlVHlwZUNvZGU+Cgk8Y2JjOk5vdGljZUxhbmd1YWdlQ29kZT5JVEE8L2NiYzpOb3RpY2VMYW5ndWFnZUNvZGU+Cgk8Y2FjOkNvbnRyYWN0aW5nUGFydHk+CgkJPGNiYzpCdXllclByb2ZpbGVVUkk+aHR0cHM6Ly93d3cuaHNhbm1hcnRpbm8uaXQ8L2NiYzpCdXllclByb2ZpbGVVUkk+CgkJPGNhYzpDb250cmFjdGluZ1BhcnR5VHlwZT4KCQkJPGNiYzpQYXJ0eVR5cGVDb2RlIGxpc3ROYW1lPSJidXllci1sZWdhbC10eXBlIj5wdWItdW5kZXJ0LWxhPC9jYmM6UGFydHlUeXBlQ29kZT4KCQk8L2NhYzpDb250cmFjdGluZ1BhcnR5VHlwZT4KCQk8Y2FjOkNvbnRyYWN0aW5nQWN0aXZpdHk+CgkJCTxjYmM6QWN0aXZpdHlUeXBlQ29kZSBsaXN0TmFtZT0iYXV0aG9yaXR5LWFjdGl2aXR5Ij5oZWFsdGg8L2NiYzpBY3Rpdml0eVR5cGVDb2RlPgoJCTwvY2FjOkNvbnRyYWN0aW5nQWN0aXZpdHk+CgkJPGNhYzpQYXJ0eT4KCQkJPGNhYzpQYXJ0eUlkZW50aWZpY2F0aW9uPgoJCQkJPGNiYzpJRCBzY2hlbWVOYW1lPSJvcmdhbml6YXRpb24iPk9SRy0wMDAxPC9jYmM6SUQ+CgkJCTwvY2FjOlBhcnR5SWRlbnRpZmljYXRpb24+CgkJPC9jYWM6UGFydHk+Cgk8L2NhYzpDb250cmFjdGluZ1BhcnR5PgoJPGNhYzpQcm9jdXJlbWVudFByb2plY3Q+CgkJPGNiYzpOYW1lIGxhbmd1YWdlSUQ9IklUQSI+QXZ2aXNvIGNvbnN1bHRhemlvbmUgcHJlbGltaW5hcmUgbWF0LiBkZWRpY2F0byBhIHZlbnRpbGF0b3JlIHBvbG1vbmFyZSBtb2QuIE1vbm5hbCBUNzU8L2NiYzpOYW1lPgoJCTxjYmM6RGVzY3JpcHRpb24gbGFuZ3VhZ2VJRD0iSVRBIj5PZ2dldHRvOiBDb25zdWx0YXppb25lIHByZWxpbWluYXJlIGRpIG1lcmNhdG8gdm9sdGEgYWxs4oCZZXZlbnR1YWxlIGFjcXVpc2l6aW9uZSwgbWVkaWFudGUgcHJvY2VkdXJhIG5lZ296aWF0YSBzZW56YSBwcmV2aWEgcHViYmxpY2F6aW9uZSBkaSB1biBiYW5kbyBkaSBnYXJhLCBleCBhcnQuIDYzLCBjb21tYSAyLCBsZXR0LiBiKSwgZGVsIGRlY3JldG8gbGVnaXNsYXRpdm8gZGVsIDE4LjQuMjAxNiwgbi4gNTAsIHBlciBsYSBmb3JuaXR1cmEgZGkgbWF0ZXJpYWxlIGRlZGljYXRvIGEgdmVudGlsYXRvcmUgcG9sbW9uYXJlIG1vZC4gTW9ubmFsIFQ3NS4gTW90aXZhemlvbmUgZGVsbGEgcHViYmxpY2F6aW9uZTogY29uIGlsIHByZXNlbnRlIGF2dmlzbyBzaSBpbnRlbmRlIGF2dmlhcmUgdW5hIGNvbnN1bHRhemlvbmUgcHJlbGltaW5hcmUgZGkgbWVyY2F0byBhbCBmaW5lIGRpIGNvbm9zY2VyZSBzZSwgZGl2ZXJzYW1lbnRlIGRhbGxlIGluZm9ybWF6aW9uaSBpbiBwb3NzZXNzbyBkaSBxdWVzdGEgc3RhemlvbmUgYXBwYWx0YW50ZSwgYWx0cmkgb3BlcmF0b3JpIGVjb25vbWljaSBvbHRyZSBhIE1lZGl2YWwgc3JsLCBwb3NzYW5vIGZvcm5pcmUgaSBwcm9kb3R0aSBkaSBzZWd1aXRvIGluZGljYXRpOiDigJQgdmFsdm9sYSBlc3BpcmF0b3JpYSBwZXIgdmVudGlsYXRvcmkgTW9ubmFsIFQ3NSBhdXRvY2xhdmFiaWxlIGJsdSwgbi4gNTAgcGV6emksIOKAlCBzZW5zb3JlIGRpIGZsdXNzbyBwZXIgdmVudGlsYXRvcmkgTW9ubmFsIFQ3NSBhdXRvY2xhdmFiaWxlIGJsdSwgbi4gNTAgcGV6emksIOKAlCB2YWx2b2xhIGVzcGlyYXRvcmlhIHBlciB2ZW50aWxhdG9yIE1vbm5hbCBUNzUsIG4uIDM1MCBwZXp6aSwg4oCUIHNlbnNvcmUgZGkgZmx1c3NvIHBlciB2ZW50aWxhdG9yaSBNb25uYWwgVDc1LCBuLiAzNTAgcGV6emkuPC9jYmM6RGVzY3JpcHRpb24+CgkJPGNiYzpQcm9jdXJlbWVudFR5cGVDb2RlIGxpc3ROYW1lPSJjb250cmFjdC1uYXR1cmUiPnN1cHBsaWVzPC9jYmM6UHJvY3VyZW1lbnRUeXBlQ29kZT4KCQk8Y2FjOk1haW5Db21tb2RpdHlDbGFzc2lmaWNhdGlvbj4KCQkJPGNiYzpJdGVtQ2xhc3NpZmljYXRpb25Db2RlIGxpc3ROYW1lPSJjcHYiPjMzMTU3MDAwPC9jYmM6SXRlbUNsYXNzaWZpY2F0aW9uQ29kZT4KCQk8L2NhYzpNYWluQ29tbW9kaXR5Q2xhc3NpZmljYXRpb24+Cgk8L2NhYzpQcm9jdXJlbWVudFByb2plY3Q+CjwvUHJpb3JJbmZvcm1hdGlvbk5vdGljZT4=", "language": "en", "validationMode": "static", "eFormsSdkVersion": "eforms-sdk-1.3" }

This is a response: { "errorCode": 400, "message": "The notice is an invalid XML against its XSD. See below the full error:\n[{\"line\":19,\"column\":29,\"message\":\"cvc-complex-type.2.4.a: Invalid content was found starting with element '{\\\"http://data.europa.eu/p27/eforms-ubl-extension-basic-components/1\\\":TransmissionDate}'. One of '{\\\"http://data.europa.eu/p27/eforms-ubl-extension-aggregate-components/1\\\":Organizations, \\\"http://data.europa.eu/p27/eforms-ubl-extension-aggregate-components/1\\\":Publication, \\\"http://data.europa.eu/p27/eforms-ubl-extension-aggregate-components/1\\\":SelectionCriteria, \\\"http://data.europa.eu/p27/eforms-ubl-extension-aggregate-components/1\\\":StrategicProcurement, \\\"http://data.europa.eu/p27/eforms-ubl-extension-aggregate-components/1\\\":SubsidiaryClassification, \\\"http://data.europa.eu/p27/eforms-ubl-extension-aggregate-components/1\\\":ReferencedDocumentPart, \\\"http://data.europa.eu/p27/eforms-ubl-extension-aggregate-components/1\\\":TenderSubcontractingRequirements}' is expected.\"}]", "timestamp": "2023-03-07T08:11:52Z" }

And when I try to validate same XML with TransmissionDate element on the right place before NoticeSubType, like I had in my original sample, the notice is validated.

arinurkkala commented 1 year ago

You are using "eFormsSdkVersion": "eforms-sdk-1.3. Please use the correct version.

The XSD schemas are from the SDK: https://github.com/OP-TED/eForms-SDK/tree/develop/schemas

eduardsmirnov commented 1 year ago

Sorry but you are using version 1.3, see your XML example <cbc:CustomizationID>eforms-sdk-1.3</cbc:CustomizationID>

What is a correct version?

It did not take time to retry with version 1.5 set inside your XML example and in API parameters, I got same validation error.

Also compared all files in "develop" branch and in version 1.5, files are same. Validating by the schema, my XML file is correct in my implementation and in TED validation API but is invalid in Hilma validation API.

I am confused.

eduardsmirnov commented 1 year ago

Just curious, tried to validate same file using another available online validator from Doffin (Norway), https://anskaffelser.dev/service/validator/ I got same results as on my local computer and on TED

arinurkkala commented 1 year ago

I moved TransmissionDate and TransmissionTime after NoticeSubType in your example and it works. So clearly the ordering is an issue where Hilma differs from TED. We will remove the order attribute from the generated XSD classes once we bump to version 1.6 As to "What is a correct version?" -We intend to use the latest. Currently we use 1.5.1, since 1.6 came out just yesterday.

eduardsmirnov commented 1 year ago

Would you support only one version at a time or many versions ? Cause it is not always possible to switch to the latest version immediately.

arinurkkala commented 1 year ago

It should be fine for all requests with the same major version. We intend to go live with a fairly new version, where the SDK version freeze will occur sometime during the summer. After that SDK updates should be infrequent, since TED will have support for some years.

Havunen commented 1 year ago

The original issue with validation route should be fixed now in test environment, can you please try again @eduardsmirnov

eduardsmirnov commented 1 year ago

Hi @Havunen not sure what "validation route" you mean here, I tried now to validate subtype 4, see xml content below, I get back message that some element is missing, however same xml is validated well using TED API, Tried both ways, to put TransmissionDate before and after NoticeSubtype

`<?xml version="1.0" encoding="utf-8"?>

4 2023-03-08+00:00 16:02:36+00:00 ORG-0001 Buyer 1 Tallinn EST B1 112 b1@b1.xx ORG-0002 Other company 1 Helsinki FIN O1 112 o1@o1.xx http://mercell.com/ ORG-0003 Mercell Holding ASA Askekroken 11 Oslo 0277 NO081 NOR 980921565 eSender +47 21018800 +47 21018801 post@mercell.com 2.3 eforms-sdk-1.5 e0efb943-44b3-4084-8095-1ffdd02cff45 2023-03-08+00:00 16:02:36+00:00 01 2023-04-02+03:00 32014L0024 pin-only ENG body-pl defence ORG-0001 ted-esen ORG-0003 Main title Main description. services 70100000 PAR-0000 ORG-0002 ORG-0002 Main title Main description. services 70100000 `
eduardsmirnov commented 1 year ago

After some ping-pong the validation seems to be working. Closing.