Additionele informatie voor de XML import

Gewijzigd op Di, 24 Okt, 2023 om 1:26 PM

In dit artikel


Veldmapping

Hieronder vind je een overzicht van alle velden in de product.xsd met een nadere toelichting en voorbeelden. Deze velden zijn hier benoemd om het eenvoudiger leesbaar te maken. In Automatisch updaten van je aanbod met XML vind je de product.xsd. Hierin staat de technische opzet van de XML structuur beschreven, inclusief alle mogelijke data types/waarden.


Kijk ook naar ons xml voorbeeld om een beeld te krijgen hoe al deze data moet worden vormgegeven.

 Veldnaam/elementenOmschrijvingEisen
* Products / Product<Products> is root element van de XML. De onderstaande elementen vormen de structuur voor een product. Elk nieuw product start met het element <Product> 
IDGebruik het ID element om een unieke waarde toe te kennen aan het product. Deze wordt door Springest gebruikt om bestaande producten te updaten. De Importer werkt CRUD.
Dit betekent dat als een ID nog niet bestaat in de Springest Database, een nieuw product aangemaakt. Als een ID niet aanwezig is in de XML, maar wel in de database dan verandert de status van het product naar 'verwijderd'. Als een product ID gevonden wordt, dan wordt alle informatie uit de xml geupdate zodat de training volledig is bijgewerkt. 

Informeer datasupport altijd wanneer je de ID's in de xml aanpast.
  • Verplicht veld
  • Unieke per product
NameGebruik het Name element om de naam van het product op te geven. Deze naam moet uniek zijn. Ook als je meerdere dezelfde producten aanbiedt in andere talen. Ons advies is om de taal dan te noemen in de 'Name'. 
  • Verplicht veld
  • Uniek per product
DescriptionGebruik het Description element om een beschrijving op te geven. Maak gebruik van CDATA om HTML opmaak mee te geven.  Leestekens die geaccepteerd worden binnen CDATA: ' " < > &.

De volgende HTML tags zijn toegestaan:  p, b, strong, h2, em, i, ul, ol, li, br. Overige HTML tags worden niet overgenomen.

Hier lees je meer over het gebruik van CDATA in XML.


  • Verplicht veld 
  • Ten minste 150 leestekens
*ImagesImages is een root element voor afbeeldingen opgebouwd uit een of meerdere ImageUrl elementen
  • Optioneel
Images/ImageUrlGebruik ImageUrl element om een url mee te geven van een afbeelding.  
  • Optioneel
  • URL
  • .png, .gif, any other image format
VideoEmbedGebruik VideoEmbed element om video te plaatsen op het product door middel van een URL
  • Optioneel
  • URL 
  • mp4, Youtube
LanguageGebruik Language element om de taal op te geven die van toepassing is op het product.
  • Verplicht veld
  • Een alpha 2 code van ISO lijst.
PriceGebruik Price element om de prijs (exclusief btw) op te geven van het product.
  • Altijd de kale totale prijs zonder BTW. In geen enkel geval voeg je hier een BTW prijs aan toe. Btw wordt apart weergegeven, zie onder.
  • Voor gratis producten gebruik 0. 
  • Uitzondering: Voor incompany/ maatwerk producten met een prijs in overleg vul geen waarde in 
  • Onderaan deze pagina meer over prijzen
  • Verplicht veld
  • Decimaal
VatIncluded   Gebruik het VatIncluded veld om aan te geven of de prijs van het product Vrijgesteld is van BTW of niet. 
Mogelijk waarden:
  • 'exempt', Prijs op product is vrijgesteld van BTW. Indien je hier gebruik van maakt, graag altijd dit met onze support afdeling communiceren. 
  • 'no', prijs op product is niet vrijgesteld van BTW getoond worden. Wij verwachten in dit geval dat VatAmount aanwezig is en een correcte prijs BTW prijs weergeeft.
  • Verplicht veld
  • Waarden: 'exempt' or 'no'
VatAmountGebruik het VatAmount element om het bedrag aan BTW op te geven van de opgegeven prijs onder het Price element. Indien je BTW vrijgesteld mag leveren, is de waarde van dit veld niet relevant.
  • Verplicht
  • Decimaal
PriceExemptAmount  Gebruik het PriceExemptAmount element om een alternatieve prijs op te geven vrijgesteld van BTW. 
Hiermee is het mogelijk om prijs zowel vrijgesteld als prijs belast met BTW op te geven per product. 
De prijs vrijgesteld van BTW wordt getoond aan gebruikers (werknemers van organisaties) die product vrijgesteld van BTW kunnen afnemen.  (alleen relevant als je een training zowel BTW vrij als BTW belast afgenomen mag worden) 
  • Optioneel
  • Decimaal
PricePeriodGebruik het PricePeriod veld om aan te geven over welke periode de prijs getoond wordt.
Mogelijke waarden: 
  • 'monthly', opgegeven prijs is per maand
  • 'yearly', opgegeven prijs is per jaar
  • 'all', opgegeven prijs geldt voor de totale duur van de opleiding. 
  • Verplicht
  • Waarden: 'monthly' 'yearly', 'all'
PriceAgreementEnkel van toepassing op Incompany/maatwerk producten. Voor de overige producten negeren wij deze waarde.
Gebruik het PriceAgreement element om aan te geven of er in overleg afspraken gemaakt kunnen worden over prijs. 
Waarde: 
  • true
  • false
  • Optioneel
  • Boolean
* AdditionalCostsGebruik <AdditionalCosts> als root element om extra kosten te specificeren. Door gebruik te maken van AdditonalCosts krijg je de mogelijkheid om per kostensoort een ander BTW percentage te vragen.
Tevens kun je aangeven of producten optioneel of verplicht zijn. Optionele kosten geven wij weer gedurende het bestelproces, en een eindgebruiker kan deze wel of niet betalen.

  • Optioneel
AdditionalCostGebruik AdditionalCost element om een of meerdere kosten op te geven.
  • Optioneel
AdditionalCost/Type  Gebruik type element om het type kosten op te geven. 
  • Optioneel
  • waarden: 
    • "examination"
    • "excursions"
    • "lunch"
    • "dinner"
    • "registration fee"
    • "study material
    • "visa/permit"
    • "coaching"
    • "accommodation"
    • "arrangement"
    • "second accomodation"
AdditionalCost/PriceGebruik Price element om de prijs van de koste op te geven.
  • Optioneel
  • Decimaal
AdditionalCost/VatIncludedGebruik het VatIncluded veld om aan te geven of de prijs van de koste Vrijgesteld is van BTW of niet. 
Mogelijk waarden:
  • 'exempt', Prijs van de koste is vrijgesteld van BTW. Dit dien je eenmalig expliciet te vermelden aan datasupport.
  • 'no', prijs van de koste is niet vrijgesteld van BTW getoond worden. In dit geval verwachten wij altijd een prijs opgegeven bij Vatamount.
  • Verplicht
  • Waarden: 'exempt', 'no' 
AdditionalCost/VatAmountGebruik het VatAmount element om het bedrag aan BTW op te geven van de opgegeven prijs onder het Price element.
  • Verplicht
  • Decimaal
AdditionalCost/PriceExemptAmount 




Gebruik het PriceExemptAmount element om een alternatieve bedrag voor de koste op te geven vrijgesteld van BTW. 
  • Optioneel
  • Decimaal
AdditionalCost/VATExemptAmountGebruik het VATExemptAmount element om het BTW bedrag op te geven voor het opgegeven bedrag vrijgesteld van BTW. Sommige product met laag BTW moeten wel opgeteld worden in de totale prijs die is vrijgesteld van BTW.
(alleen relevant als je een training zowel BTW vrij als BTW belast afgenomen mag worden)  
  • Optioneel
  • Decimaal
AdditionalCost/MandatoryGebruik het Mandatory element om aan te geven of de koste verplicht is of optioneel. Optionele kosten kunnen door een gebruiker tijdens het boekingsproces wel of niet meegenomen worden in de aanschaf. 
  • Optioneel
  • boolean 
    • true
    • false
PriceCompleteGebruik het PriceComplete element om aan te geven of alle verplichte kosten zijn opgegeven. Wij verwachten altijd dat de prijzen volledig zijn. Niet volledige producten kunnen worden verwijderd.
  • Verplicht
  • boolean
    • true
    • false
PriceInfoGebruik het PriceInfo element om extra informatie mee te geven omtrent de prijs. 
  • Optioneel
CourseTypeGebruik het CourseType element om aan te geven wat het de vorm is van het product. In de meeste gevallen vul je hier 'course' in.
  • Verplicht
  • Mogelijke waarden:
    • 'course', 'cursus'
    • 'educational program',
    • 'opleiding'
    • 'seminar',
    • 'training'
    • 'workshop'
    • 'video'
    • 'evenement'
    • 'book'
DurationGebruik het Duration element om de totale lesduur van het product op te geven. 
  • Verplicht
  • Double
DurationUnitGebruik het DurationUnit element om de eenheid van de duur op te geven. 
  • Verplicht
  • Mogelijke waarden:
    • 'minutes'
    • 'hours'
    • 'days'
    • 'weeks'
    • 'months'
    • 'years'
DurationAgreementEnkel van toepassing op Incompany/maatwerk producten.
Gebruik het DurationAgreement element om aan te geven of er in overleg afspraken gemaakt kunnen worden over de duur. 

  • Optioneel
  • Boolean.
RuntimeGebruik het Runtime element om extra informatie mee te geven over de doorlooptijd van de training. 
Voorbeeld: "De opleiding bestaat uit 4 cursusavonden verspreidt over 2 maanden"
  • Optioneel
  • Vrij tekstveld
Completion Gebruik het Completion element om extra informatie mee te geven over de afronding van het product.
Voorbeeld: "Diploma", "Certificaat"
  • Optioneel
  • Vrij tekstveld
MaxParticipantsGebruik het MaxParticipants element om het max aantal deelnemers op te geven voor het product. Een training kan nooit plaatsvinden met meer mensen dan deze opgegeven waarde.
  • Alleen verplicht voor open inschrijving
MaxNumberOfSeatsGebruik het MaxNumberOfSeats element om het (max) aantal plaatsen aan te geven dat nog beschikbaar zijn voor de gekoppelde startdatum.
  
Voorbeeld: je hebt hier 3 opgegeven als waarde. Wij zullen dan na de derde inschrijving via Springest deze startdatum niet meer boekbaar maken.       
  • Optioneel: 
  • Per startdatum
MinNumberOfSeatsMinNumberOfSeats is alleen relevant wanneer je gebruik maakt van Automatisch annuleren. Wij annuleren een startdate wanneer aan de voorwaarden van MinNumberOfSeats niet is voldaan.

  • Optioneel: 
  • Per startdatum
AvailableSeatsMet AvailableSeats kun je aangeven hoeveel plaatsen er nog beschikbaar zijn. Wanneer deze op 0 staat sluiten wij de startdatum. Deze is dan wel nog zichtbaar maar niet meer boekbaar.    
  • Optioneel: 
  • Per startdatum
WebAddressGebruik het WebAddress element om de webpagina op te geven van het product aan de hand van een URL.
  • Verplicht
  • AnyURI
PdfBrochureGebruik het PdfBrochure element om een Brochure te koppelen aan het product. 
  • Optioneel
  • pdf URL
ProductType Gebruik het ProductType element om op te geven wat het type product is. 
  • 'open', Open inschrijving
  • 'home', Thuisstudie
  • 'in-company', incompany/maatwerk
  • elearning
  • 'book'
  • 'evenement' (zelden gebruikt)
  • 'learning-bite'  (zelden gebruikt)
  • 'group', een product specifiek voor groepsinschrijving bij bestaande klanten. Voor dit type product moet een specifiek domein op worden gegeven onder het veld AllowedSites
  • Verplicht
  • Mogelijke waarden:
    • 'open'
    • 'home'
    • 'in-company'
    • elearning
    • 'book'
    • 'evenement'
    • 'learning-bite' 
    • exam
* RegionsGebruik <Regions> als root element om Regio's te specificeren. Voor meer context: Invoeren van regio's, startdata en plaatsen
Region
Region/name
Gebruik Region element om een of meerdere regio's op te geven.
Region is alleen van belang als je voor producten geen startdata meegeeft. Indien er startdata aanwezig zijn deducteren wij uit het veld 'Place van de betreffende startingdateplace' (lees startdatum)  wat de correcte regio is waar dat startmoment gaat plaatsvinden. 
  • Optioneel
LevelGebruik het Level element om het niveau mee te geven. 
  • Optioneel
* PriceDiscounts/
  Discount 
Enkel voor producten die aan Go sites gekoppeld worden. Neem contact op met datasupport@springest.com als je verschillende kortingen hanteert. 

GoGebruik Go elementen om voor GO/zakelijke platform aan te geven waar je de korting wenst te hebben.  
  • Optioneel

Mogelijke waarden:

  • ns
  • Etc (zie xsd)
 *StartingDatePlacesGebruik <StartingDatePlaces> als root element om een of meerdere StartingDatePlace elementen te specificeren.
Gebruik Schedule om per  StartingDatePlace element  een rooster mee te geven. Voor meer context:
StartingDatePlace/IDGebruik ID element om een uniek ID mee te geven per StartingDatePlace element. 
  • Vrij tekstveld
StartingDatePlace/StartdateGebruik Startdate element om de startdatum van product op te geven.
  • yyyy-mm-dd
StartingDatePlace/EnddateGebruik Enddate element om de einddatum van product op te geven.
  • yyyy-mm-dd
StartingDatePlace/PlaceGebruik Place element om de locatie/plaats op te geven
  • Vrij tekst veld
StartingDatePlace/StartdateIsMonthOnlyGebruik StartdateIsMonthOnly element om aan te geven dat de startdatum een maand betreft. Voor een volledige datum in bij de datumvelden.
  • boolean
StartingDatePlace/EnddateIsMonthOnlyGebruik EnddateIsMonthOnly element om aan te geven dat de startdatum een maand betreft. Voor een volledige datum in bij de datumvelden.
  • boolean
StartingDatePlace/StartGuaranteedGebruik StartGuaranteed element om aan te geven dat de startdatum gegarandeerd plaats vindt.  Wanneer deze op true staat tonen wij dit op onze website.
  • boolean
* Schedule / CoursedayGebruik Schedule om per StartingDatePlace element  een rooster mee te geven met een of meerdere Courseday elementen. 
Courseday/IDGebruik ID element om een uniek ID mee te geven per CourseDay element. 
  • Vrij tekstveld
Courseday/DateGebruik Date element om aan te geven op welke dag het product plaatsvind. 
  • yyyy-mm-dd
Courseday/PlaceGebruik Place element om de locatie/plaats op te geven
  • Vrij tekstveld
Courseday/NameGebruik Name element om een naam aan de dag te geven. Voorbeeld: 'Lesdag 1: Introductie'
  • Vrij tekstveld
Courseday/StarttimeGebruik Starttime element om de starttijd op te geven van dag. 
  • hh:mm
Courseday/Endtime



Additionele opties:
Gebruik Endtime element om de Eindtijd op te geven van dag. 
  • hh:mm
* PePointsNeem contact op met datasupport@springest.com als je PE punten wilt toekennen aan jouw producten
*Moments Alleen relevant als je geen Courseday/schedule data meestuurt
CrohoIDGebruik het CrohoID element om ID op te geven volgens het keurmerk. Lees ook:  https://www.springest.nl/keurmerken/croho

  • Optioneel
CreboIDGebruik het CrohoID element om ID op te geven volgens het keurmerk. Lees ook:  https://www.springest.nl/keurmerken/crebo
  • Optioneel
PurposeAlleen voor vitality producten. Het doel van het product.
  • Optioneel
* CostPlacementsAlleen voor vitality producten. Hoe de kosten geplaatst worden. Dit kan afhankelijk van het contract met de klant verschillen per site.
  • Optioneel
*AllowedSitesGebruik AllowedSites als root element om de sites op te geven waar het product gepubliceerd moet worden. Enkel gebruiken voor 'group' producten.


Kosten invoeren in XML

Cursusprijs

 <Price>

Dit veld kun je het totale verplichte kosten opgeven voor de opleiding. 

Het is ook mogelijk om de totale verplichte kosten te specificeren per kostenpost. Vul dan enkel het lesgeld in en vul de extra kosten in onder <AdditionalCosts>. Hieronder meer over het gebruik van verschillende kostenposten. 

<VatAmount>

Hier kunt je aangeven wat het BTW bedrag is voor de cursus. 

NB. Als je gratis opleidingen wil aanbieden op Springest, geef dan de waarde 0 mee voor 'price' veld in de XML. Voor in-company trainingen kun je het veld leeg laten. Om er voor te zorgen dat 'op aanvraag' wordt getoond geef dan de waarde 'true' mee voor 'price-agreement' veld in de XML. 


Cost types, taxes and calculations in the XML:

It is possible to state the costs per cost type. This can be useful for example when you have different vat percentages per cost type. 
If this is the case you can fill in the cost for the 'tuition fee' in <price> and for stating different cost types and matching VAT percentages you can use the node  <AdditionalCosts> stating each cost type and all values per <AdditionalCost>.

Our example: 
Let assume you have these values in the xml:

<Price>100</Price> 

<AdditionalCost>

<Type> lunch </Type><Price> 40</Price> <VatIncluded> no</VatIncluded><VatAmount> 3</VatAmount><Mandatory> no</Mandatory>

</AdditionalCost>

<AdditionalCost>

<Type>registration fee </Type> * 
<Price> 20</Price> 
<VatIncluded> no</VatIncluded>
<VatAmount> 5</VatAmount>
<Mandatory>no</Mandatory>

</AdditionalCost>

* see our xsd for possible values. Note that tuition fee is not included because we expect it to be(included) in the <price> tag, it is 100 in our example.


Calculating course price

Below a tabel with different price options:

 PriceVatIncludedVatAmount
Price on Springest
Option1100no21121
Option2100exempt-100

Adding different cost types from Additional Costs:

The calculation follows the same method as for <price>. 

 TypePriceVatIncludedVatAmountMandatoryAdditional costs
Registration fee20no5yes+ 25
Lunch40exempt-yes+ 40
TOTAL+ 75
------------------------------------------------------------------------------------------------------------------

Calculation of the TOTAL price:

We will sum all mandatory costs and add to the total of the course price.

 PriceVatIncludedVatAmountAdditional costsTotal price on Springest
Option2100no2175196
Option3100exempt-75175

Additional information:

  • Courses free of charge should have <price>0</price>
  • For <producttype> in-company</producttype> there should not be a price. To make sure we don't show a price you can use the <PriceAgreement> true</PriceAgreement in the XML. We won't show any prices in that case.
  • The <VATamount> for for In-company trainings is not relevant. Please leave empty.
  • Optional costs are not shown until the actual booking is happening. On this booking screen we will give users the option to book any optional costs.
  • Have any questions or feedback for us? Please reach out to support@springest.nl and we will get back to you as soon as possible.


Aanleveren van startdata en rooster

Het komt vaak voor dat eenzelfde training meerdere startdata heeft. Aangezien de XML enkel unieke titels (unieke id's) mag bevatten, is het de bedoeling dat de verschillende data aan dezelfde training gekoppeld worden.

Hieronder zie je de structuur waar aangehouden moet worden, welke ook in het  xml voorbeeld te zien is

<Products>
  <Product>
    <ID>product-0001</ID>
    <StartingDatePlaces>
     <StartingDatePlace>
	<ID></ID>
       <Startdate>2014-08-24</Startdate>
       <Place>Amsterdam</Place>
       <StartdateIsMonthOnly>false</StartdateIsMonthOnly>
       <Enddate>2014-09-24</Enddate>
       <EnddateIsMonthOnly>false</EnddateIsMonthOnly>
       <StartGuaranteed>true</StartGuaranteed>
       <Schedule>
         <CourseDay>
           <ID>ROO16_0657</ID>
           <Date>2017-02-08</Date>
           <Name lang="nl"><![CDATA[ Dag 2 ASOI ]]></Name>
           <StartTime>09:00:00</StartTime>
           <EndTime>17:00:00</EndTime>
           <Place>UTRECHT</Place>
         </CourseDay>
       </Schedule>
     </StartingDatePlace>
     <StartingDatePlace>
	<ID></ID>
       <Startdate>2014-09-24</Startdate>
       <Place>Rotterdam</Place>
       <StartdateIsMonthOnly>false</StartdateIsMonthOnly>
       <Enddate>2014-10-24</Enddate>
       <EnddateIsMonthOnly>false</EnddateIsMonthOnly>
       <StartGuaranteed>false</StartGuaranteed>
       <Schedule>
         <CourseDay>
           <ID>ROO16_0657</ID>
           <Date>2017-02-08</Date>
           <Name lang="nl"><![CDATA[ Dag 2 ASOI ]]></Name>
           <StartTime>09:00:00</StartTime>
           <EndTime>17:00:00</EndTime>
           <Place>UTRECHT</Place>
         </CourseDay>
       </Schedule>
      </StartingDatePlace>
    </StartingDatePlaces>
 </Product>
</Products>
	


Trainers toevoegen aan trainingen

Je kunt gebruik maken van jouw XML-feed voor Springest, om ook automatisch (nieuwe) trainers te koppelen aan jouw aanbod op Springest. Je hoeft enkel de email van de trainer toe te voegen aan de XML. Zie hieronder het gedeelte wat aan de  XML-feed moet toegevoegd worden:

<Trainers>
        <Trainer>
        	<Email>trainer_name_a@springest.com</Email>
	</Trainer>
        <Trainer>
        	<Email>trainer_name_b@springest.com</Email>
	 </Trainer>
 </Trainers>
	

Mocht de email nog niet bekend zijn in ons systeem, dan wordt automatisch een uitnodiging gestuurd naar de betreffende persoon om een trainer profiel aan te maken. Het profiel zal vervolgens automatisch gekoppeld zijn met de trainingen die je hebt aangegeven in de XML.

Importeren van trainer gegevens

Naast het koppelen van trainers aan trainingen is het ook mogelijk om trainers los toe te voegen aan. Via een aparte trainer XML/FEED is het mogelijk om alvast de gegevens van trainers aan te leveren. Wij zullen automatisch de trainers toe voegen aan ons systeem. Op basis van het aangeleverde email adres wordt een uitnodiging gestuurd aan de trainers om hun account te bevestigen. Het profiel van de trainers is op dat moment al aangevuld met de gedeelde informatie. 

Bekijk het  XML en XSD voorbeeld om te zien welke informatie is in te laden. 

Aanleveren van trainer gegevens

  1. Download: import_trainer_example.xml
  2. Voeg trainers toe aan de hand van de bestaande velden (zo compleet mogelijk)
  3. Check welke waarden zijn toegestaan per veld aan de hand van XML Schema: import_trainers_example.xsd
  4. Verander de naam van de XML in Provider-name_AllTrainers.xml. Voorbeeld: Springest_AllTrainers.xml
  5. Valideren: We verwachten dat je de XML die je aanmaakt eerst valideert eer je het deelt met datasupport. Op de volgende website kun je gemakkelijk jouw XML valideren tegen de XSD:  http://www.freeformatter.com/xml-validator-xsd.html
  6. Mail het bestand of de url van de feed naar datasupport@springest.com
  7. NOTE: Maak melding van de character encoding die gebruikt is voor de XML. Voorbeeld: UTF-8


PE punten toevoegen

Het is mogelijk om informatie over PE Punten per training aan te leveren via een Springest  XML-feed

In het  XML voorbeeld kan je zien hoe je verschillende PE organisaties, type punten, punten aan de XML kan toevoegen. 

Hieronder is de structuur nog eens uitgelicht:

f
	<PePoints>
            <PePoint>
                <Organisation></Organisation>
                <PointType></PointType>
                <Points></Points>
            </PePoint>
             <PePoint>
                <PeOrganisation></PeOrganisation>
                <PointType></PointType>
                <Points></Points>
            </PePoint>
        </PePoints>
	

Uit welke organisaties kan ik kiezen?

Op dit moment hebben we een aantal organisaties gekoppeld in ons systeem. Neem gerust  contact met ons op als er een organisatie ontbreekt.

De volledige lijst van organisatie namen en type punten die we op dit moment hebben kun je terug vinden onder het kopje PE Punten op de training pagina:

Bij deze ook een CSV met een lijst aan organisaties (niet volledig).


Vragen of feedback?

Neem dan contact op met onze technische helpdesk:

Mail: datasupport@springest.nl

Was dit artikel nuttig?

Dat is fantastisch!

Hartelijk dank voor uw beoordeling

Sorry dat we u niet konden helpen

Hartelijk dank voor uw beoordeling

Laat ons weten hoe we dit artikel kunnen verbeteren!

Selecteer tenminste een van de redenen
CAPTCHA-verificatie is vereist.

Feedback verzonden

We stellen uw moeite op prijs en zullen proberen het artikel te verbeteren