RecruitmentTechnologies provides a web-service for organisations that want to manager their jobs on job boards and social media across Europe from one system.
The RecruitAnywhere API makes it easy to enrich existing applications with job advertising capabilities.
If you are an Application Tracking System, you will need to familiarise yourself with these API/XUI specs.
The RecruitmentTechnologies help desk can help you getting started with interfacing with RecruitAnywhere.
The easiest and preferred way to integrate RecruitAnywhere into your ATS is the XUI (eXternal User Interface). This plugin is a ready made user interface and handles all the API calls to RecruitAnywhere.
RecruitmentTechnologies builds interfaces to Job Boards using the API of the Job Boards, so if you are a Job Board and want RecruitmentTechnologies to build an interface to you contact our helpdesk.
Supported Integration Scenarios
Depending on your preference you can select any of the supported integration scenarios.
The preferred scenario for a user is not having to use a separate application to do the job postings. However, to create a seamless job posting experience from an ATS can be challenging.To address this RecruitmentTechnologies provides a plugin for your ATS that presents the user with the list of job boards / channels to post to and takes care of all the communications with the RecruitAnywhere API.
Pro:
Your ATS only needs to provide two things for the XUI plugin:
A web location to retrieve the job in XML format, see example
An iframe to load the XUI plugin, see documentation
To make the user experience even more seamless you can optionally go for the single sign on:
IMPORTANT: the XUI can only be used if your ATS can provide all the mandatory fields for a job. Please discuss the setup with our helpdesk
The RecruitAnywhere system has to retrieve the xml data, this must be done via a standard single url with only one variable per client: the job id.
For example: https://www.test.com/jobs?jobid=[JobID] or example
Each ‘Jobs’ XML file can contain one ‘JobPosition’ tag.
The ‘JobPosition’ XML contains the following tags:
Parameter | Mandatory | Length | Description |
---|---|---|---|
Jobs | Top-level tag of the xml document | ||
JobPosition | Start tag of a job | ||
@id | Y | 13 | Your unique ID for this vacancy |
@status | Y | 8 | 'active'=add/update a vacancy'inactive'= delete vacancy |
@updatemode | N | 1 | ‘1’=always update vacancy‘2’=never update vacancy (onlyinserts and deletes are processed)* |
@onerrorcancelsave | N | 1 | ‘y’=if one channel generates an error, do not save vacancy at alldefault=if one channel generates an error, the vacancy is ‘saved-with-errors’ and posted to the channels which did not generate an error. |
@docsource | N | 50 | ATS source name, e.g. ‘Connexys’, ‘Carerix’, ‘OTYS’ or your own ATS name |
@anonymiseclient | N | 1 | 'y'=anonymise client details on the job board (if possible), for instance leaving out the address details of the job location. |
JobTitle and JobTitleDescription fields
The JobTitle and JobTitleDescription fields are used in complement to each other. On some job boards job title is a look-up value, for these job boards you have to supply a value in the JobTitle fields. Currently job boards like werk.nl, Nationale Vacaturebank.nl, VDAB.be and Vacature.com/JobsCareer.be/Reference.be all require a look-up value for JobTitle.
The system will use JobTitleDescription whenever possible, even if a JobTitle value is supplied. On some job boards it will supply both using the look-up value as a search criteria and the JobTitleDescription as the free text version.
Parameter | Mandatory | Length | Description |
---|---|---|---|
JobTitle | Y | 255 | Lookup value |
JobTitleDescription | Y | 100 | Free text, no HTML. Mandatory if JobTitle is empty |
JobTitleDescriptionShort | N | 60 | Free text, no HTML. If JobTitleDescription is to long for a jobboard, then JobTitleDescriptionShort will be used. |
JobCategory | Y | 255 | Lookup-value, up to 3 tags |
JobLevel | Y | 255 | Lookup-value |
JobLevel/@type | N | 1 | ‘b’=Blue collar 'w'= White collar |
JobBranch | Y | 255 | Lookup value |
JobSummary | N | 255 | Free text, can contain HTML |
JobCompanyProfile | N | 16k | Free text, can contain HTML |
ClientName | N | 255 | Client name or ID, also see ‘Client’ specification |
ClientRegistrationNumber | N | 255 | Client KvK number (NL) or IKP number (BE) |
ClientStreetAddressName | N | 255 | Client street address name (without house number) |
ClientStreetAddressNo | N | 16 | Client house number |
ClientStreetAddressNoExt | N | 16 | Client house number extension |
ClientZipCode | N | 16 | Client zip code |
ClientCity | N | 255 | Client city |
ClientCountry | N | 2 | Client country, ISO 2 code |
JobContractType | Y | 255 | Lookup value |
JobContractDuration | N | 2 | Numeric value, defaults to ‘3’ |
JobContractDurationType | N | 1 | H |
JobParttime | N | 1 | '1' if it is a part-time job, ‘2’ or ‘0’ if it is a fulltime job, defaults to ‘’ meaning VOM will determine PT/FT based on JobHours (< |
JobHours | N | 2 | Numeric value, defaults to ‘40’ |
JobShift | N | 255 | Lookup value, for example: Day work or nightwork |
JobWorkingHours | N | 255 | Free text, no HTML |
JobDescription | Y | 16k | Free text, can contain HTML |
Parameter | Mandatory | Length | Description |
---|---|---|---|
JobRequirementsDescription | Y | 16k | Free text, can contain HTML |
Education | Y | 255 | Lookup value, up to three tags |
EducationDirection | N | 255 | Lookup value, up to three tags |
JobDrivingLicence | N | 255 | Lookup value, up to three tags |
JobCompetency | N | 255 | Lookup value, up to three tags |
Experience | N | 2 | Minimum number of years experience required, numeric value, defaults to ‘0’ |
JobLanguageProficiencyLevel | N | 255 | Lookup value, up to three tags. Standard JobLanguageProficiencyLevels can be found here. |
@lang | N | 2 | Attribute of 'JobLanguageProficiencyLevel'. This attribute will determine which language is given by the ISO-639-1 standard. See link |
Parameter | Mandatory | Length | Description |
---|---|---|---|
JobOfferDescription | Y | 16k | Free text, can contain HTML |
Salary | N | 0 | Start tag of all salary values |
SalaryCurrency | N | 3 | Standard currency code, defaults to ‘EUR’ |
SalaryValue | N | Numeric value. Either specify 'SalaryValue' or a range though 'SalaryValueFrom' and 'SalaryValueTo'. If both are supplied, the range is used. | |
SalaryValueFrom | N | Numeric value | |
SalaryValueTo | N | Numeric value | |
SalaryType | N | Numeric value: 0= per year 1 = per hour 2 = per week 3 = per month (default) | |
SalaryDescription | N | 255 | Free text, can contain HTML |
Parameter | Mandatory | Length | Description |
---|---|---|---|
LocationRegion | Y | 50 | Lookup value, up to three tags |
LocationZipCode | Y | 8 | Must be a valid zipcode if supplied |
LocationCity | Y | 255 |
Parameter | Mandatory | Length | Description |
---|---|---|---|
BranchName | Y | Name or ID of your branch for candidates to apply | |
Name | N | 255 | Specify either Name (full name) of consultant OR FirstName, MiddleInitial, LastName |
FirstName | N | 255 | Specify either Name (full name) of consultant OR FirstName, MiddleInitial, LastName |
MiddleInitial | N | 255 | Specify either Name (full name) of consultant OR FirstName, MiddleInitial, LastName |
LastName | N | 255 | Specify either Name (full name) of consultant OR FirstName, MiddleInitial, LastName |
Sex* | N | 1 | 'F' or 'M' |
Email* | N | 255 | E-mail address of branch/ consultant |
WebSite* | N | 255 | Your web-site |
Phone* | N | 255 | Phone number |
PhoneIntl* | N | 255 | Phone number in international notaion |
Fax* | N | 255 | Fax number |
FaxIntl* | N | 255 | Fax number in international notation |
AddressName* | N | 255 | Street address name |
AddressNo* | N | 16 | Street address number |
AddressNoExt* | N | 16 | Street address number extension |
ZipCode* | N | 8 | |
City* | N | 255 | |
Country* | N | 255 | |
ContactUsText | N | 16k | Free text, can contain HTML. This is the closing paragraph in an ad which is normally generated by VOM using template texts in multiple languages. Optionally you can send your own text using this field. |
* Default the system uses the contact details stored from the consultant/branch records. If you specify contact
details with the job posting, the system will use those instead of the details stored with the consultant/branch.
Parameter | Mandatory | Length | Description |
---|---|---|---|
@clearchannelsbeforeupdate | N | 1 | Set default on 'N' |
@applydirect | Y/N | 255 | An optional default URL pointing to a response form for candidates to apply to (can also be generated by Knollenstein). |
@landingpage | Y | 255 | An optional default URL pointing to the vacancy description (can also be generated by Knollenstein). |
@advertid | N | 32 | An optional default AdvertID as sent by external system, or empty if non was sent. |
<?xml version="1.0" encoding="UTF-8"?> <Jobs> <JobPosition status="active" id="123" onerrorcancelsave="n"> <JobDetails> <JobTitle><![CDATA[200777]]></JobTitle> <JobTitleDescription><![CDATA[Teammanager in Almere]]></JobTitleDescription> <JobBranch><![CDATA[OVERI]]></JobBranch> <JobCategory><![CDATA[COMM]]></JobCategory> <JobLevel><![CDATA[PROF]]></JobLevel> <JobSummary><![CDATA[]]></JobSummary> <JobCompanyProfileName><![CDATA[Streetwise Direct Dialogue B.V.]]></JobCompanyProfileName> <JobCompanyProfile><![CDATA[De specialist en marktleider op het gebied van digital dialogue donateurwerving.]]></JobCompanyProfile> <ClientName><![CDATA[]]></ClientName> <ClientRegistrationNumber><![CDATA[]]></ClientRegistrationNumber> <ClientStreetAddressName><![CDATA[]]></ClientStreetAddressName> <ClientStreetAddressNo><![CDATA[]]></ClientStreetAddressNo> <ClientStreetAddressNoExt><![CDATA[]]></ClientStreetAddressNoExt> <ClientZipCode><![CDATA[]]></ClientZipCode> <ClientCity><![CDATA[]]></ClientCity> <!-- ClientCountry: ISO 2 char --> <ClientCountry><![CDATA[]]></ClientCountry> <JobDescription><![CDATA[Op dit moment zijn wij opzoek naar een Teammanager voor deur tot deur verkoop Algemene functieomschrijving van een Teammanager: Als teamleider geef je leiding aan een team van ongeveer 20 tot 30 studenten (tussen de 16 en 22 jaar) die parttime zullen werken, dit zal deur tot deur verkoop zijn. Je bent als Teammanager zelf verantwoordelijk om je eigen team te werven. Daarnaast begeleidt je, stimuleer je en motiveer je je team van wervers. Ook ben je verantwoordelijk voor de personeelsplanning, administratie, het plannen en aansturen van de werfacties en de logistieke organisatie. Je bent 80% van de tijd bezig op straat om je wervers te coachen, motiveren en trainen. De overige tijd zal je werkzaamheden verrichten op kantoor, hierbij kun je denken aan: het voeren van evaluatiegesprekken, sollicitatiegesprekken, eventueel exitgesprekken, het invoeren van scores, maken van rapportages, etc. De werktijden voor een Teammanager voor deur tot deur werver zijn van 13.00 tot 22.00 uur. ]]></JobDescription> <JobContractType><![CDATA[Direct Hire]]></JobContractType> <JobHours>40</JobHours> <JobParttime>2</JobParttime> <JobRequirements> <Education><![CDATA[HBO]]></Education> <Education><![CDATA[MBO]]></Education> <EducationDirection><![CDATA[COMM]]></EducationDirection> <EducationDirection><![CDATA[OV]]></EducationDirection> <Experience>4</Experience> <JobRequirementsDescription><![CDATA[-HBO werk- denkniveau; - Je vind het leuk om zowel vanuit kantoor als buiten in het veld op operationeel gebied te managen; -Je bent commercieel; -Je bent flexibel; - Een zelfstandige werker; - Assertief; - Geen 9 tot 5 mentaliteit. ]]></JobRequirementsDescription> </JobRequirements> <JobOffer> <JobOfferDescription><![CDATA[Een uitdagende functie binnen een enthousiaste en trendy organisatie]]>.</JobOfferDescription> <Salary> <SalaryValueFrom>1750</SalaryValueFrom> <SalaryValueTo>1750</SalaryValueTo> <SalaryDescription><![CDATA[Good salary]]></SalaryDescription> </Salary> </JobOffer> <JobLocation> <LocationCity><![CDATA[AMSTERDAM]]></LocationCity> <LocationRegion><![CDATA[FL]]></LocationRegion> <LocationZipCode><![CDATA[1011 AB]]></LocationZipCode> </JobLocation> </JobDetails> <Contact> <BranchName><![CDATA[85-4]]></BranchName> <Consultant/> <FullName><![CDATA[Marlon Brandenburg]]></FullName> <Email><![CDATA[almere@example.com]]></Email> <WebSite><![CDATA[www.example.com]]></WebSite> <Phone><![CDATA[035 - 5280333]]></Phone> <AddressName><![CDATA[Joop van den Endplein]]></AddressName> <AddressNo><![CDATA[1]]></AddressNo> <AddressNameNoExt><![CDATA[a]]></AddressNameNoExt> <ZipCode><![CDATA[1217WJ]]></ZipCode> <City><![CDATA[Hilversum]]></City> </Contact> <Channels applydirectlink="" clearchannelsbeforeupdate="n" advertid="3456"/> </JobPosition> </Jobs>
To make sure our clients will be logged in automatically we provide a simple SSO procedure.
The XUIAccessToken must be retrieved with a GET Method via the url with a Basic authentication (username and password):
dev: GET: https://appsdev.knollenstein.com/servlet/KnGetAccessTokenServlet?permissions=xui
prod: GET: https://apps.knollenstein.com/servlet/KnGetAccessTokenServlet?permissions=xui
The response message will be:
<Token id=”f6a930d7-9904-42c6-9d7b-80b3dec6ccb8″ />
Your ATS needs to generate an iframe using this:
The following needs to be provided by your ATS in the iframe:
XUIUserID: RecruitmentTechnologies Username
XUIVid: Jobid of the job the user is working on and which corresponds with the XML job id
XUILocale: The country/language locale code. for example “nl_NL”
XUIAccessToken: the RecruitmentTechnologies access token which retrieved
The token will be valid for 24 hours after receiving the token, also more then one token can be used at once. You can choose to either get tokens for each user e.g. once every 24 hours or retrieve a token with every request.
In the xui you can delete a job, but you'll have to open the plugin.
Since a lot of ATS system can archive/delete a job on a higher level in the system, it's also possible to delete a job via the following HTTP GET in combination with a basic authentication of the client credentials:
DEV: https://appsdev.knollenstein.com/servletngc/KnDeleteVacancyServlet?vid=123
PROD: https://apps.knollenstein.com/servletngc/KnDeleteVacancyServlet?vid=123
The parameter 'vid' is the specific job id you want to delete.
Note: The whole job wille be deleted
The response will be a http status 200 with the following response:
Knollenstein can optionally define business rules to automatically switch channels on and off for a job.
So if for example you always want 5 free channels selected if channel ‘WEBSITE’ was selected by the user the business rules will automatically select those 5 channels. If a week later the user decides to remove the job from channel ‘WEBSITE’ it will also be automatically removed from those 5 channels.
The XUI is by far the easiest way to integrate RecruitAnywhere into your ATS. If somehow this is not possible, RecruitAnywhere can also by integrated using:
- 2 times a day loading of all your jobs using HTTP GET
- both your UI and the RecruitAnywhere UI ('FUI')
To make onboarding of your clients as easy as possible, we (RT) prefer the following process:
If possible please make sure RT can import the client's organisational units and lookup lists using e.g. an API key.
For more information about integrating RecruitAnywhere into your ATS, please contact our helpdesk via support@recruitmenttechnologies.com.
For information about subscriptions and rates, please contact our sales department at +31(0)35-5280333 or via sales@recruitmenttechnologies.com.
RecruitmentTechnologies /
Knollenstein Technologies b.v.
Koos Postemalaan 2
1217 ZC Hilversum
The Netherlands