API Documentation
This API document is intended for developers who wish to write client applications that interact with the new eFinancialCareers job posting API. It provides a series of examples of API interactions in the form of RESTful requests.
This document does not rely on any particular programming language; your client application can interact with the API using any language that lets you issue HTTP requests and parse XML-based responses.
Job API Documentation
- Job API Documentation
- Performing Authentication
- Building your First Job XML
- Create a new Job
- Making a Job Live
- Single Step - Create new Job
- Single Step - Job Update
- Single Step - Job Deallocate
- Authenticating to Retrieve Dictionary Values
- Retrieving Dictionary Values
- Location Service (Job)
- Edit Job
- Retrieving a Job
- Retrieving all Jobs
- Deleting a Job
- Deactivating a Job
- Refreshing a Job after 72 hours
- Get Current User
- Get Users, Teams and Brands
- Dealing with Errors
- Schema List
- Resume API Documentation
Resume API Documentation
- Q&A
- Building your First Search Request
- Contact Jobseeker
- Download Resume
- Error Codes (Resume)
- First Step - Performing Authentication (Resume)
- Getting Resume Views
- Location Service (Resume)
- Performing Search Resume Request
- Retrieving Dictionary Values (Resume)
- Understanding Search Resume Response
Job API Documentation
Audience
This API document is intended for developers who wish to write client applications that interact with the new eFinancialCareers job posting API. It provides a series of examples of API interactions in the form of RESTful requests.
This document does not rely on any particular programming language; your client application can interact with the API using any language that lets you issue HTTP requests and parse XML-based responses.
Before you begin
This section defines important terms and concepts introduced to our new job posting API that are necessary to help your clients get the most from their account setup.
We would recommend that this section is read before assembling your very first job XML document to understand how we have defined teams, brands and inventory and how this affects a job post. This is all explained below along with some real life examples.
Please note, the entities described below are created for our clients by our Client Service team therefore; if you are already posting jobs on behalf of our clients and have contacted us for an API key, you will be able to proceed with the rest of this guide.
Inventory
Jobs can be posted under two types of inventories; job credits and job slots.
- Job Credits: A job credit allows the posting of a single job for up to 30 or 60 days. Once the credit has expired or has been deactivated it can no longer be used for another job posting.
- Job Slots: A job slot is a position on the eFinancialCareers website where a single job can be posted. The job slot can be interchangeable with any number of jobs until the slot expires.
We do place restrictions on these products which determine the location a job can be posted to. An inventory item can be limited so a job can only be posted to a specific country, region or have no restrictions at all:
Types of location restrictions on inventory
User
A user in this guide will represent a recruiter who is a client of eFinancialCareers or a client on whose behalf you are posting a job.
Brand
A brand is a company identity and includes a displayed company name and visuals such as a ‘Job advert logo’ and a ‘Homepage and company listing logo’.
Team
All users are part of one or more teams with each team being associated with brands and inventory. Inventory is added to a team and can be shared amongst any user or brand associated with that team.
Overview of Account Setup
Conveying all the entity descriptions explained above, the following diagram shows a very basic account configuration with a single recruiter, one team and a single brand. Here, posting a job located in France results in the France job credit being used only and as there is only a single brand, only this brand can be used.
Please note, during the job posting it is mandatory to provide a Brand ID the job will belong to.
A simple account configuration
The next diagram shows an account configuration with multiple teams, brands and recruiters. Here, Stacey is a member of two teams, so posting a job located in the UK on her behalf to Team B will result in the UK job credit being used. However, Stacey has three brands to choose from and it is therefore important to know which brand to select as this is the identity that will be displayed to job seekers. It is essential that this information is obtained from your client.
Roberto and Gregory are not able to post jobs using inventory for teams they are not a member of.
A complex account configuration
Performing Authentication
First Step – Performing Authentication
The job posting API enables third party companies to post jobs directly to eFinancialCareers. This section will outline the procedure to authenticate to post and manage jobs on behalf of clients of eFinancialCareers.
You will need an API key, a password and an API Key for the client you are posting the job on behalf of. These keys are needed to identify you and the client. If you have these then you are set to continue.
Please note, if you have been posting jobs using the legacy system, the API key for this will not work with this new job posting API.
Authentication Flow
Step One
To authorise, send an HTTP POST request to the following URL:
POST https://auth.ws.efinancialcareers.com/v1/authenticateProvider
With these mandatory HTTP headers:
Content-Type: application/xml
Authorization: EfcAuth realm="EFC"
And supply this XML representation in the HTTP request body with your credentials:
<provider xmlns="http://efinancialcareers.com/schema">
<apiKey>izpc9jhWZE5FvEUcXnePrBl8</apiKey>
<trustedAccountApiKey>UnFRhaqi4RaGzfj9tx7Dc8g9</trustedAccountApiKey>
<password>z2tc-kzW5-wuC5-jFpt</password>
</provider>
apiKey - Your API key to identify you. This key does not change unless requested by you.
password - Your password.
trustedAccountApiKey - The API key for the user you are posting the job on behalf of. This key represents your client and does not change.
Upon success, the server responds with HTTP 200 OK status code and an XML representation containing a token. For subsequent requests you will need to use this token so the server can identify your session. The session will expire after 30 minutes if no interaction with the server is maintained.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<token xmlns="http://efinancialcareers.com/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://efinancialcareers.com/schema https://auth.ws.efinancialcareers.com/v1/schema">
<value>522c3c4bd036a69db428ce4274745e9d</value>
</token>
Step Two
If you would now like to post a job, your HTTP Authorisation header should contain the token received after your initial login as described in step one above.
Authorisation: EfcAuth realm="EFC", token="522c3c4bd036a69db428ce4274745e9d"
Handing API errors
As the eFinancialCareers‘ API is RESTful, any HTTP status codes within the 4xx and 5xx range are classified as errors. The XML representation in the response body will help you determine the cause of each individual error that occurred.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<errors xmlns="http://efinancialcareers.com/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://efinancialcareers.com/schema https://auth.ws.efinancialcareers.com/v1/schema">
<error errorCode="10013"><errorType>MSG_AUTH_INVALID_CREDENTIALS</errorType>
<translation lang="en">Invalid credentials</translation></error>
</errors>
Building your First Job XML
Building your First Job XML
Getting started with the new job posting API requires you to pull information from several different sources. We refer to these different sources as dictionary values. The table below describes the main list of mandatory and optional XML fields with links to the reference material for the other sources of data.
Mandatory and Optional Fields
Field
Definition
Maximum Characters
Required
Value Type
XML Path
title
The job title of the job advertisement
200
Yes
String
defaultDescription / title
summary
A short summary of the job. The summary will be displayed on the job search results page for jobseekers.
45 words
Yes
String
defaultDescription / summary
description
Detailed description of job details and responsibilities. Accepts limited set of HTML tags detailed below.
2000 words
Yes
String
defaultDescription / description
salaryDescription
Detailed description of job details and responsibilities. Accepts limited set of HTML tags detailed below.
2000 words
Yes
String
defaultDescription / salaryDescription
minSalary
A numerical values only and will be the upper end of what clients can offer for this role.
7(max value 9999999)
No
String
XML Path: minSalary
maxSalary
A numerical values only and will be the upper end of what clients can offer for this role.
7(max value 9999999)
No
String
XML Path: maxSalary
hideSalaryRange
Should the salary range be hide.
N/A
No
Boolean
hideSalaryRange
workArrangementType
The work arrangement type of the job (e.g. Remote, In-office, etc).
N/A
No
Use work arrangement type constant retrieved from GET work arrangement API call
workArrangementType
workPermitRequirements
A list of work permits required for a job.
64
No
String
defaultDescription/ workPermitRequirements
positionType
The position type of the job (e.g. permanent, contract, etc)
N/A
Yes
Use position type constant retrieved from GET position type API call
positionType
employmentTypes
Whether the job is full-time, part-time, etc.
N/A
Yes
Use employment type constant retrieved from GET employment type API call
employmentType
yearsExperience
Years of Experience
N/A
No
Use yearsExperience type constant
yearsExperience
primarySector / sectorCode
The primary sector of the job.
N/A
Yes
Use sector constant retrieved from GET sector API call
primarySector / sectorCode
primarySector / subSectorCode
The primary sub sector of the job.
N/A
Yes
Use sub-sector constant retrieved from GET sub-sector API call
primarySector / subSectorCode
secondarySector / sectorCode
An optional secondary sector of the job.
N/A
No
Use sector constant retrieved from GET sector API call
secondarySector / sectorCode
secondarySector / subSectorCode
An optional secondary sub sector of the job.
N/A
No
Use sub-sector constant retrieved from GET sub-sector API call
secondarySector / subSectorCode
tertiarySector / sectorCode
An optional third sector of the job.
N/A
No
Use sector constant retrieved from GET sector API call
tertiarySector / sectorCode
tertiarySector / subSectorCode
An optional third sub sector of the job.
N/A
No
Use sub-sector constant retrieved from GET sub-sector API call
tertiarySector / subSectorCode
location/refId
The ID of the location the job is in.
N/A
Yes
Use location ID retrieved from location search API call
location / refId
brand/refId
Unique ID of a brand.
N/A
Yes
Use brand ID retrieved from GET Brand API call
brand / refId
team/refId
Unique ID of a team.
N/A
Yes
Use team ID retrieved from GET Team API call
team / refId
jobReference
Your job reference number
50
No
String
jobReference
applicationMethod
Determines how a job seeker applies for the job and if the recruiter should be notified by email.
Yes
Use job application constant from GET job application types API call
applicationMethod
applicationNotificationEmails
Email address for sending application emails.
150
No
String
applicationNotificationEmails
autoReply
Auto reply field
N/A
No
Boolean
autoReply
disableAutoDeactivation
Disable auto deactivation.
N/A
No
Boolean
screenQuestionnaire
screenQuestionnaire
Should be added a quastionnare for pre-qualify candidates before they apply
N/A
No
Boolean
disableAutoDeactivation
applicationLink
A URL to redirect the job seeker to another website to apply for the job.
Only mandatory when application method is “EXTERNAL_APPLICATION”
String
applicationLink
salaryBand
A range of salary bands
No
Use salary band retrieved from GET salary band API call
salaryBand
salaryCurrency
The currency of the salary
No
Use currency retrieved from GET currency API call
salaryCurrency
contactFirstName
Override recruiter first name in database with this field
No
String
contactDetails / contactFirstName
contactLastName
Override recruiter last name in database with this field
No
String
contactDetails / contactLastName
contactEmail
Override recruiter email address in database with this field
No
String
contactDetails / contactEmail
contactPhone
Override recruiter phone number in database with this field
No
String
contactDetails / contactPhone
contactFax
Override recruiter fax number in database with this field
No
String
contactDetails / contactFax
contactCompanyName
Override recruiter company name in database with this field
No
String
contactDetails / contactCompanyName
contactAddress1
Override recruiter address 1 in database with this field
No
String
contactDetails / contactAddress1
contactAddress2
Override recruiter address 2 in database with this field
No
String
contactDetails / contactAddress2
contactAddress3
Override recruiter address 3 in database with this field
No
String
contactDetails / contactAddress3
contactCity
Override recruiter city in database with this field
No
String
contactDetails / contactCity
contactRegion
Override recruiter region in database with this field
No
String
contactDetails / contactRegion
contactPostCode
Override recruiter postal code in database with this field
No
String
contactDetails / contactPostCode
contactCountry
Override recruiter country in database with this field
No
String
contactDetails / contactCountry
contactURL
Override recruiter url in database with this field
No
String
contactDetails / contactURL
customExpirationDt
Job expiration date set by a user.
N/A
No
Date
customExpirationDt
displayBrandImage
Should the brand image be displayed
No
Boolean
contactDetails / displayBrandImage
jobCustomField
Job Custom field
10 fields
No
Boolean
jobCustomFields / jobCustomField
fieldName
Name of the Job Custom field
100
Yes
String
jobCustomField / fieldName
fieldValue
Value of the Job Custom field
1024
Yes
String
jobCustomField / fieldValue
The following HTML tags are supported in the job description field. Other HTML tags will be stripped out and their contents will be displayed as plain text.
HTML Tag
Description
<b></b> <strong></strong>
<i></i>
<span style=”text-decoration:underline;”>
<li></li>
<ol></ol>
<ul></ul>
<br></br>
<p></p>
Bold
Italic
Underline
List
Ordered List
Unordered List
Line break
Paragraph
Create a new Job
Creating a New Job
To create a new job, send an authorised HTTP POST request, and supply the XML representation of the new entry in the HTTP body:
POST https://core.ws.efinancialcareers.com/v1/job
Mandatory HTTP headers:
Content-Type: application/xml
Authorization: EfcAuth realm=”EFC”, token=”522c3c4bd036a69db428ce4274745e9d”
You will note from the XML request below several job details are placed within the <defaultDescription lang=”EN” /> element. You can retrieve the list of language codes we support currently by using the API call described here.
Request body
Example of Job with just mandatory fields:
<job xmlns="http://efinancialcareers.com/schema">
<defaultDescription lang="DE">
<title>Job ONE in German</title>
<description>Unser Kunde ist ein expandierendes Investmentbank derzeit, die ihre Kreditkarten Flow-Sales-Team mit einem erfahrenen Vertriebsmitarbeiter entwickeln.</description>
<summary>Die Zuständigkeiten für diese Gelegenheit gehören</summary>
<salaryDescription>Basic + Bonus-CD EUR</salaryDescription>
</defaultDescription>
<positionType>PERMANENT</positionType>
<employmentType>FULL_TIME</employmentType>
<yearsExperience>SEVEN_TEN_YEARS_EXPERIENCE</yearsExperience>
<salaryBand>SIXTH_TIER</salaryBand>
<salaryCurrency>GBP</salaryCurrency>
<location>
<refId>2643743</refId>
</location>
<brand>
<refId>111</refId>
</brand>
<primarySector>
<sectorCode>DEBT_FIXED_INCOME</sectorCode>
<subSectorCode>DEBT_FIXED_INCOME__SALES_TRADING</subSectorCode>
</primarySector>
<applicationMethod>EMAIL</applicationMethod>
<autoReply>false</autoReply>
<screenQuestionnaire>false</screenQuestionnaire>
<contactDetails>
<contactEmail>test@email.com</contactEmail>
</contactDetails>
</job>
Example of Job with several non-mandatory fields:
<job xmlns="http://efinancialcareers.com/schema">
<defaultDescription lang="DE">
<title>Job ONE in German</title>
<description>Unser Kunde ist ein expandierendes Investmentbank derzeit, die ihre Kreditkarten Flow-Sales-Team mit einem erfahrenen Vertriebsmitarbeiter entwickeln.</description>
<summary>Die Zuständigkeiten für diese Gelegenheit gehören</summary>
<salaryDescription>Basic + Bonus-CD EUR</salaryDescription>
<minSalary>11111</minSalary>
<maxSalary>22222</maxSalary>
<workPermitRequirements>UK Work Permit</workPermitRequirements>
</defaultDescription>
<positionType>PERMANENT</positionType>
<employmentType>FULL_TIME</employmentType>
<yearsExperience>SEVEN_TEN_YEARS_EXPERIENCE</yearsExperience>
<salaryBand>SIXTH_TIER</salaryBand>
<salaryCurrency>GBP</salaryCurrency>
<workArrangementType>HYBRID</workArrangementType>
<customExpirationDt>2025-05-12</customExpirationDt>
<jobReference>Testjob Ref</jobReference>
<location>
<refId>5133135</refId>
</location>
<brand>
<refId>125</refId>
</brand>
<primarySector>
<sectorCode>DEBT_FIXED_INCOME</sectorCode>
<subSectorCode>DEBT_FIXED_INCOME__SALES_TRADING</subSectorCode>
</primarySector>
<secondarySector>
<sectorCode>INFORMATION_SERVICES</sectorCode>
<subSectorCode>INFORMATION_SERVICES__N_A</subSectorCode>
</secondarySector>
<tertiarySector>
<sectorCode>HEDGE_FUNDS</sectorCode>
<subSectorCode>HEDGE_FUNDS__OTHER</subSectorCode>
</tertiarySector>
<jobCustomFields>
<jobCustomField>
<fieldName>a</fieldName>
<fieldValue>b</fieldValue>
</jobCustomField>
<jobCustomField>
<fieldName>c</fieldName>
<fieldValue>d</fieldValue>
</jobCustomField>
</jobCustomFields>
<applicationMethod>EMAIL</applicationMethod>
<autoReply>false</autoReply>
<screenQuestionnaire>false</screenQuestionnaire>
<contactDetails>
<contactFirstName>Test firstname</contactFirstName>
<contactLastName>Test lastname</contactLastName>
<contactEmail>test@email.com</contactEmail>
<contactFax>45353453</contactFax>
<contactCompanyName>Company JN</contactCompanyName>
<contactAddress1>12 SThree</contactAddress1>
<contactAddress2>London Road</contactAddress2>
<contactAddress3>London Street</contactAddress3>
<contactCity>London</contactCity>
<contactRegion>South East</contactRegion>
<contactPostCode>E3 4NL</contactPostCode>
<contactCountry>England</contactCountry>
<contactURL>www.test.com</contactURL>
<displayBrandImage>true</displayBrandImage>
</contactDetails>
</job>
Upon success, the server responds with HTTP 201 Created status code and an XML representation of the newly created job in the response body(example Job with just mandatory fields):
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<ns2:job href="https://core.ws.efinancialcareers.com/v1/jobs/926091" xsi:schemaLocation="http://efinancialcareers.com/schema https://core.ws.efinancialcareers.com/v1/schema">
<ns2:id>926091</ns2:id>
<ns2:version>0</ns2:version>
<ns2:defaultDescription lang="DE">
<ns2:title>Job ONE in German</ns2:title>
<ns2:description>Unser Kunde ist ein expandierendes Investmentbank derzeit, die ihre Kreditkarten Flow-Sales-Team mit einem erfahrenen Vertriebsmitarbeiter entwickeln. </ns2:description>
<ns2:summary>Die Zuständigkeiten für diese Gelegenheit gehören</ns2:summary>
<ns2:salaryDescription>Basic + Bonus-CD EUR</ns2:salaryDescription>
</ns2:defaultDescription>
<ns2:multiLangDescription />
<ns2:positionType>PERMANENT</ns2:positionType>
<ns2:employmentType>FULL_TIME</ns2:employmentType>
<ns2:yearsExperience>SEVEN_TEN_YEARS_EXPERIENCE</ns2:yearsExperience>
<ns2:salaryBand>SIXTH_TIER</ns2:salaryBand>
<ns2:salaryCurrency>GBP</ns2:salaryCurrency>
<ns2:user href="https://app.ws.efinancialcareers.com/v1/users/168">
<ns2:refId>168</ns2:refId>
</ns2:user>
<ns2:company href="https://app.ws.efinancialcareers.com/v1/companies/66">
<ns2:refId>66</ns2:refId>
</ns2:company>
<ns2:location href="https://app.ws.efinancialcareers.com/v1/locations/2643743">
<ns2:id>2643743</ns2:id>
<ns2:name>London</ns2:name>
<ns2:latitude>51.50853</ns2:latitude>
<ns2:longitude>-0.12574</ns2:longitude>
<ns2:parents>
list of<ns2:location></ns2:location>
</ns2:parents>
<ns2:type>CITY</ns2:type>
<ns2:country>GB</ns2:country>
</ns2:location>
<ns2:brand href="https://app.ws.efinancialcareers.com/v1/brands/125">
<ns2:refId>125</ns2:refId>
</ns2:brand>
<ns2:primarySector>
<ns2:sectorCode>DEBT_FIXED_INCOME</ns2:sectorCode>
<ns2:subSectorCode>DEBT_FIXED_INCOME__SALES_TRADING</ns2:subSectorCode>
</ns2:primarySector>
<ns2:jobCustomFields />
<ns2:applicationMethod>EMAIL</ns2:applicationMethod>
<ns2:autoReply>false</ns2:autoReply>
<ns2:screenQuestionnaire>false</ns2:screenQuestionnaire>
<ns2:contactDetails>
<ns2:contactEmail display="true">test@email.com</ns2:contactEmail>
</ns2:contactDetails>
<ns2:status>PENDING</ns2:status>
<ns2:entityStatus>ACTIVE</ns2:entityStatus>
<ns2:created>2015-02-18T07:31:46.634Z</ns2:created>
<ns2:updated>2015-02-18T07:31:46.634Z</ns2:updated>
<ns2:labelTranslations>
huge list of<ns2:translation>...</ns2:translation>
</ns2:labelTranslations>
<ns2:dictTranslations>
huge list of<ns2:translation>...</ns2:translation>
</ns2:dictTranslations>
<ns2:jobTemplate>
<ns2:id>1</ns2:id>
<ns2:version>0</ns2:version>
<ns2:jobTemplateName>Default eFC Template</ns2:jobTemplateName>
</ns2:jobTemplate>
</ns2:job>
The <contactDetails> element overrides the information we hold on the database. The override information will appear on the right-hand side of the job page as shown below. You can switch between displaying each individual value by toggling the display attribute for each element.
Making a Job Live
Making a Job Live
To make a job live and available to job seekers, the job must be assigned to an available slot or credit. There are two different methods available to do this:
Method 1
The simplest method to make a job live is to use our automatic job allocation service. The following diagrams illustrate the algorithm we use. Here, Gregory has a job to post for a vacancy in London, UK. The team he belongs to has two vacant inventory items available; an Ireland credit and an EMEA slot. Gregory chooses to use the auto-allocation service. The algorithm will first check if there are any suitable credits available starting from the most specific credit first. In this case no credits are available so the service moves on to check if there are any suitable slots available starting from the most specific slot first. The algorithm finds the EMEA credit is suitable to use and makes this job live available for job applications.
Algorithm used by automatic job allocation service
To use the auto-allocation service send a HTTP POST request to the following URL. The {jobid} in this URL template needs to be replaced with the job id you would like to activate.
POST https://core.ws.efinancialcareers.com/v1/jobs/{jobid}/autoAllocation
Upon success, the server responds with a HTTP 204 No Content status code.
Method 2
The second method gives you more control to choose the specific inventory product you would like to use. This is a two step process.
1. Get inventory allocated to a team
Send an authorised HTTP GET request to the following URL. This will return all the available inventory for the team to use.
GET https://core.ws.efinancialcareers.com/v1/teams/{teamid}/inventoryAllocations
Mandatory HTTP headers
Content-Type: application/xml
Authorization: EfcAuth realm="EFC", token="522c3c4bd036a69db428ce4274745e9d"
The {teamid} needs to be replaced with a team ID the recruiter belongs to. If you remember, job slots and credits are assigned to a team so you will have to discover the team ID(s) the user belongs to. Also, brands are also assigned to a team so you will have to make sure the brand ID attached to the job also belongs to the team you have chosen.
Upon success, the server responds with HTTP 200 OK status code and an XML representation of the inventory allocated to a team.
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<ns2:inventoryAllocations xsi:schemaLocation="http://efinancialcareers.com/schema https://core.ws.efinancialcareers.com/v1/schema">
<ns2:inventoryAllocation>
<ns2:id>83</ns2:id>
<ns2:version>3</ns2:version>
<ns2:totalAmount>20</ns2:totalAmount>
<ns2:usedAmount>0</ns2:usedAmount>
<ns2:inventory>
<ns2:refId>123</ns2:refId>
</ns2:inventory>
<ns2:team href="https://app.ws.efinancialcareers.com/v1/teams/123">
<ns2:refId>123</ns2:refId>
</ns2:team>
<ns2:jobAllocations />
<ns2:jobAllocationsHistory>
huge list of <ns2:jobAllocationHistory>...</ns2:jobAllocationHistory>
</ns2:jobAllocationsHistory>
<ns2:created>2012-05-23T08:37:44.017Z</ns2:created>
<ns2:updated>2013-01-08T13:27:06.620Z</ns2:updated>
<ns2:labelTranslations>
huge list of <ns2:translation>...</ns2:translation>
</ns2:labelTranslations>
<ns2:dictTranslations />
</ns2:inventoryAllocation>
<ns2:labelTranslations>
huge list of <ns2:translation>...</ns2:translation>
</ns2:labelTranslations>
</ns2:inventoryAllocations>
You will need to check that inventory is available to use by making sure the <totalAmount> is greater the <usedAmount>.
2. Make the job live
Send an authorised HTTP POST request to the following URL
POST https://core.ws.efinancialcareers.com/v1/jobs/2/allocation
Mandatory HTTP headers
Content-Type: application/xml
Authorization: EfcAuth realm=”EFC”, token=”522c3c4bd036a69db428ce4274745e9d”
Request Body
<jobAllocation xmlns="http://efinancialcareers.com/schema">
<inventoryAllocation>
<refId>1</refId>
</inventoryAllocation>
<job>
<refId>2</refId>
</job>
</jobAllocation>
The inventoryAllocation.refId is the ID retrieved from step 1 above.
Upon success, the server responds with HTTP 201 Created status code and an XML representation containing the start and end dates of the job.
<ns2:jobAllocation xsi:schemaLocation="http://efinancialcareers.com/schema https://core.ws.efinancialcareers.com/v1/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ns2:id>1</ns2:id>
<ns2:version>0</ns2:version>
<ns2:startDate>2011-12-01T16:53:43.403Z</ns2:startDate>
<ns2:expirationDate>2012-12-01T16:53:43.403Z</ns2:expirationDate>
<ns2:inventoryAllocation>
<ns2:refId>1</ns2:refId>
</ns2:inventoryAllocation>
<ns2:job href="https://core.ws.efinancialcareers.com/v1/jobs/2">
<ns2:refId>2</ns2:refId>
</ns2:job>
<ns2:created>2011-12-01T17:01:48.590Z</ns2:created>
<ns2:updated>2015-02-18T11:39:44.849Z</ns2:updated>
</ns2:jobAllocation>
Single Step - Create new Job
Single Step – Create new Job
To create a new job and make live immediately using a single web service call, send a HTTP POST request to the following URL supplying your credentials and the XML representation of the new entry.
This method of creating a new job will use the automatic job allocation method for making the job live by default. To disable automatic job allocation set turnAutoDeallocationOff flag to true.
POST https://core.ws.efinancialcareers.com/v1/jobfeeds
Mandatory HTTP headers
Content-Type: application/xml
Request body
Example of Job Feed with just mandatory fields
<jobFeed xsi:schemaLocation="http://efinancialcareers.com/schema jobfeed.xsd" xmlns="http://efinancialcareers.com/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<header>
<providerLogin>
<apiKey>${apiKey}</apiKey>
<trustedAccountApiKey>${trustedAccountApiKey}</trustedAccountApiKey>
<password>${password}</password>
</providerLogin>
<allocationMethod>default</allocationMethod>
<turnAutoDeallocationOff>false</turnAutoDeallocationOff>
</header>
<jobOperations>
<jobOperation>
<operationType>POST</operationType>
<job>
<defaultDescription lang="EN">
<title>Senior Java Developer</title>
<description>A leading online company are looking for an exceptional Java developer to join them to work on a new greenfield project.</description>
<summary>Java developer - greenfield project in London UK.</summary>
<salaryDescription>60,000 basic + benefits + bonus</salaryDescription>
</defaultDescription>
<positionType>PERMANENT</positionType>
<employmentType>FULL_TIME</employmentType>
<location>
<refId>5133135</refId>
</location>
<brand>
<refId>125</refId>
</brand>
<team>
<refId>124</refId>
</team>
<primarySector>
<sectorCode>DEBT_FIXED_INCOME</sectorCode>
<subSectorCode>DEBT_FIXED_INCOME__SALES_TRADING</subSectorCode>
</primarySector>
<applicationMethod>EXTERNAL_APPLICATION</applicationMethod>
<externalApplicationURL>http://www.example.com/apply</externalApplicationURL>
</job>
</jobOperation>
</jobOperations>
</jobFeed>
Example of Job Feed with several non-mandatory fields
<jobFeed xsi:schemaLocation="http://efinancialcareers.com/schema jobfeed.xsd" xmlns="http://efinancialcareers.com/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<header>
<providerLogin>
<apiKey>${apiKey}</apiKey>
<trustedAccountApiKey>${trustedAccountApiKey}</trustedAccountApiKey>
<password>${password}</password>
</providerLogin>
<allocationMethod>default</allocationMethod>
<deactivateAllJobsFirst>false</deactivateAllJobsFirst>
<turnAutoDeallocationOff>false</turnAutoDeallocationOff>
</header>
<jobOperations>
<jobOperation>
<operationType>POST</operationType>
<job>
<defaultDescription lang="EN">
<title>Senior Java Developer</title>
<description>A leading online company are looking for an exceptional Java developer to join them to work on a new greenfield project.</description>
<summary>Java developer - greenfield project in London UK.</summary>
<salaryDescription>60,000 basic + benefits + bonus</salaryDescription>
<minSalary>11111</minSalary>
<maxSalary>22222</maxSalary>
<workPermitRequirements>UK Work Permit</workPermitRequirements>
</defaultDescription>
<positionType>PERMANENT</positionType>
<employmentType>FULL_TIME</employmentType>
<yearsExperience>SEVEN_TEN_YEARS_EXPERIENCE</yearsExperience>
<salaryBand>SIXTH_TIER</salaryBand>
<salaryCurrency>GBP</salaryCurrency>
<workArrangementType>HYBRID</workArrangementType>
<customExpirationDt>2025-05-12</customExpirationDt>
<jobReference>Testjob Ref 2</jobReference>
<originalLocation>
<latitude>51.508128895289</latitude>
<longitude>-0.12800500000003012</longitude>
<locationName>London, England</locationName>
<isoCityCode/>
<isoCountryCode>EN</isoCountryCode>
<zip/>
</originalLocation>
<brand>
<refId>125</refId>
</brand>
<team>
<refId>124</refId>
</team>
<primarySector>
<sectorCode>DEBT_FIXED_INCOME</sectorCode>
<subSectorCode>DEBT_FIXED_INCOME__SALES_TRADING</subSectorCode>
</primarySector>
<secondarySector>
<sectorCode>CONSULTANCY</sectorCode>
<subSectorCode>CONSULTANCY__N_A</subSectorCode>
</secondarySector>
<tertiarySector>
<sectorCode>CONSULTANCY</sectorCode>
<subSectorCode>CONSULTANCY__N_A</subSectorCode>
</tertiarySector>
<jobCustomFields>
<jobCustomField>
<fieldName>firstCustomVariables</fieldName>
<fieldValue>ValueForCustomVariables</fieldValue>
</jobCustomField>
<jobCustomField>
<fieldName>secondCustomVariables</fieldName>
<fieldValue>ValueForCustomVariables</fieldValue>
</jobCustomField>
</jobCustomFields>
<applicationMethod>EMAIL</applicationMethod>
<autoReply>false</autoReply>
<screenQuestionnaire>false</screenQuestionnaire>
<contactDetails>
<contactFirstName>Test firstname</contactFirstName>
<contactLastName>Test lastname</contactLastName>
<contactEmail>testuser@efinancialcareers.com</contactEmail>
<contactPhone>0123456789</contactPhone>
<contactFax>45353453</contactFax>
<contactCompanyName>Test Company</contactCompanyName>
<contactAddress1 display="false">Address 1</contactAddress1>
<contactAddress2 display="false">Address 2</contactAddress2>
<contactAddress3 display="false">Address 3</contactAddress3>
<contactCity display="false">City</contactCity>
<contactRegion display="false">Region</contactRegion>
<contactPostCode display="false">Postcode</contactPostCode>
<contactCountry display="false">England</contactCountry>
<contactURL>http://www.test.com</contactURL>
<displayBrandImage>true</displayBrandImage>
</contactDetails>
<jobTemplate>
<refId>1</refId>
</jobTemplate>
</job>
</jobOperation>
</jobOperations>
</jobFeed>
POST https://core.ws.efinancialcareers.com/v1/jobs/2/allocation
Upon success, the server responds with HTTP 200 OK status code and an XML representation containing a reference to the newly created job.
<ns2:jobFeedResult xsi:schemaLocation="http://efinancialcareers.com/schema https://core.ws.efinancialcareers.com/v1/schema" xmlns:ns2="http://efinancialcareers.com/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ns2:jobs>
<ns2:job>
<ns2:original href="https://backoffice.efinancialcareers.com/legacyJob/922134">
<ns2:refId>922134</ns2:refId>
</ns2:original>
<ns2:expirationDate>2014-01-31T00:00:00.000Z</ns2:expirationDate>
<ns2:operationStatus>post successful</ns2:operationStatus>
<ns2:jobFeedApiKey>e457edb8-7bcf-2ea9-8690-9999c98d3c4</ns2:jobFeedApiKey>
</ns2:job>
</ns2:jobs>
</ns2:jobFeedResult>
Single Step - Job Update
Single Step – Update Job
Our Business Rule
- Once a job is active, the job title, job reference number and location cannot be altered.
- A job can only be refreshed once every 72 hours.
To update a job using a single service call, send a HTTP POST request to the following URL supplying your credentials and the XML representation of the updated job.
Important notice:
- All mandatory fields must be re-submitted even if they are not being modified. The service will error if mandatory fields are missing on job update.
- Any non-mandatory fields must be re-submitted even if they are not being updated. The service will assume any missing fields are not required and removed from the database.
POST https://core.ws.efinancialcareers.com/v1/jobfeeds
Mandatory HTTP headers
Content-Type: application/xml
Request body
<jobFeed xsi:schemaLocation="http://efinancialcareers.com/schema jobfeed.xsd" xmlns="http://efinancialcareers.com/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<header>
<providerLogin>
<apiKey>${apiKey}</apiKey>
<trustedAccountApiKey>${trustedAccountApiKey}</trustedAccountApiKey>
<password>${password}</password>
</providerLogin>
<allocationMethod>default</allocationMethod>
<turnAutoDeallocationOff>false</turnAutoDeallocationOff>
</header>
<jobOperations>
<jobOperation>
<operationType>PUT</operationType>
<job>
<id>729999</id>
<defaultDescription lang="EN">
<title>Senior Java Developer</title>
<description>A leading online company are looking for an exceptional Java developer to join them to work on a new greenfield project.</description>
<summary>Java developer - greenfield project in London UK.</summary>
<salaryDescription>60,000 basic + benefits + bonus</salaryDescription>
<minSalary>11111</minSalary>
<maxSalary>22222</maxSalary>
<workPermitRequirements>UK Work Permit</workPermitRequirements>
</defaultDescription>
<positionType>PERMANENT</positionType>
<employmentType>FULL_TIME</employmentType>
<yearsExperience>SEVEN_TEN_YEARS_EXPERIENCE</yearsExperience>
<salaryBand>SIXTH_TIER</salaryBand>
<salaryCurrency>GBP</salaryCurrency>
<workArrangementType>HYBRID</workArrangementType>
<customExpirationDt>2025-05-12</customExpirationDt>
<jobReference>Testjob Ref 2</jobReference>
<location>
<refId>5133135</refId>
</location>
<brand>
<refId>125</refId>
</brand>
<team>
<refId>124</refId>
</team>
<primarySector>
<sectorCode>DEBT_FIXED_INCOME</sectorCode>
<subSectorCode>DEBT_FIXED_INCOME__SALES_TRADING</subSectorCode>
</primarySector>
<secondarySector>
<sectorCode>CONSULTANCY</sectorCode>
<subSectorCode>CONSULTANCY__N_A</subSectorCode>
</secondarySector>
<tertiarySector>
<sectorCode>CONSULTANCY</sectorCode>
<subSectorCode>CONSULTANCY__N_A</subSectorCode>
</tertiarySector>
<jobCustomFields>
<jobCustomField>
<fieldName>firstCustomVariables</fieldName>
<fieldValue>ValueForCustomVariables</fieldValue>
</jobCustomField>
<jobCustomField>
<fieldName>secondCustomVariables</fieldName>
<fieldValue>ValueForCustomVariables</fieldValue>
</jobCustomField>
</jobCustomFields>
<applicationMethod>EMAIL</applicationMethod>
<autoReply>false</autoReply>
<screenQuestionnaire>false</screenQuestionnaire>
<contactDetails>
<contactFirstName>Test firstname</contactFirstName>
<contactLastName>Test lastname</contactLastName>
<contactEmail>testuser@efinancialcareers.com</contactEmail>
<contactPhone>0123456789</contactPhone>
<contactFax>45353453</contactFax>
<contactCompanyName>Test Company</contactCompanyName>
<contactAddress1 display="false">Address 1</contactAddress1>
<contactAddress2 display="false">Address 2</contactAddress2>
<contactAddress3 display="false">Address 3</contactAddress3>
<contactCity display="false">City</contactCity>
<contactRegion display="false">Region</contactRegion>
<contactPostCode display="false">Postcode</contactPostCode>
<contactCountry display="false">England</contactCountry>
<contactURL>http://www.test.com</contactURL>
<displayBrandImage>true</displayBrandImage>
</contactDetails>
</job>
</jobOperation>
</jobOperations>
</jobFeed>
Upon success, the server responds with HTTP 200 OK status code and an XML representation containing a reference to the updated job.
<ns2:jobFeedResult xsi:schemaLocation="http://efinancialcareers.com/schema https://core.ws.efinancialcareers.com/v1/schema" xmlns:ns2="http://efinancialcareers.com/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ns2:jobs>
<ns2:job>
<ns2:original href="https://backoffice.efinancialcareers.com/legacyJob/729999">
<ns2:refId>729999</ns2:refId>
</ns2:original>
<ns2:operationStatus>put successful</ns2:operationStatus>
<ns2:jobFeedApiKey>12f987fc-6ea1-1234-af54-0e23465a0123</ns2:jobFeedApiKey>
</ns2:job>
</ns2:jobs>
</ns2:jobFeedResult>
Single Step - Job Deallocate
Single Step – Job Deallocate
Our Business Rule
- To deallocate a job using a single service call, send a HTTP POST request to the following URL supplying your credentials and the XML representation of the updated job.
POST https://core.ws.efinancialcareers.com/v1/jobfeeds
Mandatory HTTP headers
Content-Type: application/xml
Request body
<jobFeed xsi:schemaLocation="http://efinancialcareers.com/schema jobfeed.xsd" xmlns="http://efinancialcareers.com/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<header>
<providerLogin>
<apiKey>bb-24ot7UnYEpQcnD5</apiKey>
<trustedAccountApiKey>fada-4848-9a52-d89501e47b65</trustedAccountApiKey>
<password>P43taw0-rd3</password>
</providerLogin>
<allocationMethod>default</allocationMethod>
</header>
<jobOperations>
<jobOperation>
<operationType>DEALLOCATE</operationType>
<job>
<refId>25</refId>
</job>
</jobOperation>
</jobOperations>
</jobFeed>
Upon success, the server responds with HTTP 200 OK status code and an XML representation containing a reference to the deallocated job.
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<ns2:jobFeedResult xsi:schemaLocation="http://efinancialcareers.com/schema https://core.ws.efinancialcareers.com/v1/schema">
<ns2:jobs>
<ns2:job>
<ns2:original href="https://backoffice.efinancialcareers.com/legacyJob/25">
<ns2:refId>25</ns2:refId>
</ns2:original>
<ns2:expirationDate>2015-12-31T00:00:00.000Z</ns2:expirationDate>
<ns2:operationStatus>deallocate successful</ns2:operationStatus>
<ns2:jobFeedApiKey>bb-24ot7UnYEpQcnD5</ns2:jobFeedApiKey>
</ns2:job>
</ns2:jobs>
</ns2:jobFeedResult>
Authenticating to Retrieve Dictionary Values
Performing Authentication to Retrieve Client Information and Dictionary Values
In order to retrieve information about your clients such as which teams and brands they belong to or to retrieve dictionary values you will first need to authenticate. It’s possible to authenticate with User or Provider accounts.
Step One – Authentication with User
To authorise, send an HTTP POST request to the following URL:
POST https://auth.ws.efinancialcareers.com/v1/authenticate HTTP/1.1
The authentication URL is different for Pilot:
POST https://auth.ws.efinancialcareers.com/v1/authenticate HTTP/1.1
With these mandatory HTTP headers:
Content-Type: application/xml
Authorization: EfcAuth realm="EFC"
And supply this XML representation in the HTTP request body with your credentials:
<principal xmlns="http://efinancialcareers.com/schema">
<apiKey>api_key</apiKey>
<password>password</password>
<strategy>SESSION</strategy>
</principal>
apiKey - The API key of the user.
password - The password of the user.
strategy - Always SESSION
Upon success, the server responds with HTTP 200 OK status code and an XML representation containing a token. For subsequent requests you will need to use this token so the server can identify your session. The session will expire after 30 minutes if no interaction with the server is maintained.
<ns2:token xsi:schemaLocation=”http://efinancialcareers.com/schema https://core.ws.efinancialcareers.com/v1/schema” xmlns:ns2=”http://efinancialcareers.com/schema” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”><ns2:value>26c3adb6415881a42431dd195d082acc</ns2:value>
</ns2:token>
Step One - Authentication with Provider
To authorize, send an HTTP POST request to the following URL:
POST https://auth.ws.efinancialcareers.com/v1/authenticateProvider
The authentication URL is different for Pilot:
POST https://auth.ws.efinancialcareers.com/v1/authenticateProvider
With these mandatory HTTP headers:
Content-Type: application/xml
Authorization: EfcAuth realm="EFC"
And supply this XML representation in the HTTP request body with your credentials:
<provider xmlns="http://efinancialcareers.com/schema">
<apiKey>izpc9jhWZE5FvEUcXnePr</apiKey>
<password>z2tc-kzW5-wuC5-jF</password>
<trustedAccountApiKey>UnFRhaqi4RaGzfj9tx7Dc</trustedAccountApiKey>
</provider>
apiKey - The API key of the provider.
password - The password of the provider.
trustedAccountApiKey - The API key of the user.
Upon success, the server responds with HTTP 200 OK status code and an XML representation containing a token. For subsequent requests you will need to use this token so the server can identify your session. The session will expire after 30 minutes if no interaction with the server is maintained.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<token xmlns=”http://efinancialcareers.com/schema” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”http://efinancialcareers.com/schema https://auth.ws.efinancialcareers.com/v1/schema”>
<value>522c3c4bd036a69db428ce4274745e9d</value>
</token>
Step Two
Your HTTP Authorisation header should contain the token received after your initial login as described in step one above.
Authorization: EfcAuth realm="EFC", token="522c3c4bd036a69db428ce4274745e9d"
Handing API errors
As the eFinancialCareers‘ API is RESTful, any HTTP status codes within the 4xx and 5xx range are classified as errors. The XML representation in the response body will help you determine the cause of each individual error that occurred.
<?xml version=”1.0″ encoding=”UTF-8″ standalone=”yes” ?>
<ns2:errors xsi:schemaLocation=”http://efinancialcareers.com/schema https://core.ws.efinancialcareers.com/v1/schema”>
<ns2:error errorCode=”10013″>
<ns2:errorType>MSG_AUTH_INVALID_CREDENTIALS</ns2:errorType>
<ns2:translation lang=”en”>Invalid credentials: please note that for security reasons your account will be locked if you make 5 attempts to sign in with invalid credentials.</ns2:translation>
<ns2:property>invalidCredentials</ns2:property>
</ns2:error>
</ns2:errors>
Retrieving Dictionary Values
To access any of the dictionary values you must first authenticate yourself as described in “Authenticating to Retrieve Dictionary Values“.
Retrieving Sectors and Sub Sectors
To retrieve a list of sectors and the associating sub sectors, send an authorised HTTP GET
request to the following URL:
GET https://core.ws.efinancialcareers.com/v1/sectors?locale=en
Mandatory HTTP headers
Content-Type: application/xml
Authorization: EfcAuth realm=”EFC”, token=”522c3c4bd036a69db428ce4274745e9d”
Here is an excerpt of the response:
Please note:
- sector / sectorCode = This is the constant we require the job XML to contain.
- labelTranslations / translation / content = This is the human-readable value.
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<ns2:sectors xsi:schemaLocation="http://efinancialcareers.com/schema https://core.ws.efinancialcareers.com/v1/schema">
<ns2:sector>
<ns2:sectorCode>ACCOUNTING_FINANCE</ns2:sectorCode>
<ns2:subSectors>
<ns2:subSector>
<ns2:subSectorCode>ACCOUNTING_FINANCE__AUDIT</ns2:subSectorCode>
</ns2:subSector>
<ns2:subSector>
<ns2:subSectorCode>ACCOUNTING_FINANCE__FD_CFO</ns2:subSectorCode>
</ns2:subSector>
...........
</ns2:subSectors>
</ns2:sector>
<ns2:sector>
<ns2:sectorCode>ASSET_MANAGEMENT</ns2:sectorCode>
<ns2:subSectors>
<ns2:subSector>
<ns2:subSectorCode>ASSET_MANAGEMENT__ANALYST</ns2:subSectorCode>
</ns2:subSector>
<ns2:subSector>
<ns2:subSectorCode>ASSET_MANAGEMENT__CIO</ns2:subSectorCode>
</ns2:subSector>
............
</ns2:subSectors>
</ns2:sector>
<ns2:labelTranslations>
<ns2:translation>
<ns2:type>dict</ns2:type>
<ns2:path>ws.sector.dict.ACCOUNTING_FINANCE</ns2:path>
<ns2:locale>en</ns2:locale>
<ns2:content>Accounting & Finance</ns2:content>
</ns2:translation>
<ns2:translation>
<ns2:type>dict</ns2:type>
<ns2:path>ws.sector.dict.ASSET_MANAGEMENT</ns2:path>
<ns2:locale>en</ns2:locale>
<ns2:content>Asset Management</ns2:content>
</ns2:translation>
</ns2:labelTranslations>
</ns2:sectors>
Retrieving Position Types
To retrieve a list of position types, send an authorised HTTP GET request to the following URL:
GET https://core.ws.efinancialcareers.com/v1/dictionaries/positionType?locale=en
Mandatory HTTP headers
Here is an excerpt of the response:
Please note:
- positionTypes / positionType / dictionaryCode = This is the constant we require the job XML to contain.
- positionTypes / labelTranslations / translation / content = This is the human-readable value.
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<ns2:positionTypes xsi:schemaLocation="http://efinancialcareers.com/schema https://core.ws.efinancialcareers.com/v1/schema">
<ns2:positionType>
<ns2:id>3</ns2:id>
<ns2:dictionaryCode>CONTRACT</ns2:dictionaryCode>
</ns2:positionType>
<ns2:positionType>
<ns2:id>5</ns2:id>
..........
<ns2:labelTranslations>
<ns2:type>dict</ns2:type>
<ns2:path>ws.positionType.dict.CONTRACT</ns2:path>
<ns2:locale>en</ns2:locale>
<ns2:content>Contract</ns2:content>
</ns2:translation>
</ns2:labelTranslations>
...........
</ns2:positionTypes>
Retrieving Employment Types
To retrieve a list of employment types, send an authorised HTTP GET request to the following URL:
GET https://core.ws.efinancialcareers.com/v1/dictionaries/employmentType?locale=en
Mandatory HTTP headers
Content-Type: application/xml
Authorization: EfcAuth realm=”EFC”, token=”522c3c4bd036a69db428ce4274745e9d”
Here is an excerpt of the response:
Please note:
- employmentTypes / employmentType / dictionaryCode = This is the constant we require the job XML to contain.
- employmentTypes / labelTranslations / translation / content = This is the human-readable value.
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<ns2:employmentTypes xsi:schemaLocation="http://efinancialcareers.com/schema https://core.ws.efinancialcareers.com/v1/schema">
<ns2:employmentType>
<ns2:id>1</ns2:id>
<ns2:dictionaryCode>FULL_TIME</ns2:dictionaryCode>
</ns2:employmentType>
.........
<ns2:labelTranslations>
<ns2:translation>
<ns2:type>dict</ns2:type>
<ns2:path>ws.employmentType.dict.FULL_TIME</ns2:path>
<ns2:locale>en</ns2:locale>
<ns2:content>Full time</ns2:content>
</ns2:translation>
..........
</ns2:labelTranslations>
</ns2:employmentTypes>
Retrieving Salary Bands
To retrieve a list of salary bands, send an authorised HTTP GET request to the following URL:
GET https://core.ws.efinancialcareers.com/v1/dictionaries/salaryBand?locale=en
Mandatory HTTP headers
Content-Type: application/xml
Authorization: EfcAuth realm=”EFC”, token=”522c3c4bd036a69db428ce4274745e9d”
Here is an excerpt of the response:
Please note:
- salaryBands / salaryBand / dictionaryCode = This is the constant we require the job XML to contain.
- salaryBands / labelTranslations / translation / content = This is the human-readable value.
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<ns2:salaryBands xsi:schemaLocation="http://efinancialcareers.com/schema https://core.ws.efinancialcareers.com/v1/schema">
<ns2:salaryBand>
<ns2:dictionaryCode>FIRST_TIER</ns2:dictionaryCode>
</ns2:salaryBand>
..........
<ns2:salaryBand>
<ns2:dictionaryCode>SEVENTH_TIER</ns2:dictionaryCode>
</ns2:salaryBand>
<ns2:translations>
<ns2:translation>
<ns2:path>ws.salaryBand.dict.FIRST_TIER</ns2:path>
<ns2:content currency="AED">0 - 40,000</ns2:content>
..........
<ns2:content currency="ZAR">0 - 200,000</ns2:content>
</ns2:translation>
..........
<ns2:translation>
<ns2:path>ws.salaryBand.dict.SEVENTH_TIER</ns2:path>
<ns2:content currency="RUB">2,160,000+</ns2:content>
</ns2:translation>
</ns2:translations>
</ns2:salaryBands>
Retrieving Currencies
To retrieve a list of currencies, send an authorised HTTP GET request to the following URL:
GET https://core.ws.efinancialcareers.com/v1/dictionaries/currencyType?locale=en
Mandatory HTTP headers
Content-Type: application/xml
Authorization: EfcAuth realm=”EFC”, token=”522c3c4bd036a69db428ce4274745e9d”
Here is an excerpt of the response:
Please note:
- currencyTypes / currencyType / dictionaryCode = This is the constant we require the job XML to contain.
- currencyTypes / labelTranslations / translation / content = This is the human-readable value.
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<ns2:currencyTypes xsi:schemaLocation="http://efinancialcareers.com/schema https://core.ws.efinancialcareers.com/v1/schema">
<ns2:currencyType>
<ns2:id>16</ns2:id>
<ns2:dictionaryCode>AED</ns2:dictionaryCode>
</ns2:currencyType>
..........
<ns2:currencyType>
<ns2:id>15</ns2:id>
<ns2:dictionaryCode>ZAR</ns2:dictionaryCode>
</ns2:currencyType>
<ns2:labelTranslations>
..........
<ns2:translation>
<ns2:type>dict</ns2:type>
<ns2:path>ws.currencyType.dict.AED</ns2:path>
<ns2:locale>en</ns2:locale>
<ns2:content>UAE Dirham (AED)</ns2:content>
</ns2:translation>
...........
<ns2:translation>
<ns2:type>dict</ns2:type>
<ns2:path>ws.currencyType.dict.ZAR</ns2:path>
<ns2:locale>en</ns2:locale>
<ns2:content>Rand (ZAR)</ns2:content>
</ns2:translation>
</ns2:labelTranslations>
</ns2:currencyTypes>
Retrieving Job Application Methods
To retrieve a list of job application methods, send an authorised HTTP GET request to the following URL:
GET https://core.ws.efinancialcareers.com/v1/dictionaries/jobApplicationMethodType?locale=en
Mandatory HTTP headers
Content-Type: application/xml
Authorization: EfcAuth realm=”EFC”, token=”522c3c4bd036a69db428ce4274745e9d”
Here is an excerpt of the response:
Please note:
- jobApplicationMethodTypes / jobApplicationMethodType / dictionaryCode = This is the constant we require the job XML to contain.
- jobApplicationMethodTypes / labelTranslations / translation / content = This is the human-readable value.
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<ns2:jobApplicationMethodTypes xsi:schemaLocation="http://efinancialcareers.com/schema https://core.ws.efinancialcareers.com/v1/schema">
<ns2:jobApplicationMethodType>
<ns2:id>2</ns2:id>
<ns2:dictionaryCode>BACK_OFFICE</ns2:dictionaryCode>
</ns2:jobApplicationMethodType>
..........
<ns2:jobApplicationMethodType>
<ns2:id>3</ns2:id>
<ns2:dictionaryCode>EXTERNAL_APPLICATION</ns2:dictionaryCode>
</ns2:jobApplicationMethodType>
<ns2:labelTranslations>
<ns2:translation>
<ns2:type>dict</ns2:type>
<ns2:path>ws.jobApplicationMethod.dict.BACK_OFFICE</ns2:path>
<ns2:locale>en</ns2:locale>
<ns2:content>All candidate applications go to our Back Office</ns2:content>
</ns2:translation>
..........
<ns2:translation>
<ns2:type>dict</ns2:type>
<ns2:path>ws.jobApplicationMethod.dict.EXTERNAL_APPLICATION</ns2:path>
<ns2:locale>en</ns2:locale>
<ns2:content>A candidate gets redirected to the external URL to apply for a job.</ns2:content>
</ns2:translation>
</ns2:labelTranslations>
</ns2:jobApplicationMethodTypes>
Retrieving Other Dictionary Values
Other dictionary requests are described in the table below:
Name
Request
Description
Years of Experience
https://core.ws.efinancialcareers.com/v1/dictionaries/yearsExperience
Valid Years of Experience Values
Education Levels
https://core.ws.efinancialcareers.com/v1/dictionaries/educationLevel
Valid Education Levels
Travel Rates
https://core.ws.efinancialcareers.com/v1/dictionaries/travelRate
Valid Travel Rates
Account Types
https://core.ws.efinancialcareers.com/v1/dictionaries/accountType
Valid Account Types
Company Types
https://core.ws.efinancialcareers.com/v1/dictionaries/companyType
Valid Company Types
Language Codes
https://core.ws.efinancialcareers.com/v1/dictionaries/languageCodes
Valid 2 symbols (6 for some languages) Language Codes with descriptions
Language Fluencies
https://core.ws.efinancialcareers.com/v1/dictionaries/languageFluency
Valid Levels of Language Fluency
Location Types
https://core.ws.efinancialcareers.com/v1/dictionaries/locationType
Valid Locations Types
Titles of Persons
https://core.ws.efinancialcareers.com/v1/dictionaries/title
Valid Titles of Persons
Resume License Types
https://core.ws.efinancialcareers.com/v1/dictionaries/resumeLicenseType
Valid Resume License Types
File Formats
https://core.ws.efinancialcareers.com/v1/dictionaries/fileFormat
Valid File Formats in the System, which can be used for File Uploading
Supported Locales
https://core.ws.efinancialcareers.com/v1/dictionaries/supportedLocales
Valid Locales in the System
Location Service (Job)
To query the location service you must first authenticate yourself as described in “Authenticating to Retrieve Dictionary Values“.
Geographical Location Search
To retrieve a location to use in Resume Search, send an authorised HTTP GET request to the following URL replacing the {name} with the location you require. You will need to use the location id (location / id) as resume search parameter:
GET https://core.ws.efinancialcareers.com/v1/locations/search/name?name=London
Mandatory HTTP headers
Content-Type: application/xml
Authorization: EfcAuth realm=”EFC”, token=”522c3c4bd036a69db428ce4274745e9d”
Locations Searches and parameters
There are the following types of location searches:
Name
Description
Request Path
Obligatory parameters
Optional parameters
Search locations
Search location by ID
Search the nearest location
Search locations in the range
Search locations by name
Retrieve all locations in the system with/without filtering by parameter
Retrieve the location by ID
Retrieve the nearest location by latitude, longitude
Retrieve locations in specified radius
Retrieve locations by name
locations
locations/{id}
locations/search/nearest?latitude=…&longitude=…
locations/search/range?latitude=…&longitude=…&radius=…
locations/search/name?name=…
no
id (of the location)
latitude, longitude
latitude, longitude, radius
name
language, locale, category, type, parent, country, page-size, page, with-parents, show-country, order-by, sort-order
language, locale, with-parents, show-country
language, locale, category, type, parent, country, with-parents, show-country
language, locale, category, type, parent, country, page-size, page, with-parents, show-country, order-by, sort-order
language, locale, category, type, parent, country, page-size, page, with-parents, show-country, order-by, sort-order
There is a table with parameters, which can be applied to searches:
Name
Description
String format
Possible values
Examples
All requests
Language
Locale
Request and response language of locations names
Defines the language of translations in a response
language={language code}
locale={locale code}
All supported language codes in the system. Use dictionary service to get them.
All supported language codes in the system. Use dictionary service to get them.
language=EN, language=FR, language=IT
locale=EN,
locale=FR,
locale=IT
Search locations, Search the nearest location, Search locations in the range, Search locations by name
Category
Type
Parent
Country
With parents
Show country
Functionality where location data will be used, it works like a filter
Type of the location regarding to levels
Id of the parent location
Code of the country
Show parent chain for location name
Display country in parent location chain
category={category name}
type={location type}
parent={parent id}
country={country code}
with-parents={flag}
show-country={flag}
inventory, job, resume, resume-license, work-permit
global, region, country, division, city, postalcode
Available ids in the system
All supported country codes in the system. Use dictionary service to get them.
Boolean values “true” or “false”
Boolean values “true” or “false”
category=inventory, category=job
type=country, type=city
parent=993152 , parent=-4343
country=GB, country=US
with-parents=true, with-parents=false
show-country=true, show-country=false
Search locations, Search locations in the range, Search locations by name
Page size
Page number
Sort criteria
Sort direction
The amout of locations in response per page
The current page number
Name of the sort criteria
Direction of the sorting
page-size={number}
page={number}
order-by={sort criteria}
sort-order={sort direction}
1-250
Max number is limited by search results
name
ASC, DESC
page-size=30,
page-size=50
page=1, page=5
order-by=name
sort-order=ASC,
sort-order=DESC
Search the nearest location, Search locations in the range
Latitude
Longitude
Geo latitude
Geo longitude
latitude={latitude}
longitude={longitude}
-90 <= latitude <= 90
-180 <= longitude <= 180
latitude=12.23, latitude=-34.0031
longitude=112.23, longitude=-134.0031
Search locations in the range
Radius
Radius in km
radius={radius}
0-250
radius=19, radius=172
Search locations by name
Name
Location name (zip code name)
name={location name}
Text symbols and digits
name=London, name=993152
Search locations by ID
Id
Location id
locations/{id}
Available ids in the system
locations/1, locations/-10, locations/451256
There is a list of default parameters below. They will be applied to the request by default.
- locale = current locale of the user (EN by default);
- language = locale;
- page-size = 30;
- page = 1.
Examples of search requests
How to get countries of the region:
- Call the service with “type=region” to get the list of regions.
- Call the service with “type=country” and “parent={region_id}” from the previous call to get the list of countries for a certain region.
How to get locations, which are valid for work permit: call the service with “category=work-permit”.
Locations Searches Response
Upon success, the server responds with HTTP 200 OK status code and an XML representation of the location details in the response body:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<ns2:locations totalCount="36" xsi:schemaLocation="http://efinancialcareers.com/schema https://core.ws.efinancialcareers.com/v1/schema">
<ns2:location href="https://app.ws.efinancialcareers.com/v1/locations/2643743">
<ns2:id>2643743</ns2:id>
<ns2:name>London</ns2:name>
<ns2:names>
<ns2:name>
<ns2:name>London City</ns2:name>
<ns2:language>en</ns2:language>
<ns2:short>false</ns2:short>
<ns2:preferred>false</ns2:preferred>
</ns2:name>
..........
</ns2:names>
<ns2:latitude>51.50853</ns2:latitude>
<ns2:longitude>-0.12574</ns2:longitude>
<ns2:parents>
<ns2:location>
<ns2:id>3333218</ns2:id>
<ns2:name>City of Westminster</ns2:name>
<ns2:names>
<ns2:name>
<ns2:name>City of Westminster</ns2:name>
<ns2:language>en</ns2:language>
<ns2:short>false</ns2:short>
<ns2:preferred>false</ns2:preferred>
</ns2:name>
............
</ns2:names>
<ns2:type>DIVISION</ns2:type>
</ns2:location>
............
<ns2:location>
<ns2:id>6269131</ns2:id>
<ns2:name>England</ns2:name>
<ns2:names>
<ns2:name>
<ns2:name>England</ns2:name>
<ns2:language>en</ns2:language>
<ns2:short>false</ns2:short>
<ns2:preferred>true</ns2:preferred>
</ns2:name>
.............
</ns2:names>
.............
<ns2:type>COUNTRY</ns2:type>
</ns2:location>
<ns2:location>
<ns2:id>-12</ns2:id>
<ns2:name>European Union</ns2:name>
<ns2:names>
.............
</ns2:names>
<ns2:labelTranslations>
<ns2:translation>
<ns2:type>dict</ns2:type>
<ns2:path>ws.location.label.name</ns2:path>
<ns2:locale>en</ns2:locale>
<ns2:content>Name</ns2:content>
</ns2:translation>
.............
</ns2:labelTranslations>
</ns2:locations>
Example of search location by id:
GET https://core.ws.efinancialcareers.com/v1/locations/-18
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<ns2:location href="https://app.ws.efinancialcareers.com/v1/locations/-18" xsi:schemaLocation="http://efinancialcareers.com/schema https://core.ws.efinancialcareers.com/v1/schema">
<ns2:id>-18</ns2:id>
<ns2:name>Gulf</ns2:name>
<ns2:names>
<ns2:name>
<ns2:name>Gulf</ns2:name>
<ns2:language>en</ns2:language>
<ns2:short>false</ns2:short>
<ns2:preferred>true</ns2:preferred>
</ns2:name>
...........
</ns2:names>
<ns2:parents>
<ns2:location>
<ns2:id>-10</ns2:id>
<ns2:name>EMEA</ns2:name>
<ns2:names>
<ns2:name>
<ns2:name>EMEA</ns2:name>
<ns2:language>en</ns2:language>
<ns2:short>false</ns2:short>
<ns2:preferred>true</ns2:preferred>
</ns2:name>
............
</ns2:names>
............
<ns2:labelTranslations>
<ns2:translation>
<ns2:type>dict</ns2:type>
<ns2:path>ws.location.label.name</ns2:path>
<ns2:locale>en</ns2:locale>
<ns2:content>Name</ns2:content>
</ns2:translation>
.............
</ns2:dictTranslations>
</ns2:location>
Edit Job
Editing a Job
Our Business Rule
- Once a job is active, the job title, job reference number and location cannot be altered.
- A job can only be refreshed once every 72 hours.
To edit a job, first retrieve the job entry, modify the data and send an authorised PUT request to the following URL. The {jobid} in this URL template needs to be replaced with your job id.
Important notice:
- All mandatory fields must be re-submitted even if they are not being modified. The service will error if mandatory fields are missing on job update.
- Any non-mandatory fields must be re-submitted even if they are not being updated. The service will assume any missing fields are not required and removed from the database.
- You should not change the <version>, <id>, <created> and <updated> elements; these are non-editable fields.
PUT https://core.ws.efinancialcareers.com/v1/jobs/{jobid}
Mandatory HTTP headers
Content-Type: application/xml
Authorization: EfcAuth realm=”EFC”, token=”522c3c4bd036a69db428ce4274745e9d”
Request body
<job xmlns="http://efinancialcareers.com/schema">
<id>57</id>
<version>0</version>
<defaultDescription lang="DE">
<title>Job ONE in German</title>
<description>Unser Kunde ist ein expandierendes Investmentbank derzeit, die ihre Kreditkarten Flow-Sales-Team mit einem erfahrenen Vertriebsmitarbeiter entwickeln.</description>
<summary>Die Zuständigkeiten für diese Gelegenheit gehören</summary>
<salaryDescription>Basic + Bonus-CD EUR</salaryDescription>
</defaultDescription>
<positionType>PERMANENT</positionType>
<employmentType>FULL_TIME</employmentType>
<yearsExperience>SEVEN_TEN_YEARS_EXPERIENCE</yearsExperience>
<salaryBand>SIXTH_TIER</salaryBand>
<salaryCurrency>GBP</salaryCurrency>
<workArrangementType>HYBRID</workArrangementType>
<customExpirationDt>2025-05-12</customExpirationDt>
<location>
<refId>2643743</refId>
</location>
<brand>
<refId>111</refId>
</brand>
<primarySector>
<sectorCode>DEBT_FIXED_INCOME</sectorCode>
<subSectorCode>DEBT_FIXED_INCOME__SALES_TRADING</subSectorCode>
</primarySector>
<applicationMethod>EMAIL</applicationMethod>
<autoReply>false</autoReply>
<screenQuestionnaire>false</screenQuestionnaire>
<contactDetails>
<contactEmail>test@email.com</contactEmail>
</contactDetails>
</job>
Upon success, the server responds with HTTP 200 OK status code and an XML representation of the updated job in the response body:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<ns2:job href="https://core.ws.efinancialcareers.com/v1/jobs/57" xsi:schemaLocation="http://efinancialcareers.com/schema https://core.ws.efinancialcareers.com/v1/schema">
<ns2:id>57</ns2:id>
<ns2:version>1</ns2:version>
<ns2:defaultDescription lang="DE">
<ns2:title>Job ONE in German</ns2:title>
<ns2:description>Unser Kunde ist ein expandierendes Investmentbank derzeit, die ihre Kreditkarten Flow-Sales-Team mit einem erfahrenen Vertriebsmitarbeiter entwickeln.</ns2:description>
<ns2:summary>Die Zuständigkeiten für diese Gelegenheit gehören</ns2:summary>
<ns2:salaryDescription>Basic + Bonus-CD EUR</ns2:salaryDescription>
</ns2:defaultDescription>
<ns2:multiLangDescription />
<ns2:positionType>PERMANENT</ns2:positionType>
<ns2:employmentType>FULL_TIME</ns2:employmentType>
<ns2:yearsExperience>SEVEN_TEN_YEARS_EXPERIENCE</ns2:yearsExperience>
<ns2:salaryBand>SIXTH_TIER</ns2:salaryBand>
<ns2:salaryCurrency>GBP</ns2:salaryCurrency>
<ns2:user href="https://app.ws.efinancialcareers.com/v1/users/168">
<ns2:id>168</ns2:id>
<ns2:version>9</ns2:version>
<ns2:firstName>Broadbean test user</ns2:firstName>
<ns2:lastName>test</ns2:lastName>
<ns2:fullName>test user test</ns2:fullName>
<ns2:email>efcfeedtest@efc.com</ns2:email>
<ns2:company href="https://app.ws.efinancialcareers.com/v1/companies/123">
<ns2:refId>123</ns2:refId>
</ns2:company>
<ns2:myCompanies />
<ns2:preferences>
<ns2:refId>123</ns2:refId>
</ns2:preferences>
<ns2:accounts>
<ns2:account href="https://app.ws.efinancialcareers.com/v1/users/168/accounts/161">
<ns2:refId>161</ns2:refId>
</ns2:account>
</ns2:accounts>
<ns2:teams>
<ns2:team href="https://app.ws.efinancialcareers.com/v1/teams/123">
<ns2:refId>123</ns2:refId>
</ns2:team>
</ns2:teams>
<ns2:approved>false</ns2:approved>
<ns2:internal>false</ns2:internal>
<ns2:sendNewsLetter>false</ns2:sendNewsLetter>
<ns2:created>2012-05-23T08:35:24.847Z</ns2:created>
<ns2:updated>2014-06-17T12:21:35.650Z</ns2:updated>
</ns2:user>
<ns2:company href="https://app.ws.efinancialcareers.com/v1/companies/123">
<ns2:id>123</ns2:id>
<ns2:version>18</ns2:version>
<ns2:siebelReferenceNumber>9991</ns2:siebelReferenceNumber>
<ns2:name>eFC jobfeed test prod</ns2:name>
<ns2:ofccpCompliant>true</ns2:ofccpCompliant>
<ns2:allowExternalAppsWithoutLogin>false</ns2:allowExternalAppsWithoutLogin>
<ns2:socialCvSearchEnabled>false</ns2:socialCvSearchEnabled>
<ns2:socialCvSearchShowPhotoEnabled>false</ns2:socialCvSearchShowPhotoEnabled>
<ns2:status>1</ns2:status>
<ns2:address>
<ns2:id>123</ns2:id>
<ns2:version>6</ns2:version>
<ns2:address1>London</ns2:address1>
<ns2:postalCode>EC2A</ns2:postalCode>
<ns2:cityLocationId>-1041424</ns2:cityLocationId>
<ns2:email>testjobfeed1@test.com</ns2:email>
<ns2:created>2012-05-22T12:16:25.647Z</ns2:created>
<ns2:updated>2013-06-26T11:29:25.907Z</ns2:updated>
</ns2:address>
<ns2:companyType>DIRECT_EMPLOYER</ns2:companyType>
<ns2:childCompanies />
<ns2:users>
<ns2:user href="https://app.ws.efinancialcareers.com/v1/users/123">
<ns2:refId>123</ns2:refId>
</ns2:user>
</ns2:users>
<ns2:contracts>
<ns2:contract href="https://app.ws.efinancialcareers.com/v1/contracts/123">
<ns2:refId>123</ns2:refId>
</ns2:contract>
</ns2:contracts>
<ns2:teams>
<ns2:team href="https://app.ws.efinancialcareers.com/v1/teams/123">
<ns2:refId>123</ns2:refId>
</ns2:team>
</ns2:teams>
<ns2:brands>
<ns2:brand href="https://app.ws.efinancialcareers.com/v1/brands/123">
<ns2:refId>123</ns2:refId>
</ns2:brand>
</ns2:brands>
<ns2:created>2012-05-22T12:16:25.623Z</ns2:created>
<ns2:updated>2014-04-02T15:44:42.317Z</ns2:updated>
</ns2:company>
<ns2:location href="https://app.ws.efinancialcareers.com/v1/locations/2643743">
<ns2:id>2643743</ns2:id>
<ns2:name>London</ns2:name>
<ns2:latitude>51.50853</ns2:latitude>
<ns2:longitude>-0.12574</ns2:longitude>
<ns2:parents>
huge list of <ns2:location>...</ns2:location>
</ns2:parents>
<ns2:type>CITY</ns2:type>
<ns2:country>GB</ns2:country>
</ns2:location>
<ns2:brand href="https://app.ws.efinancialcareers.com/v1/brands/123">
<ns2:id>125</ns2:id>
<ns2:version>2</ns2:version>
<ns2:name>test jobfeedtesting</ns2:name>
<ns2:companies>
<ns2:company href="https://app.ws.efinancialcareers.com/v1/companies/123">
<ns2:refId>123</ns2:refId>
</ns2:company>
</ns2:companies>
<ns2:teams>
<ns2:team href="https://app.ws.efinancialcareers.com/v1/teams/123">
<ns2:refId>123</ns2:refId>
</ns2:team>
</ns2:teams>
<ns2:created>2012-05-23T08:32:18.940Z</ns2:created>
<ns2:updated>2012-05-23T08:32:18.967Z</ns2:updated>
</ns2:brand>
<ns2:primarySector>
<ns2:sectorCode>DEBT_FIXED_INCOME</ns2:sectorCode>
<ns2:subSectorCode>DEBT_FIXED_INCOME__SALES_TRADING</ns2:subSectorCode>
</ns2:primarySector>
<ns2:jobCustomFields />
<ns2:applicationMethod>EMAIL</ns2:applicationMethod>
<ns2:autoReply>false</ns2:autoReply>
<ns2:screenQuestionnaire>false</ns2:screenQuestionnaire>
<ns2:contactDetails>
<ns2:contactEmail display="true">test@email.com</ns2:contactEmail>
</ns2:contactDetails>
<ns2:status>PENDING</ns2:status>
<ns2:entityStatus>ACTIVE</ns2:entityStatus>
<ns2:created>2015-02-18T09:04:25.667Z</ns2:created>
<ns2:updated>2015-02-18T09:06:27.286Z</ns2:updated>
<ns2:labelTranslations>
a huge list of <ns2:translation>...</ns2:translation>
</ns2:labelTranslations>
<ns2:dictTranslations>
a huge list of <ns2:translation>...</ns2:translation>
</ns2:dictTranslations>
<ns2:jobTemplate>
<ns2:id>1</ns2:id>
<ns2:version>0</ns2:version>
<ns2:jobTemplateName>Default eFC Template</ns2:jobTemplateName>
</ns2:jobTemplate>
</ns2:job>
Retrieving a Job
Retrieving a Job
To retrieve a single job, send an authorised HTTP GET request to the following URL replacing the {jobId} with the job id you require:
GET https://core.ws.efinancialcareers.com/v1/jobs/{jobid}
You can also retrieve a job with all its human-readable values which we call translations. To do this append the locale at the end of the GET job URL:
GET https://core.ws.efinancialcareers.com/v1/{jobid}?locale=en
Mandatory HTTP headers
Content-Type: application/xml
Authorization: EfcAuth realm=”EFC”, token=”522c3c4bd036a69db428ce4274745e9d”
Upon success, the server responds with HTTP 200 OK status code and an XML representation of the job in the response body:
<href="https://core.ws.efinancialcareers.com/v1/jobs/57" xsi:schemaLocation="http://efinancialcareers.com/schema https://core.ws.efinancialcareers.com/v1/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<id>57</id>
<version>1</version>
<defaultDescription lang=”EN”>
<title>Senior Java Developer</title>
<description>Updated – A leading online company are looking for an <strong> exceptional Java developer </strong> to join them to work on a new greenfield project.</description>
<summary>Updated – Java developer – greenfield project in London UK.</summary>
<salaryDescription>£60,000 basic + benefits + bonus</salaryDescription>
<minSalary>11111</minSalary>
<maxSalary>22222</maxSalary>
</defaultDescription>
<multiLangDescription/>
<positionType>PERMANENT</positionType>
<employmentType>FULL_TIME</employmentType>
<workArrangementType>HYBRID</workArrangementType>
<user href=”https://core.ws.efinancialcareers.com/v1/users/13″>
<refId>13</refId>
</user>
<company href=”https://core.ws.efinancialcareers.com/v1/companies/2″>
<refId>2</refId>
</company>
<location href=”https://core.ws.efinancialcareers.com/v1/locations/2643743″>
<refId>2643743</refId>
</location>
<brand href=”https://core.ws.efinancialcareers.com/v1/brands/2″>
<refId>2</refId>
</brand>
<team href=”https://core.ws.efinancialcareers.com/v1/teams/3″>
<refId>3</refId>
</team>
<primarySector>
<sectorCode>INFORMATION_TECHNOLOGY</sectorCode>
<subSectorCode>INFORMATION_TECHNOLOGY__DEVELOPMENT</subSectorCode>
</primarySector>
<applicationMethod>WEB_LINK</applicationMethod>
<customExpirationDt>2025-05-12Z</customExpirationDt>
<applicationLink>http://www.example.com/apply</applicationLink>
<created>2011-11-22T17:17:50.760Z</created>
<updated>2011-11-22T17:18:03.762Z</updated>
</job>
Retrieving all Jobs
Retrieving all Jobs
To retrieve all your jobs, send an authorised HTTP GET request to this URL:
GET https://core.ws.efinancialcareers.com/v1/users/current/jobs
Mandatory HTTP headers
Content-Type: application/xml
Authorization: EfcAuth realm=”EFC”, token=”522c3c4bd036a69db428ce4274745e9d”
Upon success, the server responds with HTTP 200 OK status code and an XML representation of the job in the response body:
<ns2:jobs xsi:schemaLocation="http://efinancialcareers.com/schema https://core.ws.efinancialcareers.com/v1/schema" xmlns:ns2="http://efinancialcareers.com/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ns2:job href=”https://core.ws.efinancialcareers.com/v1/jobs/9″>
<ns2:id>9</ns2:id>
<ns2:version>0</ns2:version>
<ns2:defaultDescription lang=”EN”>
<ns2:title>Job Three in English</ns2:title>
<ns2:description>This is the job description</ns2:description>
<ns2:summary>This is the job summary</ns2:summary>
<ns2:salaryDescription>Excellent remuneration + bonus</ns2:salaryDescription>
<minSalary>11111</minSalary>
<maxSalary>22222</maxSalary>
<ns2:workPermitRequirements>Ireland</ns2:workPermitRequirements>
</ns2:defaultDescription>
<ns2:multiLangDescription/>
<ns2:positionType>PERMANENT</ns2:positionType>
<ns2:employmentType>FULL_TIME</ns2:employmentType>
<ns2:workExperienceType>ONE_THREE_YEARS_EXPERIENCE</ns2:workExperienceType>
<ns2:salaryBand>SIXTH_TIER</ns2:salaryBand>
<ns2:salaryCurrency>GBP</ns2:salaryCurrency>
<ns2:workArrangementType>HYBRID</ns2:workArrangementType>
<ns2:jobReference>BB_JOB003</ns2:jobReference>
<ns2:user href=”https://core.ws.efinancialcareers.com/v1/users/13″>
<ns2:refId>13</ns2:refId>
</ns2:user>
<ns2:company href=”https://core.ws.efinancialcareers.com/v1/companies/2″>
<ns2:refId>2</ns2:refId>
</ns2:company>
<ns2:location href=”https://core.ws.efinancialcareers.com/v1/locations/2963597″>
<ns2:refId>2963597</ns2:refId>
</ns2:location>
<ns2:brand href=”https://core.ws.efinancialcareers.com/v1/brands/2″>
<ns2:refId>2</ns2:refId>
</ns2:brand>
<ns2:primarySector>
<ns2:sectorCode>ACCOUNTING_FINANCE</ns2:sectorCode>
<ns2:subSectorCode>ACCOUNTING_FINANCE__AUDIT</ns2:subSectorCode>
</ns2:primarySector>
<ns2:secondarySector>
<ns2:sectorCode>ASSET_MANAGEMENT</ns2:sectorCode>
<ns2:subSectorCode>ASSET_MANAGEMENT__ANALYST</ns2:subSectorCode>
</ns2:secondarySector>
<ns2:applicationMethod>OFFICE</ns2:applicationMethod>
<ns2:contactDetails>
<ns2:customExpirationDt>2025-05-12Z</ns2:customExpirationDt>
<ns2:contactFirstName display=”true”>job poster</ns2:contactFirstName>
<ns2:contactLastName display=”true”>lname</ns2:contactLastName>
<ns2:contactEmail display=”true”>jobposter@abc.com</ns2:contactEmail>
<ns2:contactPhone display=”true”>1234566</ns2:contactPhone>
<ns2:contactCountry display=”true”>London</ns2:contactCountry>
</ns2:contactDetails>
<ns2:created>2011-12-01T15:44:46.180Z</ns2:created>
</ns2:job>
<ns2:job href=”https://core.ws.efinancialcareers.com/v1/jobs/2″>
<ns2:id>2</ns2:id>
…….
</ns2:jobs>
Deleting a Job
Deleting a Job
To delete a single job, send an authenticated HTTP DELETE request to this URL replacing the job id with the job you want to delete:
DELETE https://core.ws.efinancialcareers.com/v1/jobs/{jobid}
Mandatory HTTP headers
Content-Type: application/xml
Authorization: EfcAuth realm=”EFC”, token=”522c3c4bd036a69db428ce4274745e9d”
Upon success, the server responds with HTTP 204 No Content status code:
Please note, a job cannot be deleted if it is live and available to job seekers to view. The job must first be deactivated.
Deactivating a Job
Deactivating a Job
To deactivate a job send an authenticated HTTP DELETE request to this URL replacing the {jobid} with the job you want to deactivate
DELETE https://core.ws.efinancialcareers.com/v1/jobs/{jobid}/allocation
Mandatory HTTP headers
Content-Type: application/xml
Authorization: EfcAuth realm=”EFC”, token=”522c3c4bd036a69db428ce4274745e9d”
Upon success, the server responds with HTTP 204 – No Content.
Please note:
- If the job you are deactivating is allocated to a credit then this item of inventory will no longer be available to use.
- A job will be deactivated automatically if the item of inventory has reached its expiration date.
Refreshing a Job after 72 hours
Refreshing a Job after 72 hours
Our Business Rules
The default order of job search results on the eFinancialCareers website is first by location, then language, then the job date (in reverse chronological order). To give our job seekers a better experience so they can see new jobs appearing further up the search results, we prevent a job from being refreshed before 72 hours.
To refresh a job send an authenticated HTTP PUT request to this URL replacing the {jobid} with the job you want to refresh
PUT https://core.ws.efinancialcareers.com/v1/jobs/{jobid}/refreshJob
Mandatory HTTP headers
Content-Type: application/xml
Authorization: EfcAuth realm=”EFC”, token=”522c3c4bd036a69db428ce4274745e9d”
Upon success, the server responds with HTTP 204 – No Content.
Get Current User
Get Current User and Company References
You will require the reference IDs for the current user that you are posting the job on behalf of and the company reference for that user. To retrieve this information send an authorised HTTP GET request to the following URL
GET https://core.ws.efinancialcareers.com/v1/users/current
Mandatory HTTP headers
Content-Type: application/xml
Authorization: EfcAuth realm=”EFC”, token=”522c3c4bd036a69db428ce4274745e9d”
Upon success, the server responds with HTTP 200 OK status code and an XML representation with the user and company references.
<user href="https://core.ws.efinancialcareers.com/v1/users/13" xsi:schemaLocation="http://efinancialcareers.com/schema https://core.ws.efinancialcareers.com/v1/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<id>13</id> This is the user refId to use in the job XML
<version>0</version>
<firstName>Gina</firstName>
<lastName>Roberto</lastName>
<email>Gina.Roberto@acme.com</email>
<company href=”https://core.ws.efinancialcareers.com/v1/companies/2″>
<refId>2</refId> This is the company refId to use in the job XML
</company>
<teams>
<team href=”https://core.ws.efinancialcareers.com/v1/teams/3″>
<refId>3</refId> This is the team refId to use when discovering the inventory allocated to a team
</team>
</teams>
<approved>true</approved>
<created>2011-11-22T09:43:18.300Z</created>
</user>
Get Users, Teams and Brands
Get Users, Teams and Brands
To retrieve a list of all your clients including their team and brand you must first authenticate yourself as described in “Authenticating to Retrieve Dictionary Values“. You then need to send an HTTP GET request to the following URL:
GET https://core.ws.efinancialcareers.com/v1/providerDependencies
Mandatory HTTP headers
Content-Type: application/xml
Authorization: EfcAuth realm=”EFC”, token=”522c3c4bd036a69db428ce4274745e9d”
Please note, if you post jobs for twenty different users from different companies, this API request will retrieve details for all twenty users. You can then filter by the <apiKey> node to discover a specific user.
Here is an excerpt of the response:
<ns2:jobFeedDependencies xsi:schemaLocation="http://efinancialcareers.com/schema https://core.ws.efinancialcareers.com/v1/schema" xmlns:ns2="http://efinancialcareers.com/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ns2:jobFeedDependency>
<ns2:apiKey>eFC-12345</ns2:apiKey>
<ns2:teams/>
<ns2:brands/>
</ns2:jobFeedDependency>
<ns2:jobFeedDependency>
<ns2:apiKey>eFC-23456</ns2:apiKey>
<ns2:teams>
<ns2:team href="https://app.ws.efinancialcareers.com/v1/teams/99999">
<ns2:id>99999</ns2:id>
<ns2:version>13</ns2:version>
<ns2:name>COM12345</ns2:name>
<ns2:company href="https://app.ws.efinancialcareers.com/v1/companies/123456">
<ns2:refId>123456</ns2:refId>
</ns2:company>
<ns2:users>
<ns2:user href="https://app.ws..efinancialcareers.com/v1/users/234567">
<ns2:refId>234567</ns2:refId>
</ns2:user>
<ns2:user href="https://app.ws.efinancialcareers.com/v1/users/345678">
<ns2:refId>
345678
</ns2:refId>
</ns2:user>
</ns2:users>
<ns2:brands/>
<ns2:created>2013-05-17T06:50:32.407Z</ns2:created>
<ns2:updated>2013-11-06T15:23:31.130Z</ns2:updated>
</ns2:team>
</ns2:teams>
<ns2:brands>
<ns2:brand href="https://app.ws.efinancialcareers.com/v1/brands/888888">
<ns2:id>888888</ns2:id>
<ns2:version>5</ns2:version>
<ns2:name>Test (Licence No. 11111111)</ns2:name>
<ns2:homePageLogo>1234567890.gif</ns2:homePageLogo>
<ns2:jobAdLogo>
1234567890
1234567890.gif</ns2:jobAdLogo>
<ns2:companies>
<ns2:company href="https://app.ws.efinancialcareers.com/v1/companies/9999999">
<ns2:refId>9999999</ns2:refId>
</ns2:company>
</ns2:companies>
<ns2:teams>
<ns2:team href="https://app.ws.efinancialcareers.com/v1/teams/888888">
<ns2:refId>888888</ns2:refId>
</ns2:team>
<ns2:team href="https://app.ws.efinancialcareers.com/v1/teams/7777777">
<ns2:refId>7777777</ns2:refId>
</ns2:team>
</ns2:teams>
<ns2:created>2012-04-16T15:27:55.413Z</ns2:created>
<ns2:updated>2013-08-21T08:33:22.883Z</ns2:updated>
</ns2:brand>
</ns2:brands>
</ns2:jobFeedDependency>
<ns2:jobFeedDependency>
<ns2:apiKey>eFC-4567890</ns2:apiKey>
<ns2:teams>
<ns2:team href="https://app.ws.efinancialcareers.com/v1/teams/12345678">
<ns2:id>12345678</ns2:id>
<ns2:version>1</ns2:version>
<ns2:name>Test Company</ns2:name>
<ns2:company href="https://app.ws.efinancialcareers.com/v1/companies/888888">
<ns2:refId>888888</ns2:refId>
</ns2:company>
<ns2:users>
<ns2:user href="https://app.ws.efinancialcareers.com/v1/users/9999999">
<ns2:refId>9999999</ns2:refId>
</ns2:user>
</ns2:users>
<ns2:inventoryAllocations>
<ns2:inventoryAllocation>
<ns2:refId>594123</ns2:refId>
</ns2:inventoryAllocation>
</ns2:inventoryAllocations>
<ns2:brands>
<ns2:brand href="https://app.ws.efinancialcareers.com/v1/brands/956789">
<ns2:refId>
956789
</ns2:refId>
</ns2:brand>
</ns2:brands>
<ns2:created>2012-05-01T08:59:11.460Z</ns2:created>
<ns2:updated>2012-10-10T04:23:29.917Z</ns2:updated>
</ns2:team>
</ns2:teams>
<ns2:brands>
<ns2:brand href="https://app.ws.efinancialcareers.com/v1/brands/67890123">
<ns2:id>
67890123
</ns2:id>
<ns2:version>7</ns2:version>
<ns2:name>Another Test Company</ns2:name>
<ns2:homePageLogo>1357924680.gif</ns2:homePageLogo>
<ns2:jobAdLogo>
1357924680
1357924680
.gif</ns2:jobAdLogo>
<ns2:companies>
<ns2:company href="https://app.ws.efinancialcareers.com/v1/companies/4567890">
<ns2:refId>
4567890
</ns2:refId>
</ns2:company>
</ns2:companies>
<ns2:teams>
<ns2:team href="https://app.ws.efinancialcareers.com/v1/teams/34567890">
<ns2:refId>
34567890
</ns2:refId>
</ns2:team>
<ns2:team href="https://app.ws.efinancialcareers.com/v1/teams/2345678">
<ns2:refId>
2345678
</ns2:refId>
</ns2:team>
</ns2:teams>
<ns2:created>2012-04-29T16:12:02.663Z</ns2:created>
<ns2:updated>2012-09-25T15:50:30.320Z</ns2:updated>
</ns2:brand>
</ns2:brands>
</ns2:jobFeedDependency>
</ns2:jobFeedDependencies>
Get Brands of the User
To retrieve a brands list of the current user you must first authenticate yourself as described in “Authenticating to Retrieve Dictionary Values“. You then need to send an HTTP GET request to the following URL:
GET https://core.ws.efinancialcareers.com/v1/users/current/brands
Mandatory HTTP headers
Content-Type: application/xml
Authorization: EfcAuth realm=”EFC”, token=”522c3c4bd036a69db428ce4274745e9d”
Here is an excerpt of the response:
<?xml version="1.0" encoding="UTF-8"?>
<ns2:brands xmlns:ns2=”http://efinancialcareers.com/schema” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”http://efinancialcareers.com/schema https://core.ws.efinancialcareers.com/v1/schema”>
<ns2:brand href=”https://core.ws.efinancialcareers.com/v1/brands/564″>
<ns2:id>564</ns2:id>
<ns2:version>2</ns2:version>
<ns2:name>Brand Name</ns2:name>
<ns2:companies>
<ns2:company href=”https://core.ws.efinancialcareers.com/v1/companies/675″>
<ns2:refId>675</ns2:refId>
</ns2:company>
</ns2:companies>
<ns2:teams>
<ns2:team href=”https://core.ws.efinancialcareers.com/v1/teams/54″>
<ns2:refId>54</ns2:refId>
</ns2:team>
</ns2:teams>
<ns2:created>2012-05-28T14:40:29.083Z</ns2:created>
<ns2:updated>2012-05-28T14:40:29.117Z</ns2:updated>
</ns2:brand>
</ns2:brands>
Dealing with Errors
Dealing with Errors
As the eFinancialCareers’ API is RESTful, any HTTP status codes within the 4xx and 5xx will mean an error has occurred. The XML representation in the response body will help you determine the cause of each individual error that occurred. Here is a sample of an error message:
<errors xsi:schemaLocation="http://efinancialcareers.com/schema https://core.ws.efinancialcareers.com/v1/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<error errorCode=”25000″>
<errorType>MSG_JOB_AUTOALLOCATION_INSUFFICIENT_INVENTORY_AMOUNT</errorType>
<translation lang=”en”>You do not have sufficient inventory to make this job live.</translation>
</error>
</errors>
JobFeed Error Codes
Error Code
Error Message
Description
30000
30001
30002
30003
30004
30005
30006
30007
30008
30009
30010
MSG_JOBFEED_INVALID_OPERATION_TYPE
MSG_JOBFEED_UNABLE_TO_FIND_JOB_
LOCATION_BY_LATITUDE_AND_LONTITUDE
MSG_JOBFEED_UNABLE_TO_PICK_BRAND
MSG_JOBFEED_UNABLE_TO_PICK_TEAM
MSG_JOBFEED_USER_DOES_NOT_BELONG_TO_TEAM
MSG_JOBFEED_INVALID_BRAND_SPECIFIED
MSG_JOBFEED_JOB_WAS_DEALLOCATED_ALREADY
MSG_JOBFEED_JOB_WAS_POSTED_BY_ANOTHER_TEAM
MSG_JOBFEED_DEACTIVATE_INVALID_JOBREF
MSG_JOBFEED_JOB_TEMPLATE_DOES_NOT_EXIST
MSG_JOBFEED_JOB_TEMPLATE_IS_NOT_AVAILABLE
User requested invalid operation
Job locations can’t be found by latitude and longitude
The brand of the job can’t be found
The team of the job can’t be found
Current user does not belong to provided job inventory team
Specified brand is invalid
Job was already de-allocated
Job was posted by a user who belongs to another job inventory team
Job feed has an invalid Job reference for’deactivate’ status
Job Template does not exist
Job Template is not available for this Brand/Company
JobFeed Parsing Error Codes
Error Code
Error Message
Description
31000
31001
31002
31003
31004
31005
31006
31007
31008
31009
MSG_JOBFEEDPARSING_ERROR_INVALID_XML_JOB_FEED
MSG_JOBFEEDPARSING_INVALID_ENCODING
MSG_JOBFEEDPARSING_INVALID_FEED_STRUCTURE
MSG_JOBFEEDPARSING_INVALID_MAIN_TAG
MSG_JOBFEEDPARSING_NO_JOBS_FOUND
MSG_JOBFEEDPARSING_NO_HEADER_FOUND
MSG_JOBFEEDPARSING_NO_DOCUMENT_START
MSG_JOBFEEDPARSING_NO_DOCUMENT_END
MSG_JOBFEEDPARSING_UNKNOWN_TAG
MSG_UNEXPECTED_END_OF_DOCUMENT
There is an invalid XML in the feed
There is an invalid encoding of the feed
There is an invalid structure of the feed
Invalid job feed main tag
No jobs found in job feed
No header found in job feed
No document start in job feed
No document end in job feed
Unknown tag in job feed
Unexpected end of document in job feed
Validation errors for Job Custom fields
Error Code
Error Message
Description
1913
1914
1915
1916
1917
MSG_JOB_CUSTOM_FIELD_VALUE_SIZE_MORE_THAN_1KB
MSG_JOB_CUSTOM_FIELD_NAMES_ARE_DUPLICATED
MSG_JOB_CUSTOM_FIELD_MORE_THAN_10
MSG_JOB_CUSTOM_FIELD_NAME_DOES_MATCH_SIZE_1_TO_100
MSG_JOB_CUSTOM_FIELD_NAME_DOES_MATCH_FORMAT
Character limit exceeded
Two variables with same name
Maximum number of variables exceeded
Variable name too long
Variable name does not match a format
Schema List
Schema List
Schema for a Job: https://core.ws.efinancialcareers.com/v1/schema/core/entity/job.xsd
Schema for a JobFeed: https://core.ws.efinancialcareers.com/v1/schema/core/entity/jobfeed.xsd
Schema for dictionary values: https://core.ws.efinancialcareers.com/v1/schema/core/dictionary/dictionaries.xsd
Schema for Sector and Subsector code: https://core.ws.efinancialcareers.com/v1/schema/core/entity/sector.xsd
Resume API Documentation
Audience
This API document is intended for developers who wish to write client applications that interact with the new eFinancialCareers Resume API. It provides a series of examples of API interactions in the form of RESTful requests.
This document does not rely on any particular programming language; your client application can interact with the API using any language that lets you issue HTTP requests and parse XML-based responses.
Before you begin
This section defines important terms and concepts introduced to our new resume API that are necessary to help your clients get the most from their account setup.
We would recommend that this section is read before performing your very first resume search to understand how we have defined teams and resume licenses and how this affects a resume search. This is all explained below along with some real life examples.
Please note, the entities described below are created for our clients by our Client Service team therefore; if you are already searching resumes on behalf of our clients and have contacted us for an API key, you will be able to proceed with the rest of this guide.
Resume Licenses
A recruiter’s account should belong to a resume license to have the possibility of resume searching. Resume licenses are restricted by a location (by country, region or they may be global). A company can have multiple Resume Licenses with the same start and end date with the same level access and the same Location level, e.g. regional, global. A company can have multiple Resume Licenses running at the same time, but only one license can be assigned to the user simultaneously. Each resume license has fixed number of available views per certain period of time.
There are two types of resume licenses:
- Resume License with Monthly Access
- Resume License with Fixed Period Access
Resume Views
A recruiter must be a member of an active resume license if viewing a resume for the first time. A resume view count is used when a recruiter is viewing a resume that they have never viewed before and the team (“resume license team”) they are in has never had a member that viewed that resume (whilst belonging to that team). A recruiter who no longer has a resume license but has an active contract, then he should not be able to view the CVs unless they are saved in his saved resume folder. The candidate’s location or willing to relocate location(s) must fall within the restriction of user’s resume database license when the resume is viewed.
Scenario: A recruiter is part of a resume licence which can only view UK resumes. This recruiter has viewed resumes from the UK for several weeks. This recruiter has requested to view resumes in France only so Client Services change the licence to France only. – This recruiter will no longer be able to view resumes from the UK, however, they must be able to view resumes they have previously viewed from the UK.
Scenario: A recruiter saves resume 123 and their database licence has expired but still have an active contract with us. If the candidate updates their resume 123 with an updated word document then the recruiter will be able to view this resume and not be deducted a view credit.
If a user has a resume in their marked resumes, and they view that resume via their marked resumes their team is not charged with a credit. Any user within a team can view a resume for free, if a member of that team has already viewed that resume within the last 30 days (this number would be configurable). If a user moves teams, they would be able to view any resume that was viewed by a member of the team they moved to over the last 30 days, without incurring a cost. If a user moves teams, the team the user has moved to would not inherit any free resume views from the user who moved. A user who has moved from one team to another would lose free access to their previous views unless they view the resume through their marked resumes. If a team member views a resume more than 30 days after its last view incurred a cost, the team would be charged a credit.
Q&A
Q&A
Q: What is the trustedApiKey, ApiKey and APIPassword in context of jobfeeds authentication?
A: “apiKey” belongs to provider and will be the same for all jobfeed requests
“trustedAccountApiKey” belongs to an individual user of a company.
“password” is the provider password and will be the same for all job feed request.
Q: How do I get all team, brand and trustedApiKeys for accounts that belong to a provider?
A: With your provider credentials authenticate and run a get request to https://core.ws.efinancialcareers.com/v1/providerDependencies
See Get Users, Teams and Brands section for more information.
Q: Using jobfeed API how do I refresh jobs?
A: Jobs are automatically refreshed when a job is updated after 72 hours. It is still possible to update a job before this time but the job will not be refreshed.
Q: When running a request I am getting the error MSG_COMMON_UNSUPPORTED_MEDIA_TYPE
A: Specify application/xml for media type
Q: Where do the jobs appear after a job is posted via jobfeedsApi?
A: In the response there is a url that takes you directly to the job for example https://backoffice.efinancialcareers.com/legacyJob/12345 . It may take up to 3 minutes for the job to appear.
Q: Which testing environment do the jobs appear on?
A: All jobs posted will appear on the live site. It is important that when posting these jobs titles and descriptions only contain test information. When you are happy with how it looks on the site please deactivate the job. If for any reason you are having problems deactivating the job please let us know.
Q: Is it possible to download resume just from the results returned?
A: You have to view the resume first before it can be downloaded.
Q: In the documentation there are two different ways to post jobs. Which is the preferred method?
A: You can use either but most clients use single step job post.
Q: Can I add a tracking pixel to a job?
A: Tracking pixel can be inserted into the <description> tag, for example <img src=”http://example.com/example001.gif“>
Q: When posting a job is there a way of specifying a location without using a locationId which involves using the location service?
A: it is also possible to post jobs using latitude and longitude co-ordinates which will map to the nearest city. Example below
<originalLocation>
<latitude>51.508128895289</latitude>
<longitude>-0.12800500000003012</longitude>
<locationName>London, England</locationName>
<isoCityCode />
<isoCountryCode>EN</isoCountryCode>
<zip></zip>
</originalLocation>
Q: When using single step job posting how does inventory get allocated?
A: By default available inventory is automatically allocated from the team. If this is using SLOT inventory and all inventory is used then the oldest job will be de-allocated to allow the new job to become live. To disable this option so that only inventory that has NOT been allocated is used then element turnAutoDeallocationOff element should be set to true in the request.
Q: How do I post a job advert with anonymous brand information?
A: In the contact details of the request add <hideContactDetails>true</hideContactDetails> tag. This will ensure no branded information is displayed for the job.
Q: When do jobs expire?
A: Depending on the inventory type that is used will determine when a job expires.
For SLOTS job will expire when inventory end date is reached.
For 30 and 60 day credits the job will expire when the amount of days for the credit duration has been reached.
Jobs can be deactivated before the end date by sending a de-allocate request.
Building your First Search Request
Building your First Search Request
Getting started with the new Candidate Search API requires you to pull information from several different sources. The table below describes the main list of search parameters.
Parameters are optional and can be omitted. The same way, some parameters have default values. That means if there are no values for some parameters in the search request, service will use default values.
Joining of Search Parameters
Request must include a valid authorization token in the Authorization header, formatted as: Authorization: Bearer {access_token} For detailed instructions on obtaining the token, please refer to this page.
To perform a Search Resume Request to production, send an authorised HTTPS GET request
GET https://candidate-search-api.efinancialcareers.com/api-search?{searchparameters}
The same request to pilot is the following:
GEThttps://candidate-search-api.pilotaws.efinancialcareers.com/api-search?%20{search%20parameters}
You can combine multiple search parameters in a single request using the & symbol.
For example:
keyword=Java&page=1&pageSize=10.
To apply multiple values to a single filter, use the pipe symbol (|).
For example:
filters.locationId=3865483|3577279
Some filters follow specific formatting patterns:
Filter
Format
Example
filters.sectors
sector/subsector
ASSET_MANAGEMENT/SALES_CLIENT_SERVICES|CAPITAL_MARKETS
filters.languageLe
vels
language/languageLevel
EN/COMPETENT|ES/BASIC
filters.seniority
seniority/seniorityLevel
DIRECTOR|CSVP_HEAD_OF/FIRST_VICE_PRESIDENT
Search Parameters
Valid values of search parameters can be received with the help of Dictionary Service (should be link to the new Retrieving Dictionary Values Page).
There is a list of default parameters below. They will be applied to the request by default if you don’t specify any of them in the request:
page = 1;
page-size = 10;
language = “en”;
matchMode = BOOLEAN;
Name
Example
Default Value
keywords
java developer
matchMode
BOOLEAN
BOOLEAN
language
en
en
sortOrder
ASC|DESC
orderBy
updatedDate or _score (sort by relevancy)
_score
page
1
1
pageSize
10
10
jobId
QCByb3M3QSGFQ7e
targetedTitle
Project Manager
filters.updateDate
ONE_DAY|TWO_DAYS|THREE_DAYS
filters.locationId
103867
filters.radius
50
filters.radiusUnit
mi or km
filters.willingToReclocate
true or false
filters.workPermitLocation
119388
filters.sectors
CAPITAL_MARKETS/DOCUMENTATION_STRUCTURIN|CAPITAL_MARKETS/OTHER
filters.yearsExperience
NO_EXPERIENCE|ONE_THREE_YERAS_EXPERIENCE
filters.languageLevels
EN|US|CMN
EN/BASIC|FR/FIRST_LANGUAGE
filters.educationL
evels
EDUCATION_LEVEL_1| EDUCATION_LEVEL_2
filters.positionTypes
PERMANENT, TEMPORARY, CONTRACT, SELF_EMPLOYED, INTERNSHIPS_AND_GRADUATE_TRAINEE
filters.salaryAmount
50000
filters.salaryCurrency
GBP, USD, EUR, CHF, JPY, AUD, SGD, HKD, CNY, CAD, SEK, DKK, NOK, ISK, ZAR, AED, QAR, BHD, SAR, KWD, OMR, NZD, NGN, INR, RUB, MYR
filters.salaryPeriod
PER_HOUR, PER_DAY, PER_WEEK, PER_MONTH, PER_YEAR;
filters.travelRate
NONE, TWENTY_FIVE_PERCENTS, FIFTY_PERCENTS, SEVENTY_FIVE_PERCENTS
filters.availability
UNDEFINED, IMMEDIATELY, ONE_WEEK, ONE_MONTH, TWO_MONTH, THREE_MONTH, SIX_MONTH;
filters.seniority
DIRECTOR/COMPANY_SECRETARY|DIRECTOR/SENIOR_DIRECTOR|SVP_HEAD_OF/ASSISTANT_DIRECTOR
Boolean search
Boolean search allows you to combine keywords with ‘operators’ such as AND, OR, NOT, (brackets) and “quotation marks” to produce more relevant search results.
For example:
keywords= (developer OR engineer OR programmer) AND (java OR scala OR c# OR python OR C++ OR react OR cloud OR devops OR AWS angular OR javascript) NOT ("project manager")
Ordering
The results obtained when searching for resumes are ordered by relevance by default.
Results can be sorted by resume update date
Example: orderBy=updatedDate
Sort order
Sort ascending or descending considering order-by parameter.
ASC, DESC
Example: sort-order=ASC
Return Format
There is one return format available.: JSON
Updated Within
Returns resumes updated within defined age.
Example: updatedDate=TWO_WEEKS
Returnable Value
Duration in Days
ONE_DAY
TWO_DAYS
THREE_DAYS
ONE_WEEK
TWO_WEEKS
ONE_MONTH
THREE_MONTHS
SIX_MONTHS
ONE_YEAR
OTHER
1
2
3
7
14
30
90
180
365
Unbounded
Contact Jobseeker
Contact Jobseeker
To contact a Jobseeker, send an authorised HTTP POST request, and supply the XML representation of the message in the HTTP body:
POST https://core.ws.efinancialcareers.com/v1/message/resume HTTP/1.1
The same request to the Pilot will be the following:
POST https://core.ws.pilot.efinancialcareers.com/v1/message/resume HTTP/1.1
Mandatory HTTP headers
Content-Type: application/xml
Authorization: EfcAuth realm="EFC", token="522c3c4bd036a69db428ce4274745e9d"
It is possible to get the response in JSON format. Use “Accept: application/json” to get a response in JSON format.
Mandatory HTTP body:
<sch:jobSeekerResumeMessage xmlns:sch="http://efinancialcareers.com/schema">
<sch:sendCopy>false or true</sch:sendCopy>
<sch:subject>Some text</sch:subject>
<sch:body>Some text</sch:body>
<sch:resumeId>Some Resume ID</sch:resumeId>
<sch:cc>Some email address</sch:cc>
</sch:jobSeekerResumeMessage>
It’s only possible to contact jobseekers, whose resumes were viewed (see Getting Resume Views for the instructions how to view a resume).
The example of valid HTTP body:
<sch:jobSeekerResumeMessage xmlns:sch="http://efinancialcareers.com/schema">
<sch:sendCopy>false</sch:sendCopy>
<sch:subject>Some text</sch:subject>
<sch:body>Some text</sch:body>
<sch:resumeId>1199</sch:resumeId>
<sch:cc>email@email.com</sch:cc>
</sch:jobSeekerResumeMessage>
Upon success, the server responds with HTTP 200 Success status code and an XML representation of precessed status in the response body:
<?xml version="1.0" encoding="UTF-8"?> <ns2:status xmlns:ns2="http://efinancialcareers.com/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" responseCode="0" state="PROCESSED" xsi:schemaLocation="http://efinancialcareers.com/schema https://core.efinancialcareers.com/v1/schema" />
Description of XML tags for the body
Here is description of the XML tags:
Name
Tag Name
Format Example
Possible Values
Specify whether send copy of the email to the sender or not
<sch:sendCopy>
<sch:sendCopy>false</sch:sendCopy>
false – don’t send
true – send
Subject of the email
<sch:subject>
<sch:subject>Some text</sch:subject>
plain text and new line symbols
Body of the email
<sch:body>
<sch:body>Some text</sch:body>
plain text and new line symbols
Email will be sent to the Jobseeker of the following resume ID
<sch:resumeId>
<sch:resumeId>32</sch:resumeId>
Resume IDs
This email address will be put to cc of the email
<sch:cc>
<sch:cc>email@email.test</sch:cc>
Email address
Use several tags to put additional email addresses to CC:
...
<sch:cc>email@email.com</sch:cc>
<sch:cc>email2@email.com</sch:cc>
...
Use several tags to send separate emails to Jobseekers:
...
<sch:resumeId>1199</sch:resumeId>
<sch:resumeId>1200</sch:resumeId>
...
Download Resume
Download Resume
To download a resume, send an authorised HTTP GET request:
GET http://core.ws.efinancialcareers.com/v1/resume-file/{RESUME_ID}?key={SECRET_KEY}
The same request for pilot:
GEThttp://core.ws.pilot.efinancialcareers.com/v1/resume-file/{RESUME_ID}?key={SECRET_KEY}
Note: it is possible to receive the “http://{API_URL}/v1/resume-file/{RESUME_ID}?key={SECRET_KEY}” link in the “Get Resume Views response” – <ns2:downloadLink>link</ns2:downloadLink>
Mandatory HTTP headers
Content-Type: application/xml
Authorization: EfcAuth realm="EFC", token="cf19d435173c7e75ca920a151802da41"
Upon success, the server sends the requested file and responds with HTTP 200 OK status code and the following headers:
Content-Disposition: attachment; filename="filename.pdf"
Content-Type: application/octet-stream
Note: filename=”{FILE_NAME}”, FILE_NAME – the initial name of the file which was uploaded by Job Seeker.
Error Codes (Resume)
Authentication Error Codes
Any HTTP status codes within the 4xx and 5xx range are classified as errors. During authorization, the following status codes are possible:
Http Status Code
Comment
400 Bad Request
Invalid api-key or password
404 Resource Not Found
Requesting resource was not found
405 Method Not Allowed
Action is not allowed
415 Unsupported Media Type
Request media type is unsupported
500 Internal Server Error
Internal server error ocurred
Resume Search Error Codes
Http Status Code
Error Code
Message
Comment
400 Bad Request
3006
Incorrect language field value
Incorrect language field value
400 Bad Request
3006
Keywords verification failed. Possible xss found
Incorrect keyword field value
400 Bad Request
3006
ResumeId verification failed. Possible XSS found
Incorrect recruiterId field value
400 Bad Request
3006
Provide correct location parameters
Incorrect location field value
400 Bad Request
3006
LocationId must be a valid integer number
Incorrect locationId field value
400 Bad Request
3006
LocationId is missing
Incorrect locationIdfield value
400 Bad Request
3006
RadiusUnit can be applied only for single location and not null radius
Incorrect RadiusUnit field value
400 Bad Request
3006
Radius can be applied only for single location
Incorrect Radius field value
400 Bad Request
3006
Radius unit is missing
Radius unit is missing
400 Bad Request
3006
Maximum radius is 120 km
Maximum value for radius exceeded
400 Bad Request
3006
Maximum radius is 75 mi
Maximum value for radius exceeded
400 Bad Request
3006
Search query contains invalid query parameters
Search query contains ofccp params
400 Bad Request
3006
Lost 'recruiterId' for candidates search from CS user
If the search is performed by cs, then the path must contain the recruiterId
400 Bad Request
3009
Bad request
Uncategorized exception
400 Bad Request
3008
Argument exception
Incorrect arguments
400 Bad Request
3007
Type mismatch exception
Type mismatch exception
400 Bad Request
3005
Parameter is not valid
Missing servlet request parameters
401 Unauthorized
3006
Full authentication is requred to access this resource
Missing header Authorizartion: bearer token
401 Unauthorized
90101
Expired token
Invalid authorization token
403 Forbidden
3004
Authenticated user is not allowed to access resources
Authenticated user is not allowed to access resources
403 Forbidden
3001
User has no active license
User has no active license
404 Resource Not Found
3010
Resource not found
Requesting resource was not found
500 Internal Server Error
3000
Internal Server Error
Internal server error occurred
First Step - Performing Authentication (Resume)
First Step – Performing Authentication
The Resumes API enables third party companies to search for resumes, look through the full resume views and download resumes at eFinancialCareers. This section will outline the procedure to authenticate to Resumes Service of eFinancialCareers.
You will need an email and a password for searching and viewing resumes. That data is needed to identify you in the system. If you have these then you are set to continue.
Authentication Flow
Step One – Authorization with User
To authorize, send an HTTP POST request to the following URL:
POST https://auth.efinancialcareers.com /v1/recruiter-service/token
The authentication URL is different for Pilot:
POST https://auth.pilotaws.efinancialcareers.com/v1/recruiter-service/token
Mandatory HTTP headers
Content-Type: application/json
And supply this JSON in the HTTP request body with your credentials:
{
"apiKey": "apiKey",
"password": "password”
}
Example of response:
{
"token": "522c3c4bd036a69db428ce4274745e9d",
"jwtDto":
{
"access_token": " eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJyZWNydWl0ZXJJZCI6Im9QbkNBZW11bnpkcXYxMFEiLCJzdWIiOiJzZXJ2aWNlUmVjcnVpdGVyQG1haWxpbmF0b3IuY29tIiwiY2xpZW50SWQiOiI4ZWVQa0ltWk82VHVtMTFHIiwidXNlcl9uYW1lIjoic2VydmljZVJlY3J1aXRlckBtYWlsaW5hdG9yLmNvbSIsInJvbGVzIjpbIkFETUlOSVNUUkFUT1JfX1JPTEUiLCJSRUNSVUlURVJfU0VSVklDRSIsIlJFQ1JVSVRFUl9fUk9MRSIsIlRFQU1fQURNSU5JU1RSQVRPUl9fUk9MRSJdLCJpc3MiOiIzTVZHOWlmbUFLQ0hJU2JhVHpDcm5BbHdJWFN2ZVpSRkZ6UmppdlEueGhXOFNYNXVFVjlYZGVPVWk3U2pTVVIwaWRzSzdjYTh5UllIWGpab3EzRmpjIiwiY3VzdG9tX3RhZ3MiOnsibG9jYWxlIjoiZW4ifSwiYXV0aG9yaXRpZXMiOlsiUkVDUlVJVEVSX1NFUlZJQ0UiLCJSRUNSVUlURVJfX1JPTEUiLCJURUFNX0FETUlOSVNUUkFUT1JfX1JPTEUiLCJBRE1JTklTVFJBVE9SX19ST0xFIl0sImNsaWVudF9pZCI6ImVmYyIsImF1ZCI6Imh0dHBzOi8vcWEtZGhpLmNzNzcuZm9yY2UuY29tL2VmaW5hbmNpYWxjYXJlZXJzIiwic2NvcGUiOlsicmVjcnVpdGVyX3NlcnZpY2UiXSwiZXhwIjoxNzEzMzM5NjA1LCJqdGkiOiI4Y2M3MjIwYS1iNmQxLTQ2MzQtOWQ4Yi1hMDAzMDY0ODNmY2QifQ.pswOo6FWAor1CySsDpsBBPDwUg3FXLiSpd92PDIOdiOquF1AMgKiAsd262yRdnX8hkrekuYfcyf45V5LjSgu-Dl6T_EaqPsfJVRQ-rnJkuQyMQMZ1KNS-liLucKLZOM663dwaqxCP_kQ7DhM5RDpW0MDzGHuV-xjz_61xvmWaqRVCG6x0r1CqSXCdzVqdV4neudJuMaGM_MKi3PfHqKsENZ-nraQ5CQjyZ25eHLWss1p3GEhNxAm3IRsYbDZf_vFl66raGcwUizGjHkZc_npteF88TTmw4Vqzlyz8-T8St96IwsmbF5cf9bp6xnNzTrMDvB_3OOP0CzTepAGcz0-4Q",
"token_type": "bearer",
"refresh_token": "refresh token",
"expires_in": 86399,
"scope": "recruiter_service",
"roles": [ "roles" ],
"jti": " jti”
}
}
Where:
token - access token for additional API search requests (contact jobseeker, download resume, get resume view, location service request, retrieve dictionary values
access_token - access token for resume API search
Step Two
For additional requests:
Your HTTP authorization header should contain the token received after your initial login as described in step one above.
For resume API search:
Your HTTP authorization header should contain the token the access_token received after your initial login as described in step one above.
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJyZWNydWl0ZXJJZCI6Im9QbkNBZW11bnpkcXYxMFEiLCJzdWIiOiJzZXJ2aWNlUmVjcnVpdGVyQG1haWxpbmF0b3IuY29tIiwiY2xpZW50SWQiOiI4ZWVQa0ltWk82VHVtMTFHIiwidXNlcl9uYW1lIjoic2VydmljZVJlY3J1aXRlckBtYWlsaW5hdG9yLmNvbSIsInJvbGVzIjpbIkFETUlOSVNUUkFUT1JfX1JPTEUiLCJSRUNSVUlURVJfU0VSVklDRSIsIlJFQ1JVSVRFUl9fUk9MRSIsIlRFQU1fQURNSU5JU1RSQVRPUl9fUk9MRSJdLCJpc3MiOiIzTVZHOWlmbUFLQ0hJU2JhVHpDcm5BbHdJWFN2ZVpSRkZ6UmppdlEueGhXOFNYNXVFVjlYZGVPVWk3U2pTVVIwaWRzSzdjYTh5UllIWGpab3EzRmpjIiwiY3VzdG9tX3RhZ3MiOnsibG9jYWxlIjoiZW4ifSwiYXV0aG9yaXRpZXMiOlsiUkVDUlVJVEVSX1NFUlZJQ0UiLCJSRUNSVUlURVJfX1JPTEUiLCJURUFNX0FETUlOSVNUUkFUT1JfX1JPTEUiLCJBRE1JTklTVFJBVE9SX19ST0xFIl0sImNsaWVudF9pZCI6ImVmYyIsImF1ZCI6Imh0dHBzOi8vcWEtZGhpLmNzNzcuZm9yY2UuY29tL2VmaW5hbmNpYWxjYXJlZXJzIiwic2NvcGUiOlsicmVjcnVpdGVyX3NlcnZpY2UiXSwiZXhwIjoxNzEzMzM5NjA1LCJqdGkiOiI4Y2M3MjIwYS1iNmQxLTQ2MzQtOWQ4Yi1hMDAzMDY0ODNmY2QifQ.pswOo6FWAor1CySsDpsBBPDwUg3FXLiSpd92PDIOdiOquF1AMgKiAsd262yRdnX8hkrekuYfcyf45V5LjSgu-Dl6T_EaqPsfJVRQ-rnJkuQyMQMZ1KNS-liLucKLZOM663dwaqxCP_kQ7DhM5RDpW0MDzGHuV-xjz_61xvmWaqRVCG6x0r1CqSXCdzVqdV4neudJuMaGM_MKi3PfHqKsENZ-nraQ5CQjyZ25eHLWss1p3GEhNxAm3IRsYbDZf_vFl66raGcwUizGjHkZc_npteF88TTmw4Vqzlyz8-T8St96IwsmbF5cf9bp6xnNzTrMDvB_3OOP0CzTepAGcz0-4Q
Handing API errors
As the eFinancialCareers‘ API is RESTful, any HTTP status codes within the 4xx and 5xx range are classified as errors. The XML representation in the response body will help you determine the cause of each individual error that occurred. The description of the error codes can be found here.
Getting Resume Views
Getting Resume Views
Getting started with the new Search Resume API requires you to pull information from several different sources.The table below describes the main list of search parameters.
Parameters are optional and can be omitted. The same way, some parameters have default values. That means if there are no values for some parameters in the search request, service will use default values.
Request
To perform a Search Resume Request, send an authorised HTTPS GET request:
GET https://core.ws.efinancialcareers.com/v1/view-resume/{RESUME_ID}?locale=en HTTP/1.1
The same request for pilot is:
GET https://core.ws.pilot.efinancialcareers.com/v1/view-resume/{RESUME_ID}?locale=en HTTP/1.1
Mandatory HTTP headers
Content-Type: application/xml
Authorization: EfcAuth realm="EFC", token="5b88f844e9ed784e49655f53be6cea40"
It is possible to get the response in JSON format. Use “Accept: application/json” to get a response in JSON format.
Resume Views Business rules
The user should have assigned resume license to view a resume. A resume view count is used when a recruiter is viewing a resume that they have never viewed before and the team they are in has never had a member that viewed that resume (whilst belonging to that team).
Content-Disposition: attachment; filename="filename.pdf"
Content-Type: application/octet-stream
Response
Upon success, the server responds with HTTP 200 Success status code and an XML representation of the search results in the response body:
<ns2:resumeFullView xsi:schemaLocation="http://efinancialcareers.com/schema https://core.ws.pilot.efinancialcareers.com/v1/schema" xmlns:ns2="http://efinancialcareers.com/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ns2:id>55665566</ns2:id>
<ns2:title>Junior</ns2:title>
<ns2:sectorCode>GRADUATES_INTERNSHIPS</ns2:sectorCode>
<ns2:subSectorCode>GRADUATES_INTERNSHIPS__GRADUATE_TRAINEE</ns2:subSectorCode>
<ns2:yearsExperience>ONE_THREE_YEARS_EXPERIENCE</ns2:yearsExperience>
<ns2:educationLevel>EDUCATION_LEVEL_8</ns2:educationLevel>
<ns2:languages>
<ns2:language>
<ns2:languageCode>EN</ns2:languageCode>
<ns2:languageFluency>FLUENT</ns2:languageFluency>
<ns2:dictTranslations locale="en">
<ns2:translation>
<ns2:path>ws.languageCodes.dict.EN</ns2:path>
<ns2:content>English</ns2:content>
</ns2:translation>
<ns2:translation>
<ns2:path>ws.languageFluency.dict.FLUENT</ns2:path>
<ns2:content>Fluent</ns2:content>
</ns2:translation>
</ns2:dictTranslations>
</ns2:language>
<ns2:language>
<ns2:languageCode>FR</ns2:languageCode>
<ns2:languageFluency>FIRST_LANGUAGE</ns2:languageFluency>
<ns2:dictTranslations locale="en">
<ns2:translation>
<ns2:path>ws.languageCodes.dict.FR</ns2:path>
<ns2:content>French</ns2:content>
</ns2:translation>
<ns2:translation>
<ns2:path>ws.languageFluency.dict.FIRST_LANGUAGE</ns2:path>
<ns2:content>First language</ns2:content>
</ns2:translation>
</ns2:dictTranslations>
</ns2:language>
</ns2:languages>
<ns2:positionType>PERMANENT</ns2:positionType>
<ns2:employmentType>FULL_TIME</ns2:employmentType>
<ns2:workPermits>
<ns2:location href="https://core.ws.pilot.efinancialcareers.com/v1/locations/-12">
<ns2:id>-12</ns2:id>
<ns2:name>European Union</ns2:name>
<ns2:parents/>
<ns2:type>region</ns2:type>
</ns2:location>
</ns2:workPermits>
<ns2:location href="https://core.ws.pilot.efinancialcareers.com/v1/locations/2988503">
<ns2:id>2988507</ns2:id>
<ns2:name>Paris</ns2:name>
<ns2:latitude>48.85341</ns2:latitude>
<ns2:longitude>2.3488</ns2:longitude>
<ns2:parents/>
<ns2:type>city</ns2:type>
</ns2:location>
<ns2:salaryCurrency>EUR</ns2:salaryCurrency>
<ns2:travelRate>TWENTY_FIVE_PERCENTS</ns2:travelRate>
<ns2:contactDetails>
<ns2:title>MR</ns2:title>
<ns2:firstName>Yoann</ns2:firstName>
<ns2:lastName>Dilmi</ns2:lastName>
<ns2:email>yoann.dilmi@gmail.com</ns2:email>
<ns2:dictTranslations locale="en">
<ns2:translation>
<ns2:path>ws.title.dict.MR</ns2:path>
<ns2:content>Mr.</ns2:content>
</ns2:translation>
</ns2:dictTranslations>
</ns2:contactDetails>
<ns2:downloadLink>https://core.ws.pilot.efinancialcareers.com/v1/resume-file/11977457?key=2aa2986017cf08f83d6baa97345a31c41b9158973674be315d0885f976f3e76c</ns2:downloadLink>
<ns2:updated>2012-04-10T16:39:21.867Z</ns2:updated>
<ns2:dictTranslations locale="en">
<ns2:translation>
<ns2:path>ws.currencyType.dict.EUR</ns2:path>
<ns2:content>€</ns2:content>
</ns2:translation>
<ns2:translation>
<ns2:path>ws.educationLevel.dict.EDUCATION_LEVEL_8</ns2:path>
<ns2:content>Postgraduate Degree - Masters</ns2:content>
</ns2:translation>
<ns2:translation>
<ns2:path>ws.employmentType.dict.FULL_TIME</ns2:path>
<ns2:content>Full time</ns2:content>
</ns2:translation>
<ns2:translation>
<ns2:path>ws.positionType.dict.PERMANENT</ns2:path>
<ns2:content>Permanent</ns2:content>
</ns2:translation>
<ns2:translation>
<ns2:path>ws.sector.dict.GRADUATES_INTERNSHIPS</ns2:path>
<ns2:content>Graduates & Internships</ns2:content>
</ns2:translation>
<ns2:translation>
<ns2:path>ws.subSector.dict.GRADUATES_INTERNSHIPS__GRADUATE_TRAINEE</ns2:path>
<ns2:content>Graduate Trainee</ns2:content>
</ns2:translation>
<ns2:translation>
<ns2:path>ws.travelRate.dict.TWENTY_FIVE_PERCENTS</ns2:path>
<ns2:content>25%</ns2:content>
</ns2:translation>
<ns2:translation>
<ns2:path>ws.yearsExperience.dict.ONE_THREE_YEARS_EXPERIENCE</ns2:path>
<ns2:content>1-3 yrs</ns2:content>
</ns2:translation>
</ns2:dictTranslations>
</ns2:resumeFullView>
Location Service (Resume)
To query the location service you must first authenticate yourself as described in “Performing Authentication“.
Geographical Location Search
To retrieve a location to use in Resume Search, send an authorised HTTP GET request to the following URL replacing the {name} with the location you require. You will need to use the location id (location / id) as resume search parameter:
GET https://core.ws.efinancialcareers.com/v1/locations/search/name?name=London
The same request to Pilot is the following:
GET http://core.ws.pilot.efinancialcareers.com/v1/locations/search/name?name=London
Mandatory HTTP headers
Content-Type: application/xml
Authorization: EfcAuth realm=”EFC”, token=”522c3c4bd036a69db428ce4274745e9d”
Locations Searches and parameters
There are the following types of location searches:
Name
Description
Request Path
Obligatory parameters
Optional parameters
Search locations
Search location by ID
Search the nearest location
Search locations in the range
Search locations by name
Retrieve all locations in the system with/without filtering by parameter
Retrieve the location by ID
Retrieve the nearest location by latitude, longitude
Retrieve locations in specified radius
Retrieve locations by name
locations
locations/{id}
locations/search/nearest?latitude=…&longitude=…
locations/search/range?latitude=…&longitude=…&radius=…
locations/search/name?name=…
no
id (of the location)
latitude, longitude
latitude, longitude, radius
name
language, locale, category, type, parent, country, page-size, page, with-parents, show-country, order-by, sort-order
language, locale, with-parents, show-country
language, locale, category, type, parent, country, with-parents, show-country
language, locale, category, type, parent, country, page-size, page, with-parents, show-country, order-by, sort-order
language, locale, category, type, parent, country, page-size, page, with-parents, show-country, order-by, sort-order
There is a table with parameters, which can be applied to searches:
Name
Description
String format
Possible values
Examples
All requests
Language
Locale
Request and response language of locations names
Defines the language of translations in a response
language={language code}
locale={locale code}
All supported language codes in the system. Use dictionary service to get them.
All supported language codes in the system. Use dictionary service to get them.
language=EN, language=FR, language=IT
locale=EN,
locale=FR,
locale=IT
Search locations, Search the nearest location, Search locations in the range, Search locations by name
Category
Type
Parent
Country
With parents
Show country
Functionality where location data will be used, it works like a filter
Type of the location regarding to levels
Id of the parent location
Code of the country
Show parent chain for location name
Display country in parent location chain
category={category name}
type={location type}
parent={parent id}
country={country code}
with-parents={flag}
show-country={flag}
inventory, job, resume, resume-license, work-permit
global, region, country, division, city, postalcode
Available ids in the system
All supported country codes in the system. Use dictionary service to get them.
Boolean values “true” or “false”
Boolean values “true” or “false”
category=inventory, category=job
type=country, type=city
parent=993152 , parent=-4343
country=GB, country=US
with-parents=true, with-parents=false
show-country=true, show-country=false
Search locations, Search locations in the range, Search locations by name
Page size
Page number
Sort criteria
Sort direction
The amout of locations in response per page
The current page number
Name of the sort criteria
Direction of the sorting
page-size={number}
page={number}
order-by={sort criteria}
sort-order={sort direction}
1-250
Max number is limited by search results
name
ASC, DESC
page-size=30,
page-size=50
page=1, page=5
order-by=name
sort-order=ASC,
sort-order=DESC
Search the nearest location, Search locations in the range
Latitude
Longitude
Geo latitude
Geo longitude
latitude={latitude}
longitude={longitude}
-90 <= latitude <= 90
-180 <= longitude <= 180
latitude=12.23, latitude=-34.0031
longitude=112.23, longitude=-134.0031
Search locations in the range
Radius
Radius in km
radius={radius}
0-250
radius=19, radius=172
Search locations by name
Name
Location name (zip code name)
name={location name}
Text symbols and digits
name=London, name=993152
Search locations by ID
Id
Location id
locations/{id}
Available ids in the system
locations/1, locations/-10, locations/451256
There is a list of default parameters below. They will be applied to the request by default.
- locale = current locale of the user (EN by default);
- language = locale;
- page-size = 30;
- page = 1.
Examples of search requests
How to get countries of the region:
- Call the service with “type=region” to get the list of regions.
- Call the service with “type=country” and “parent={region_id}” from the previous call to get the list of countries for a certain region.
How to get locations, which are valid for work permit: call the service with “category=work-permit”.
Locations Searches Response
Upon success, the server responds with HTTP 200 OK status code and an XML representation of the location details in the response body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<locations xmlns="http://efinancialcareers.com/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://efinancialcareers.com/schema https://core.ws.efinancialcareers.com/v1/schema">
<location href="https://core.ws.efinancialcareers.com/v1/locations/2643743">
<id>2643743</id>
<name>London</name>
<names>
<name>
<name>London</name>
<short>false</short>
<preferred>false</preferred>
</name>
<name>
<name>London</name>
<language>en</language>
<short>false</short>
<preferred>true</preferred>
</name>
<name>
<name>London City</name>
<language>en</language>
<short>false</short>
<preferred>false</preferred>
</name>
<name>
<name>City of London</name>
<language>en</language>
<short>false</short>
<preferred>false</preferred>
</name>
<name>
<name>The City</name>
<language>en</language>
<short>false</short>
<preferred>false</preferred>
</name>
</names>
<latitude>51.50853</latitude>
<longitude>-0.12574</longitude>
<parents>
<location href="https://core.ws.efinancialcareers.com/v1/locations/-12">
<id>-12</id>
<name>European Union</name>
<names>
<name>
<name>EU</name>
<short>true</short>
<preferred>false</preferred>
</name>
<name>
<name>European Union</name>
<language>en</language>
<short>false</short>
<preferred>true</preferred>
</name>
</names>
<type>region</type>
</location>
<location href="https://core.ws.efinancialcareers.com/v1/locations/-10">
<id>-10</id>
<name>EMEA</name>
<names>
<name>
<name>EMEA</name>
<short>false</short>
<preferred>false</preferred>
</name>
</names>
<type>region</type>
</location>
<location href="https://core.ws.efinancialcareers.com/v1/locations/-1">
<id>-1</id>
<name>Global</name>
<names>
<name>
<name>Global</name>
<short>false</short>
<preferred>false</preferred>
</name>
</names>
<type>global</type>
</location>
<location href="https://core.ws.efinancialcareers.com/v1/locations/2635167">
<id>2635167</id>
<name>United Kingdom</name>
<names>
<name>
<name>Great Britain</name>
<short>false</short>
<preferred>false</preferred>
</name>
<name>
<name>United Kingdom of Great Britain and Northern Ireland</name>
<short>false</short>
<preferred>false</preferred>
</name>
<name>
<name>Britain</name>
<short>false</short>
<preferred>false</preferred>
</name>
<name>
<name>UK</name>
<short>true</short>
<preferred>false</preferred>
</name>
<name>
<name>GB</name>
<short>true</short>
<preferred>false</preferred>
</name>
<name>
<name>Britain</name>
<language>en</language>
<short>false</short>
<preferred>false</preferred>
</name>
<name>
<name>United Kingdom</name>
<language>en</language>
<short>false</short>
<preferred>true</preferred>
</name>
<name>
<name>UK</name>
<language>en</language>
<short>false</short>
<preferred>false</preferred>
</name>
<name>
<name>U.K.</name>
<language>en</language>
<short>false</short>
<preferred>false</preferred>
</name>
</names>
<type>country</type>
</location>
<location href="https://core.ws.efinancialcareers.com/v1/locations/2648110">
<id>2648110</id>
<name>Greater London</name>
<names>
<name>
<name>Greater London</name>
<short>false</short>
<preferred>false</preferred>
</name>
<name>
<name>Greater London</name>
<language>en</language>
<short>true</short>
<preferred>true</preferred>
</name>
</names>
<type>division</type>
</location>
<location href="https://core.ws.efinancialcareers.com/v1/locations/3333218">
<id>3333218</id>
<name>City of Westminster</name>
<names>
<name>
<name>Westminster</name>
<short>true</short>
<preferred>true</preferred>
</name>
<name>
<name>City of Westminster</name>
<language>en</language>
<short>false</short>
<preferred>false</preferred>
</name>
</names>
<type>division</type>
</location>
<location href="https://core.ws.efinancialcareers.com/v1/locations/6255148">
<id>6255148</id>
<name>Europe</name>
<names>
<name>
<name>Europe</name>
<short>false</short>
<preferred>false</preferred>
</name>
<name>
<name>Europe</name>
<language>en</language>
<short>false</short>
<preferred>false</preferred>
</name>
</names>
<type>region</type>
</location>
<location href="https://core.ws.efinancialcareers.com/v1/locations/6269131">
<id>6269131</id>
<name>England</name>
<names>
<name>
<name>Anglia</name>
<short>false</short>
<preferred>false</preferred>
</name>
<name>
<name>England</name>
<language>en</language>
<short>true</short>
<preferred>true</preferred>
</name>
</names>
<type>division</type>
</location>
</parents>
<type>city</type>
<parentChains>
<chain>
<location>
<refId>3333218</refId>
</location>
<location>
<refId>2648110</refId>
</location>
<location>
<refId>6269131</refId>
</location>
<location>
<refId>2635167</refId>
</location>
<location>
<refId>-12</refId>
</location>
<location>
<refId>6255148</refId>
</location>
<location>
<refId>-10</refId>
</location>
</chain>
</parentChains>
<dictTranslations locale="en">
<translation>
<path>ws.locationType.dict.CITY</path>
<content>City</content>
</translation>
</dictTranslations>
</location>
<labelTranslations locale="en">
<translation>
<path>ws.location.label.country</path>
<content>Country</content>
</translation>
<translation>
<path>ws.location.label.latitude</path>
<content>Latitude</content>
</translation>
<translation>
<path>ws.location.label.locationType</path>
<content>Location Type</content>
</translation>
<translation>
<path>ws.location.label.longitude</path>
<content>Longitude</content>
</translation>
<translation>
<path>ws.location.label.name</path>
<content>Name</content>
</translation>
<translation>
<path>ws.location.label.names</path>
<content>Names</content>
</translation>
<translation>
<path>ws.location.label.names.abbrev</path>
<content>Abbreviation</content>
</translation>
<translation>
<path>ws.location.label.names.language</path>
<content>Language</content>
</translation>
<translation>
<path>ws.location.label.names.name</path>
<content>Name</content>
</translation>
<translation>
<path>ws.location.label.names.short</path>
<content>Short</content>
</translation>
<translation>
<path>ws.location.label.parentLocationChains</path>
<content>Parent Location Chains</content>
</translation>
<translation>
<path>ws.location.label.parentLocations</path>
<content>Parent Locations</content>
</translation>
<translation>
<path>ws.location.label.parentLocationsMap</path>
<content>Parent Location Map</content>
</translation>
</labelTranslations>
</locations>>
Performing Search Resume Request
Performing Search Resume Request
To perform a Search Resume Request, send an authorised HTTP GET request:
GET
https://candidate-search-api.pilotaws.efinancialcareers.com/api-search?{searchparameters}
The same request to the Pilot will be the following:
GET https://core.ws.pilot.efinancialcareers.com/v1/resume-search?{search parameters} HTTP/1.1
GET https://candidate-search-api.pilotaws.efinancialcareers.com/search?keyword=Java&page=1&pageSize=10.
Mandatory HTTP headers
Authorization: Bearer access_token
Upon success, the server responds with HTTP 200 Success status code and search results in the response body:
Example:
{
"data": [
{
"profileId": "5023627",
"candidateId": "psBXEBr3I6BpVxNh",
"updatedDate": "2020-05-19T01:05:40",
"profileTitle": "Senior Project Manager / Scrum Master",
"currentCompany": "Standard Chartered Bank",
"yearsExperience": {
"key": "MORE_THAN_FIFTEEN_YEARS_EXPERIENCE",
"displayValue": "15+ yrs"
},
"desiredSalaryAmount": "15",
"desiredSalaryCurrency": "SGD",
"skills": [
"Database Design"
],
"availabilityType": {
"key": "IMMEDIATELY",
"displayValue": "Immediately"
},
"lastActiveDate": "2020-04-08T04:01:46",
"locationId": "1880252",
"currentSector": {
"key": "RETAIL_BANKING",
"displayValue": "Retail Banking"
},
"firstName": "Santosh",
"lastName": "Naik",
"snippets": [
{
"snippetName": "resumeContent",
"snippetValue": "collaboration with the <span>senior</span> leadership team and execution ... participation in UAT and <span>QA</span> activities, resulting in ... participated in UAT and <span>QA</span> activities for production"
}
],
"locationRegion": "APAC",
"locationCountry": "Singapore",
"locationCity": "Singapore",
"score": 2.6488512,
"languagePaths": [
{
"key": "EN/FLUENT",
"displayValue": "English/Fluent"
}
],
"workPermitLocationIds": [
"1269750",
"1880251"
],
"educationLevels": [
{
"key": "EDUCATION_LEVEL_8",
"displayValue": "Postgraduate Degree - Masters"
}
],
"resumeId": "vC08xMzNickiMz2",
"internalResumeId": "10522608",
"positionType": {
"key": "PERMANENT",
"displayValue": "Permanent"
},
"desiredTravels": [
{
"key": "TWENTY_FIVE_PERCENTS",
"displayValue": "25%"
}
],
"desiredSalaryPeriod": "PER_MONTH",
"workArrangementTypes": [],
"willingToRelocateLocationIds": [
"1269750",
"1733045",
"2635167",
"2921044"
],
"anonymous": false
}
],
"meta": {
"currentPage": 1,
"pageSize": 10,
"pageCount": 662,
"totalResults": 6617,
"sortBy": "updatedDate: DESC",
"facetQueryResults": [],
"selectedFilters": [],
"totalProfileCount": 0,
"failedRequests": [],
"isQualified": true,
"sessionId": "37ff2609-0fd4-48dd-b1c8-cd85d0b266e4"
}
}
Retrieving Dictionary Values (Resume)
To access any of the dictionary values you must first authenticate yourself as described in “Performing Authentication“.
Retrieving Sectors and Sub Sectors
To retrieve a list of sectors and the associating sub sectors, send an authorised HTTP GET
request to the following URL:
GET https://{API_URL}/v1/sectors?locale=en
{API_URL}:
- Pilot – core.ws.pilot.efinancialcareers.com
- Production – core.ws.efinancialcareers.com
Mandatory HTTP headers
Content-Type: application/xml
Authorization: EfcAuth realm=”EFC”, token=”522c3c4bd036a69db428ce4274745e9d”
Here is an excerpt of the response:
Please note:
- sector / sectorCode = This is the constant we require the job XML to contain.
- labelTranslations / translation / content = This is the human-readable value.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><ns2:sectors xmlns:ns2="http://efinancialcareers.com/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://efinancialcareers.com/schema https://core.ws.efinancialcareers.com/v1/schema">
<sector>
<sectorCode>ACCOUNTING_FINANCE</sectorCode>
<subSectors>
<subSector>
<subSectorCode>ACCOUNTING_FINANCE__AUDIT</subSectorCode>
</subSector>
<subSector>
<subSectorCode>ACCOUNTING_FINANCE__FD_CFO</subSectorCode>
</subSector>
<subSector>
<subSectorCode>ACCOUNTING_FINANCE__FINANCIAL_ADVISORY_SERVICES</subSectorCode>
</subSector>
</subSectors>
</sector>
..................
<labelTranslations locale="en">
<translation>
<path>ws.sector.dict.ACCOUNTING_FINANCE</path>
<content>Accounting & Finance</content>
</translation>
<translation>
<path>ws.sector.dict.ASSET_MANAGEMENT</path>
<content>Asset management</content>
</translation>
<translation>
<path>ws.sector.dict.CAPITAL_MARKETS</path>
<content>Capital markets</content>
</translation>
..................
<translation>
<path>ws.subSector.dict.ACCOUNTING_FINANCE__AUDIT</path>
<content>Audit</content>
</translation>
<translation>
<path>ws.subSector.dict.ACCOUNTING_FINANCE__FD_CFO</path>
<content>FD/CFO</content>
</translation>
<translation>
<path>ws.subSector.dict.ACCOUNTING_FINANCE__FINANCIAL_ADVISORY_SERVICES</path>
content>Financial Advisory Services</content>
</translation>
</labelTranslations>
</sectors>
Retrieving Position Types
To retrieve a list of position types, send an authorised HTTP GET request to the following URL:
GET https://{API_URL}/v1/dictionaries/positionType?locale=en
{API_URL}:
- Pilot – core.ws.pilot.efinancialcareers.com
- Production – core.ws.efinancialcareers.com
Mandatory HTTP headers
Content-Type: application/xml
Authorization: EfcAuth realm=”EFC”, token=”522c3c4bd036a69db428ce4274745e9d”
Here is an excerpt of the response:
Please note:
- positionTypes / positionType / dictionaryCode = This is the constant we require the job XML to contain.
- positionTypes / labelTranslations / translation / content = This is the human-readable value.
<?xml version="1.0" encoding="utf-16" standalone="yes"?>
<positionTypes xmlns="http://efinancialcareers.com/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://efinancialcareers.com/schema https://core.ws.efinancialcareers.com/v1/schema">
<positionType>
<id>3</id>
<dictionaryCode>CONTRACT</dictionaryCode>
</positionType>
<positionType>
<id>5</id>
<dictionaryCode>INTERNSHIPS_AND_GRADUATE_TRAINEE</dictionaryCode>
</positionType>
..................
<labelTranslations locale="en">
<translation>
<path>ws.positionType.dict.CONTRACT</path>
<content>Contract</content>
</translation>
<translation>
<path>ws.positionType.dict.INTERNSHIPS_AND_GRADUATE_TRAINEE</path>
<content>Internships & Graduate Trainee</content>
</translation>
..................
</labelTranslations>
</positionTypes>
Retrieving Employment Types
To retrieve a list of employment types, send an authorised HTTP GET request to the following URL:
GET https://{API_URL}/v1/dictionaries/employmentType?locale=en
{API_URL}:
- Pilot – core.ws.pilot.efinancialcareers.com
- Production – core.ws.efinancialcareers.com
Mandatory HTTP headers
Content-Type: application/xml
Authorization: EfcAuth realm=”EFC”, token=”522c3c4bd036a69db428ce4274745e9d”
Here is an excerpt of the response:
Please note:
- employmentTypes / employmentType / dictionaryCode = This is the constant we require the job XML to contain.
- employmentTypes / labelTranslations / translation / content = This is the human-readable value.
<?xml version="1.0" encoding="utf-16" standalone="yes"?>
<employmentTypes xmlns="http://efinancialcareers.com/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://efinancialcareers.com/schema https://core.ws.efinancialcareers.com/v1/schema">
<employmentType>
<id>1</id>
<dictionaryCode>FULL_TIME</dictionaryCode>
</employmentType>
<employmentType>
<id>2</id>
<dictionaryCode>PART_TIME</dictionaryCode>
</employmentType>
<labelTranslations locale="en">
<translation>
<path>ws.employmentType.dict.FULL_TIME</path>
<content>Full time</content>
</translation>
<translation>
<path>ws.employmentType.dict.PART_TIME</path>
<content>Part time</content>
</translation>
</labelTranslations>
</employmentTypes>
Retrieving Currencies
To retrieve a list of currencies, send an authorised HTTP GET request to the following URL:
GET https://{API_URL}/v1/dictionaries/currencyType?locale=en
{API_URL}:
- Pilot – core.ws.pilot.efinancialcareers.com
- Production – core.ws.efinancialcareers.com
Mandatory HTTP headers
Content-Type: application/xml
Authorization: EfcAuth realm=”EFC”, token=”522c3c4bd036a69db428ce4274745e9d”
Here is an excerpt of the response:
Please note:
- currencyTypes / currencyType / dictionaryCode = This is the constant we require the job XML to contain.
- currencyTypes / labelTranslations / translation / content = This is the human-readable value.
<?xml version="1.0" encoding="utf-16" standalone="yes"?>
<currencyTypes xmlns="http://efinancialcareers.com/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://efinancialcareers.com/schema https://core.ws.efinancialcareers.com/v1/schema">
<currencyType>
<id>16</id>
<dictionaryCode>AED</dictionaryCode>
</currencyType>
<currencyType>
<id>6</id>
<dictionaryCode>AUD</dictionaryCode>
</currencyType>
..................
<labelTranslations locale="en">
<translation>
<path>ws.currencyType.dict.AED</path>
<content>AED</content>
</translation>
<translation>
<path>ws.currencyType.dict.AUD</path>
<content>AUS$</content>
</translation>
..................
</labelTranslations>
</currencyTypes>
Retrieving Job Application Methods
Retrieving Other Dictionary Values
Other dictionary requests are described in the table below:
Name
Request
Description
Years of Experience
https://core.ws.efinancialcareers.com/v1/dictionaries/yearsExperience
Valid Years of Experience Values
Education Levels
https://core.ws.efinancialcareers.com/v1/dictionaries/educationLevel
Valid Education Levels
Travel Rates
https://core.ws.efinancialcareers.com/v1/dictionaries/travelRate
Valid Travel Rates
Account Types
https://core.ws.efinancialcareers.com/v1/dictionaries/accountType
Valid Account Types
Company Types
https://core.ws.efinancialcareers.com/v1/dictionaries/companyType
Valid Company Types
Language Codes
https://core.ws.efinancialcareers.com/v1/dictionaries/languageCodes
Valid 2 symbols (6 for some languages) Language Codes with descriptions
Language Fluencies
https://core.ws.efinancialcareers.com/v1/dictionaries/languageFluency
Valid Levels of Language Fluency
Location Types
https://core.ws.efinancialcareers.com/v1/dictionaries/locationType
Valid Locations Types
Titles of Persons
https://core.ws.efinancialcareers.com/v1/dictionaries/title
Valid Titles of Persons
Resume License Types
https://core.ws.efinancialcareers.com/v1/dictionaries/resumeLicenseType
Valid Resume License Types
File Formats
https://core.ws.efinancialcareers.com/v1/dictionaries/fileFormat
Valid File Formats in the System, which can be used for File Uploading
Supported Locales
https://core.ws.efinancialcareers.com/v1/dictionaries/supportedLocales
Valid Locales in the System
Understanding Search Resume Response
Understanding Search Resume Response
Getting started with the new Search Resume API requires you to pull information from several different sources.The table below describes the main list of search parameters.
Parameters are optional and can be omitted. The same way, some parameters have default values. That means if there are no values for some parameters in the search request, service will use default values.
Response Fields
Filed
Description
Example
profileId
candidate Id
6657014
candidateId
external candidate Id
8FTn614fx40fuy
updatedDate
last date of resume update
2024-04-17T08:40:35
profileTitle
profile title provided by candidate
Test Analyst
yearsExperience
years of experience provided by candidate
No exp.
skills
skills provided by candidate
"SAP", "mysql", "Sarbanes-Oxley"
lastActiveDate
last activity date
2024-04-17T08:40:27
locationId
location id provided by candidate
2639545
currentSector
business sector provided by candidate
Commodities
firstName
candidate's first name
Agata
lastName
candidate's last name
Cristy
locationRegion
Location region provided by candidate
EMEA
locationCountry
Location country provided by candidate
United Kingdom
languagePaths
Language and language level provided by candidate
"English/Basic"
WorkPermitLocationIds
work permit location provided by candidate
3017382
resumeId
Id of current resume
5hoDBgcDXdo
internalResumeId
Internal id of current resume
11130947
willingToRelocateLocationIds
Willing to relocate location id provided by candidate
2988507
anonymous
candidate anonymity
false