Business-level introduction
This document is designed for anyone who is involved with implementing a technical interface for transferring vacancies to Teamio from an external system. Business-level information is provided in this article:
Description of the interface
- External application sends the HTTP request to upload interface the import file (authentication data sent by POST method is included)
 - After successful authentication, the loaded file will be converted and Teamio “Drafts” folder
 - In case of failed authentication an error message will be sent to your external application
 - Information about the status for the imported vacancies is sent to the main user by e-mail
 - Only HTTPS protocol is supported
 
Syntax of HTTP request
- Url: https://g2.lmc.cz/import/custompath/import (custompath will vary)
 - Method: POST
 - Content-type: application/x-www-form-urlencoded
 - Login credentials – username, password
 
Sample
| 
					 1 2 3 4 5  | 
						POST /import/custompath/import HTTP/1.0 Host: g2.lmc.cz Content-type: application/x-www-form-urlencoded Accept: */* username=importlogin1&password=123456&xmlString=...  | 
					
cURL command line example for testing/debuging:
| 
					 1 2 3 4 5 6  | 
						curl --location --request POST 'https://g2.lmc.cz/import/custompath/import' \ --header 'cache-control: no-cache' \ --header 'content-type: application/x-www-form-urlencoded' \ --data-urlencode 'username=importlogin1' \ --data-urlencode 'password=123456' \ --data-urlencode 'xmlString=<content of import XML>'  | 
					
Demonstration PHP script for uploading XML of vacancy
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39  | 
						<?php /**  * LMC Demonstration PHP script for uploading XML imports to LMC's ATS Teamio   *  * @version $Id: 1.0.1 $  * @package lmc_sys  * @subpackage upload  * @access public  */ /**  * Settings part, modify as necessary...  */ $auth = array('login' => 'importlogin1', 'password' => '123456', 'url' => 'custompath'); $lXmlFile = "./test.xml"; $lUrl = 'https://g2.lmc.cz/import/' . $auth['url'] . '/import'; /**  * Working part, do not modify it...  */ $lHttpPost = array('username' => $auth['login'], 'password' => $auth['password'], 'url' => [$lUrl], 'xmlString' => ""); if ($lHttpPost['xmlString'] = file_get_contents($lXmlFile)) {   if (!$lReq = curl_init($lUrl)) die("Not able to connect to: " . $lUrl);   curl_setopt($lReq, CURLOPT_POST, TRUE);   curl_setopt($lReq, CURLOPT_SSL_VERIFYPEER, 0);   $lPostStr = http_build_query($lHttpPost);   curl_setopt($lReq, CURLOPT_POSTFIELDS, $lPostStr);   curl_setopt($lReq, CURLOPT_RETURNTRANSFER, TRUE);   curl_setopt($lReq, CURLOPT_FAILONERROR, TRUE);   $lResult = curl_exec($lReq);   if ($lResult) die("Successfuly uploaded!\n " . $lResult);   else die("server error: Not able to send data to: " . $lUrl . " , error message: " . curl_error($lReq));   curl_close($lReq); } else {   die("Not able to read input XML file!\n " . $lXmlFile); } ?>  | 
					
Validation of your xml
You should validate your xml file using the following XSD:
- http://schema.lmc.cz/ei_std/xsd/ei_std_jd_2006-10-19.xsd
 - http://schema.lmc.cz/ei_std/xsd/enumerationType.xsd
 
For example use xmllint in command line:
- 
- Download libxml2 for your operationg system and install or unpack from: http://xmlsoft.org/downloads.html
 - Download both xsd in web browser or in Linux command line:
 
 
| 
					 1 2  | 
						curl -o http://schema.lmc.cz/ei_std/xsd/ei_std_jd_2006-10-19.xsd curl -o http://schema.lmc.cz/ei_std/xsd/enumerationType.xsd  | 
					
- 
- Run xmllint from libxml2 (import.xml is validated XML file):
 
 
| 
					 1  | 
						bin/xmllint.exe --schema ei_std_jd_2006-10-19.xsd import.xml --noout  | 
					
- 
- 
When see this output then is XML valid:
 
 - 
 
| 
					 1  | 
						import.xml validates  | 
					
See another tools and value lists section.
XML examples of vacancies
XML of ordinary vacancy with HTML tags in Job Description
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99  | 
						<?xml version="1.0" encoding="utf-8"?> <positionList         xsi:schemaLocation="http://www.onrea.net/ei_std_jd/2006-10-19 http://schema.lmc.cz/ei_std/xsd/ei_std_jd_2006-10-19.xsd"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.onrea.net/ei_std_jd/2006-10-19">     <position>         <lang id="25" svlId="1000000"/>         <parameterList>             <parameter name="clientID_0">123456LMCTEST1</parameter>         </parameterList>         <organization>             <organizationalUnit>                 <contactInformation>                     <name>                         <firstName>Tester</firstName>                         <surname>Testerovič</surname>                     </name>                     <email>tester.testerovic@lmc.eu</email>                 </contactInformation>             </organizationalUnit>         </organization>         <jobDescription>             <positionName>Test Position</positionName>             <internalName>Internal name</internalName>             <employmentDuration>                 <workTimeSpecificationList id="202700001" svlId="2027000">Permanent</workTimeSpecificationList>             </employmentDuration>             <occupationFieldList>                 <occupationField id="200900013" svlId="2009000">IS/IT: Application and system development</occupationField>             </occupationFieldList>             <professionList>                 <profession id="201100006" svlId="2011000">IT Analyst</profession>             </professionList>             <employmentTypeList>                 <employmentType id="201300001" svlId="2013000">Full-time work</employmentType>                 <employmentType id="201300002" svlId="2013000">Part-time work</employmentType>                 <!--employmentType id="201300003" svlId="2013000">Contract work (work performed under Identification No.)</employmentType-->                 <!--employmentType id="201300005" svlId="2013000">Practical training and short-term placement</employmentType-->                 <!--employmentType id="201300007" svlId="2013000">Trainee programs</employmentType-->             </employmentTypeList>             <jobMarketStatusList>                 <jobMarketStatus id="203000001" svlId="2030000">Graduate</jobMarketStatus>             </jobMarketStatusList>             <healthState id="201900001" svlId="2019000">None</healthState>             <educationType id="203400001" svlId="2034000">Basic</educationType>             <remunerationPackage>                 <salary hidden="true">                     <minSalary>25000</minSalary>                     <maxSalary>30000</maxSalary>                     <currencyCode id="201400001" svlId="2014000">CZK</currencyCode>                     <baseInterval id="209800002" svlId="2098000">month</baseInterval>                 </salary>                 <benefitList>                     <benefit id="202800001" svlId="2028000">Bonuses</benefit>                     <benefit id="202800005" svlId="2028000">Contribution holiday</benefit>                 </benefitList>             </remunerationPackage>             <jobLocalityList>                 <jobLocality>                     <territory id="1" svlId="1006000">Europe</territory>                     <country id="56" svlId="1002000">Czech Republic</country>                     <region id="200000" svlId="1008000">Hlavní město Praha</region>                     <district id="23009999" svlId="1009000">území Hlavního města Prahy</district>                     <city id="200002" svlId="1010000">Prague</city>                     <zip xsi:nil="true"/>                     <number xsi:nil="true"/>                     <orientationNumber xsi:nil="true"/>                 </jobLocality>                 <jobLocality>                     <territory id="1" svlId="1006000">Europe</territory>                     <country id="56" svlId="1002000">Czech Republic</country>                     <region id="245749" svlId="1008000">Liberecký kraj</region>                     <district id="247497" svlId="1009000">Liberec</district>                 </jobLocality>             </jobLocalityList>         </jobDescription>         <richtext><![CDATA[ <h2>Jobs.cz</h2> <p><em>Jobs.cz & Prace.cz jsou jedny z našich nejnašlápnutějších služeb, která má backend v PHP a frontend v Reactu - právě ten by byl tvojí parketou. Jobs.cz vyvíjí celkem 3 týmy a tvým útočištěm by se stal tým Relevance, který má na starost to, aby se správné nabídky dostaly ke správným uživatelům. V týmu se potkáš s dalšími třemi vývojáři, UXákem, Produkťákem a Delivery managerem, kteří se na tebe už teď těší.</em></p> <p><strong>5 hlavních důvodů, proč to zvážit</strong></p> <ol> <li>Důraz na vzdělávání - děláme výměny zkušeností mezi týmy, interní kurzy a workshopy (např. se SensioLabs - autory Symfony), kurzy soft-skills, a když to doba dovolí, tak chodíme i na české a zahraniční konference</li> <li>Testování a code review bereme vážně - unit testy i funkční testy v Seleniu jsou pro nás samozřejmostí. Mrkni na náš testovací opensource Steward https://github.com/lmc-eu/steward.</li> <li>Máme už téměř > 10 let zkušeností s agilním vývojem.</li> <li>Máme < než 2 produkťáky</li> <li>Rádi ti to ukážeme trochu víc zblízka. V rámci náboru totiž organizujeme i tzv. "den na zkoušku", kdy se víc seznámíš nejen s týmem, ale i s kódem.</li> </ol> <p><strong>Jaké technologie budeš používat?</strong></p> <ul> <li>PHP 7.2 / Symfony 3/4 (implementace větší aplikace pro tebe určitě nebude problém)</li> <li>JavaScript / TypeScript / ReactJS</li> <li>PostgreSQL/Doctrine (stačí základy), ActiveMQ</li> <li>Jenkins, Linux, Git</li> <li>Docker na lokálu i v produkci</li> </ul> ]]></richtext>     </position> </positionList>  | 
					
Simple minimal example:
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37  | 
						<?xml version="1.0" encoding="utf-8"?> <positionList         xsi:schemaLocation="http://www.onrea.net/ei_std_jd/2006-10-19 http://schema.lmc.cz/ei_std/xsd/ei_std_jd_2006-10-19.xsd"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.onrea.net/ei_std_jd/2006-10-19">     <position>         <lang id="25" svlId="1000000">en</lang>         <parameterList>             <parameter name="clientID_0">123456LMCTEST1</parameter>         </parameterList>         <organization>             <organizationalUnit>                 <contactInformation>                     <name>                         <firstName>Tester</firstName>                         <surname>Testerovič</surname>                     </name>                     <email>tester.testerovic@lmc.eu</email>                 </contactInformation>             </organizationalUnit>         </organization>         <jobDescription>             <positionName>Injector Pressure Controller</positionName>             <occupationFieldList>                 <occupationField id="200900045" svlId="2009000">Manufacturing and industry</occupationField>             </occupationFieldList>             <jobLocalityList>                 <jobLocality>                     <territory id="1" svlId="1006000">Europe</territory>                     <country id="56" svlId="1002000">Czech Republic</country>                     <region id="245749" svlId="1008000">Liberecký kraj</region>                     <district id="247497" svlId="1009000">Liberec</district>                 </jobLocality>             </jobLocalityList>         </jobDescription>         <richtext><![CDATA[ <h2>Jobs.cz</h2> <p><em>Jobs.cz & Prace.cz jsou jedny z našich nejnašlápnutějších služeb, která má backend v PHP a frontend v Reactu - právě ten by byl tvojí parketou. Jobs.cz vyvíjí celkem 3 týmy a tvým útočištěm by se stal tým Relevance, který má na starost to, aby se správné nabídky dostaly ke správným uživatelům. V týmu se potkáš s dalšími třemi vývojáři, UXákem, Produkťákem a Delivery managerem, kteří se na tebe už teď těší.</em></p> <p><strong>5 hlavních důvodů, proč to zvážit</strong></p> <ol> <li>Důraz na vzdělávání - děláme výměny zkušeností mezi týmy, interní kurzy a workshopy (např. se SensioLabs - autory Symfony), kurzy soft-skills, a když to doba dovolí, tak chodíme i na české a zahraniční konference</li> <li>Testování a code review bereme vážně - unit testy i funkční testy v Seleniu jsou pro nás samozřejmostí. Mrkni na náš testovací opensource Steward https://github.com/lmc-eu/steward.</li> <li>Máme už téměř > 10 let zkušeností s agilním vývojem.</li> <li>Máme < než 2 produkťáky</li> <li>Rádi ti to ukážeme trochu víc zblízka. V rámci náboru totiž organizujeme i tzv. "den na zkoušku", kdy se víc seznámíš nejen s týmem, ale i s kódem.</li> </ol> <p><strong>Jaké technologie budeš používat?</strong></p> <ul> <li>PHP 7.2 / Symfony 3/4 (implementace větší aplikace pro tebe určitě nebude problém)</li> <li>JavaScript / TypeScript / ReactJS</li> <li>PostgreSQL/Doctrine (stačí základy), ActiveMQ</li> <li>Jenkins, Linux, Git</li> <li>Docker na lokálu i v produkci</li> </ul> ]]></richtext>     </position> </positionList>  | 
					
Each client can have an individual custom field in the import file
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18  | 
						<customFieldList>             <customField type="select" name="banner" label="Obrázek v banneru">                 <customFieldValue name="neutral" label="Výchozí obrázek"/>                 <customFieldValue name="bara" label="Bára_ZC B2B"/>                 <customFieldValue name="dominika" label="Dominka_trainee"/>                 <customFieldValue name="honza" label="Honza_ICT"/>                 <customFieldValue name="linda" label="Linda_HR/support_matky"/>                 <customFieldValue name="nicol" label="Nikol_ZC B2C"/>                 <customFieldValue name="peter" label="Petr_digital"/>                 <customFieldValue name="radim" label="Radim_technology"/>                 <customFieldValue name="veronika" label="Veronika_"/>                 <customFieldValue name="vlastimil" label="Vlastimil_shop"/>                 <customFieldValue name="d2d" label="D2D"/>                 <customFieldValue name="d2d-breghamm" label="D2D kanál - bregHamm"/>                 <customFieldValue name="d2d-manuvia" label="D2D kanál - manuvia"/>                 <customFieldValue name="go-digital" label="Go Digital!"/>             </customField>         </customFieldList>  | 
					
Therefore, we will generate a sample import-xml file for each client separately.
XML of vacancy advertised as given presentation unit
Please use <presentationUnit>. We will provide you with the ID of your company’s presentation unit on request.
| 
					 1 2 3 4 5 6 7 8 9 10  | 
						            <organizationalUnit>                 <contactInformation>                     <name>                         <firstName>Tester</firstName>                         <surname>Testerovič</surname>                     </name>                     <email>tester.testerovic@lmc.eu</email>                 </contactInformation>                 <presentationUnit id="123456789"/>             </organizationalUnit>  | 
					
XML of Temporary job
Importing a temporary job is possible. Please use employmentType 201300004.
| 
					 1 2 3  | 
						<employmentTypeList>      <employmentType id="201300004" svlId="2013000">Brigada</employmentType> </employmentTypeList>  | 
					
A company that wants to import a temporary job must have an active Temporary Jobs Service.
Importing external reply form link
- requires special active service
 - put following code in your import XML as child of <position> element
 
| 
					 1  | 
						<assessmentExternalLink>http://www.assessment-external.link</assessmentExternalLink>  | 
					
Supported HMTL tags in job description – richtext element:
The HTML code must be placed in the CDATA section inside the richtext element!
- paragraph <p>…</p>
 - a new line <br/>
 - bold <strong>…</strong>
 - italic <em>…</em>
 - title <h2>…</h2>
 - lists <ul>…</ul>, <ol>…</ol>,<li>…</li>
 
Supported value lists and tools
– Job description XSD
– Value lists (completed, zipped)
– Value lists online
– Field mapping – professions to branches
– Work locations mapping
– Import test tool
See value list section.
