API Documentation
Available endpoints
POST -> https://www.datatalentjobs.co.uk/api/v1/jobs/add POST -> https://www.datatalentjobs.co.uk/api/v1/jobs/delete POST -> https://www.datatalentjobs.co.uk/api/v1/jobs/close POST -> https://www.datatalentjobs.co.uk/api/v1/jobs/repost GET -> https://www.datatalentjobs.co.uk/api/v1/jobs/statistics?job=[job-slug-from-a-previous-response] GET -> https://www.datatalentjobs.co.uk/api/v1/jobs/applications?job=[job-slug-from-a-previous-response] GET -> https://www.datatalentjobs.co.uk/api/v1/jobs/application?job=[job-slug-from-a-previous-response]
Content types
Currently Our API ONLY accepts JSON (application/json)
. The content type must be sent as a
header e.g: Content-type: application/json
this will determine the output response, if
you add an Accept
header then the first found value (split on ";") will override the
output response type. You may also optionaly add an Accept-Encoding
header, we
currently support gzip
but there are plans to add to this at a later date.
Authentication
curl -X [VERB] https://www.datatalentjobs.co.uk/api/v1/jobs \ -H 'Content-Type: application/json; charset=utf-8' \ --user '[provider_token]:[recruiter_token]' \ ...
Your user credentials including your API key/token are created by each client inside their
dashboard. They are used with HTTP basic authentication and have the form
[provider_token]:[recruiter_token]
One set of credentials can be used for multiple
users of the same CLIENT i/e recruiter, this is because the client identifier is extrapolated from the
recruiter_token
sent with each request. This means if you as a provider have multiple clients using
this system then each of them will need a separate recruiter_token
, however the
provider_token
will stay the same across requests unless you report an information
credential leak and we need to cycle your token.
Example job post data
Expand/collapse curl -X POST https://www.datatalentjobs.co.uk/api/v1/jobs/add \ -H 'Content-Type: application/json; charset=utf-8' \ --user '[provider_token]:[recruiter_token]' \ -d ' { "days_to_advertise": 7, "available_from": "2020-01-28 09:00", "contact_name": "Bob Smith", "contact_email": "the.email.address.to.send@pplicaitons-to.com", "application_url": "https://www.url.com/ad.asp?adid=12345123", "contract_type": "Contract", "job_title": "Test Engineer", "job_type": "Full time", "job_reference": "abc123", "job_hours": "9-5 Monday to Friday", "job_duration": "6 Months", "job_skills": "VB, C++, PERL, Java", "job_description": "This is the detailed description", "job_sector": "marketing", "job_discipline": "digital", "job_latitude": 1.5, "job_longitude": 53.2, "job_location": "London", "job_telecommute": 0, "job_postcode": "ABC1234", "job_keywords": "Comma,Separated,List,Of,Synonyms,Or,Alternate,Titles,For,This,Job", "salary_precise": "30000", "salary_unit": "Per year", "salary_currency": "GBP", "salary_benefits": "Bonus and Pension", "salary_visible": "£25000 - £30000 Pear year", "test_post": 1 } '
Please note the "test_post": 1
field. This allows you to send jobs to our platform without using up a credit and without it ending up in the search index. A job with "test_post": 1
will still have a URL which is returned to you so that you may view the job and delete the job on the system.
Example job delete data
curl -X POST https://www.datatalentjobs.co.uk/api/v1/jobs/delete \ -H 'Content-Type: application/json; charset=utf-8' \ --user '[provider_token]:[recruiter_token]' \ -d ' { "job": "full-time-test-engineer-london-acme-123" } '
Example job close data
curl -X POST https://www.datatalentjobs.co.uk/api/v1/jobs/close \ -H 'Content-Type: application/json; charset=utf-8' \ --user '[provider_token]:[recruiter_token]' \ -d ' { "job": "full-time-test-engineer-london-acme-123" } '
Example job respost data
curl -X POST https://www.datatalentjobs.co.uk/api/v1/jobs/repost \ -H 'Content-Type: application/json; charset=utf-8' \ --user '[provider_token]:[recruiter_token]' \ -d ' { "job": "full-time-test-engineer-london-acme-123" } '
Please note that slugs are unique across our job board!
Rigid data
Please note that the rigid data is subject to change as we add or remove industries etc. We have a json endpoint that has up to date values for these fields which we recommend you automatically check via your software from time to time.
Certain fields have rigid requirements in our system. These are outlined below. Any other field is classed as free text.
https://www.datatalentjobs.co.uk/api/v1/jobs/fields
job_sector (one of)
[ "data-analysis-jobs", "big-data-jobs", "data-science-jobs", "other-support-jobs" ]
job_discipline (one of) | Format: "parent_sector" : ["array of disciplines"]Please note that job_discipline must be a child value of the parent job_sector. If you attempt to send a job_discipline that is from a different sector or does not exist your job post will fail!
{ "data-analysis-jobs": [ "data-analyst", "business-intelligence-analyst", "financial-analyst", "marketing-analyst" ], "big-data-jobs": [ "database-administrator", "data-architect", "data-engineer" ], "data-science-jobs": [ "data-scientist", "machine-learning-engineer", "statistician" ], "other-support-jobs": [ "administrators", "support", "other", "data-entry" ] }
job_type (one of)
[ "Part time", "Full time" ]
contract_type (one of)
[ "Permanent", "Contract", "Temporary", "Maternity cover" ]
salary_unit (one of)
[ "Per year", "Per month", "Per week", "Per day", "Per hour" ]
salary_currency "GBP"
job_telecommute (one of)
[ 0, 1 ]
Exceptions
If available_from
is set the date format is YYYY-MM-DD H:i
(ex 2020-01-28 09:00). If days_to_advertise
is set the number must not exceed 30 - exceeding this will generate an error.
job_longitude
and job_latitude
which are double's and MUST point to a specific point on the geo plane. job_postcode
is free text and (as with latitude/longitude) is NEVER shown to the candidate. job_location
is the visible location shown to the candidate in job results and filters and can be any text string.
If application_url
is set the scheme must be secure (https).
Required fields
job_title job_reference job_sector job_discipline job_telecommute job_location job_latitude (not required if using value from pre-defined job_location list) job_longitude (not required if using value from pre-defined job_location list) job_postcode (not required if using value from pre-defined job_location list) job_description job_type contract_type contact_name contact_email salary_visible salary_precise salary_unit salary_currency
All fields listed above are required
JSON Responses
successful post
{ "status": 200, "message": "https://www.datatalentjobs.co.uk/job/full-time-test-engineer-london-acme-1234" }
errored post
{ "status": 412, "message": "Salary unit invalid" }
successful close
{ "status": 200, "message": "Job has been closed" }
successful deletion
{ "status": 200, "message": "Job has been deleted" }
Returning applications
Expand/collapse curl -X GET https://www.datatalentjobs.co.uk/api/v1/jobs/applications?job=slug-from-a-previous-response \ -H 'Content-Type: application/json; charset=utf-8' \ --user '[provider_token]:[recruiter_token]' { "status": 200, "message": "https://www.datatalentjobs.co.uk/job/full-time-test-engineer-london-acme-1234", "applications": [ { "application_date": "2022-03-18 15:08:53", "applicant": { "name": "Finley Bennett", "email": "finley.bennett@example.org", "telephone": "02056 042398", "mobile": "07225 177893", "cover_letter": "Quia accusamus provident neque non deserunt ipsam. Non eaque molestiae minus rem rerum nostrum. Ducimus velit eum quo ut et porro unde nostrum.", "resume": { "filename": "finely-bennett-resume.pdf", "filepath": "https://www.datatalentjobs.co.uk/api/v1/jobs/application?id=42543", "filesize": "205126" } } }, { "application_date": "2021-03-18 14:02:11", "applicant": { "name": "James Riley", "email": "james.riley@example.org", "telephone": "01234 567890", "mobile": "07225 1736893", "cover_letter": "Quia accusamus provident neque non deserunt ipsam. Non eaque molestiae minus rem rerum nostrum. Ducimus velit eum quo ut et porro unde nostrum.", "resume": { "filename": "james-riley-resume.pdf", "filepath": "https://www.datatalentjobs.co.uk/api/v1/jobs/application?id=42544", "filesize": "402351" } } } ] }
Inside the applications and if one exists a path to the attached resume will be presented. To download the resume you will need to send an authenticated request using your provider_token
and recruiter_token
(as with all other examples) to the url located in the resume.filepath
value (example below)
curl -X GET https://www.datatalentjobs.co.uk/api/v1/jobs/application?id=12345 \ -H 'Content-Type: application/json; charset=utf-8' \ --user '[provider_token]:[recruiter_token]'
GET application resume
{ "status": 200, "message": "https://www.datatalentjobs.co.uk/api/v1/jobs/application?id=42543", "resume": { "data": "base64 encoded data string of the file contents", "name": "finely-bennett-resume.pdf", "size": "205126" } }
Returning statistics
curl -X GET https://www.datatalentjobs.co.uk/api/v1/jobs/statistics?job=slug-from-a-previous-response \ -H 'Content-Type: application/json; charset=utf-8' \ --user '[provider_token]:[recruiter_token]'
GET job statistics
{ "status": 200, "message": "https://www.datatalentjobs.co.uk/job/full-time-test-engineer-london-acme-1234", "statistics": { "views": 356, "applications": 12 } }