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

Resume API Documentation

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.

  1. 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.
  2. 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

  1. Once a job is active, the job title, job reference number and location cannot be altered.
  2. 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:

  1. sector / sectorCode = This is the constant we require the job XML to contain.
  2. 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:

  1. positionTypes / positionType / dictionaryCode = This is the constant we require the job XML to contain.
  2. 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:

  1. employmentTypes / employmentType / dictionaryCode = This is the constant we require the job XML to contain.
  2. 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:

  1. salaryBands / salaryBand / dictionaryCode = This is the constant we require the job XML to contain.
  2. 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:

  1. currencyTypes / currencyType / dictionaryCode = This is the constant we require the job XML to contain.
  2. 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:

  1. jobApplicationMethodTypes / jobApplicationMethodType / dictionaryCode = This is the constant we require the job XML to contain.
  2. 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:

  1. Call the service with “type=region” to get the list of regions.
  2. 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

  1. Once a job is active, the job title, job reference number and location cannot be altered.
  2. 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

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:

  1. Resume License with Monthly Access
  2. 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

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)

First Step - Performing Authentication (Resume)

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 &amp; 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:

  1. Call the service with “type=region” to get the list of regions.
  2. 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

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:

  1. sector / sectorCode = This is the constant we require the job XML to contain.
  2. 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:

  1. positionTypes / positionType / dictionaryCode = This is the constant we require the job XML to contain.
  2. 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:

  1. employmentTypes / employmentType / dictionaryCode = This is the constant we require the job XML to contain.
  2. 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:

  1. currencyTypes / currencyType / dictionaryCode = This is the constant we require the job XML to contain.
  2. 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