Receiving a Candidate
This will be a route on the receiving application or integration and not the candidate hub. This route will
accept standard candidate data and return a standard response to be consumed by the hub.
If parsing is enabled, two additional candidate documents will be included. The raw parsed XML as a
"tagged_cv" and a JSON document of type "parsed_cv" (both Base64 encoded).
POST https://url_of_your_candidate_importer.com/importer_route
Content Type: application/json
{
"authentication": {
"api_key": "123456789",
"signature": "18089b5d73354533e380d05fdd677f2dbfb4a41412f057a0d05010ffd7e659ea",
"time": "1713519108000"
},
"candidate": {
"documents": [
{
"content": "JVBERi0yLjAKJbq63toKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUi9MYW5nKGVu
KS9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4vU3RydWN0VHJlZVJvb3QgMyAwIFIvTWV0YWRhdGEgNCAwIFIvUGFnZUxhYmV
scyA1IDAgUi9WaWV3ZXJQcmVmZXJlbmNlczw8L0Rpc3BsYXlEb2NUaXRsZSB0cnVlPj4+PgplbmRvYmoKMiAwIG9iajw8L1R5
cGUvUGFnZXMvQ291bnQgMS9LaWRzWzYgMCBSXT4+CmVuZG9iagozIDAgb2JqPDwvVHlwZS9TdHJ1Y3RUcmVlUm9vdC9LWzc
gMCBSXS9QYXJlbnRUcmVlPDwvS2lkc1s4IDAgUl0+Pj4+CmVuZG9iago0IDAgb2JqPDwvVHlwZS9NZXRhZGF0YS9TdWJ0eXB
lL1hNTC9MZW5ndGggOSAwIFI+PnN0cmVhbQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN
6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iAgbg0KMDAwMDA0NTMxMyAwMDAwMCBuDQowMDAwM
DQ1MzYwIDAwMDAwIG4NCjAwMDAwNDU0MDcgMDAwMDAgbg0KMDAwMDA0NTQ1NCAwMDAwMCBuDQowMDAwMDQ1NDkwIDAwMDAwI
G4NCjAwMDAwNDU1MTEgMDAwMDAgbg0KMDAwMDA0ODAwNiAwMDAwMCBuDQowMDAwMDQ4MDI4IDAwMDAwIG4NCnRyYWlsZXIKP
DwvUm9vdCAxIDAgUi9JbmZvIDEyNiAwIFIvSURbPDI3RUJENDI5ODA4REJFMTFDQjJENjI3NjE2QUY5RjkwPjwyN0VCRDQy
OTgwOERCRTExQ0IyRDYyNzYxNkFGOUY5MD5dL1NpemUgMTI3Pj4Kc3RhcnR4cmVmCjQ4MTg0CiUlRU9G",
"filename": "1713519105-14432-qaPermissionsContact0012seven20io_parsedcandidate__0003.pdf",
"type": "cv"
},
{
"content": "LXR4dC0KCkRlYXIgUmVjcnVpdGVyLA0KDQpFbRmlyc3RuYW1lOiBQZXJtaXNzaW9uc0NvbnRhY3QNClN
1cm5hbWU6IDAwMTINCkNvbnRhY3QgRW1haWw6IHFhK1Blcm1pc3Npb25zQ29udGFjdC4wMDEyQHNldmVuMjAuaW8NCg==",
"filename": "email_body",
"type": "email_body"
}
],
"email": "qa+PermissionsContact.0012@gmail.io",
"name": "Permissions Contact"
},
"context": {
"application_time": "2024-04-19T09:31:45Z",
"candidate_source_id": "broadbean_demo_board",
"candidate_source_name": "Broadbean Demo Board",
"supplementary": {
"board_id": "12660",
"board_name": "broadbean_demo_board",
"board_nice_name": "Broadbean Demo Board",
"candidate_status": "received",
"custom_field_ATS_id": "a022600000KWW5uAAH",
"id": 627421,
"is_requisition_ad": 0,
"jobref": "0037",
"jobtitle": "User1Job 0011",
"locale": "en",
"rank": "UNRANKED",
"rank_time": 0,
"screened": 0,
"status_timestamp": "2024-04-19T09:31:45Z",
"username": "testuser@testteam.testoffice.testclient"
},
"transformer": {
"advert": {
"id": 627421,
"is_requisition_ad": 0,
"jobref": "0037",
"jobtitle": "User1Job 0011",
"screened": 0
},
"application_time": "2024-04-19T09:31:45Z",
"candidate_source_id": "broadbean_demo_board",
"candidate_source_name": "Broadbean Demo Board",
"candidate_status": "received",
"consultant": {
"locale": "en",
"username": "testuser@testteam.testoffice.testclient"
},
"custom_fields": [
{
"name": "ATS_id",
"value": "a022600000KWW5uAAH"
}
],
"response": {
"id": 80957,
"rank": "UNRANKED",
"rank_time": 0
},
"response_details": {},
"source": {
"board_id": "12660",
"board_name": "broadbean_demo_board",
"board_nice_name": "Broadbean Demo Board"
},
"status_timestamp": "2024-04-19T09:31:45Z"
}
},
"meta_info": {
"hub_candidate_id": "A4FC7782-FXXX-1XXX-9BB8-CDXXXXXXXA",
"hub_client_id": "testclient",
"hub_delivery_id": "A5353CE8-FXXX-1XXX-9BB8-CDXXXXXXA",
"hub_schema_version": 1,
"hub_source_id": "testsource",
"hub_transaction_id": "A4F3F576-FXXX-XXXX-9327-797XXXXX2",
"import_process_report_url": "https://candidatehub.adcourier.com/candidate/report/A5F3A-FXXX-1XXX-9BB8-CXXDA"
}
}
{
"authentication": {
"api_key": "123456789",
"signature": "80be007bf2aebde3c4ed0ea78b8dd90c8b2e32a291aeb7233b971cfb1fda0242",
"time": "1714480491000"
},
"candidate": {
"application_email": "nttin.tn20.cvn222@gmail.com",
"application_name": "Tran Nguyen Minh Vu",
"contact_telephone": null,
"current_job_employer": "OrangeLogic Vietnam",
"current_job_enddate": "2024-04-19T00:00:00",
"current_job_startdate": "2022-11-01T00:00:00",
"current_job_title": "Senior NET Developer",
"documents": [
{
"content": "JVBERi0xLjQNCiWhs8XXDQoyIDAgb2JqDQo8PC9TdHJ1Y3RQYXJlbnRzIDAvUmVzb3VyY2VzPDwvWE
9iamVjdDw8L1gxMiAxMiAwIFIgPj4vRXh0R1N0YXRlPDwvRzMgMyAwIFIgL0c0IDQgMCBSID4+L1Byb2NTZXRbL1BE
Ri9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXS9Gb250PDwvRjYgNiAwIFIgL0Y3IDcgMCBSIC9GOCA4IDAgUiAvRj
kgOSAwIFIgL0YxMCAxMCAwIFIgL0YxMSAxMSAwIFIgL0Y1IDUgMCBSID4+Pj4vTWVkaWFCb3hbIDAgMCA4NDIgMTE5
MF0vUGFyZW50IDE3IDAgUiAvQ29udGVudHMgMTQgMCBSIC9UeXBlL1BhZ2U+Pg0KZW5kb2JqDQoxMiAwIG9iag0KPD
wvQ29sb3JTcGFjZS9EZXZpY2VSR0IvV2lkdGggMzYvQml0c1BlckNvbXBvbmVudCA4L0xlbmd0aCAxNTAxL0hlaWdo
dCAzNi9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1N1YnR5cGUvSW1hZ2UvU01hc2sgMTMgMCBSID4+c3
RyZWFtDQp4nKVXS28TVxid/4BYtGBKWxJDQiDB+DEz97pZt6Lqhm13hapSFy2q1EUXRkJ9ACEk+DVzZ2wI6qKWuu2m
i5QK0URYFHvmzjixiXmkqIF20f4B93yTByQeJ3EZjSJnMr7ne5zvfCeK0s+V6ey9uPLGZHs45+A+NN3s69u7uSLvfX
z4zGVmOCPZNuCGcFIgL0luZm8gMSAwIFIgL0lEWzw5NTZDM0U2MEI2N0ExNEIxQ0VBNkQ3QkEzQjJENEY0Nj48OTU2
QzNFNjBCNjdBMTRCMUNFQTZEN0JBM0IyRDRGNDY+XT4+c3RyZWFtDQp4nKWSPyhFYRjG3+87QiTJdjcx0TGwWfy3qL
tYZLmTTSwMiEVxi4HEIMkgkaJuUcp0B0aDSbdM0h38S7gZdHzne3/qmJ3l1/M873ne0/cdK/ETRdY6ZIyxkWNOxBrH
tBjr83/Q9Zk7KcW6fNn1OgYtytST0pR0XyErVfF87418ev9bc+nW/OJFqpO9s2vyHmu7pPlCUWqS+eWYvPl8ip6Msn
KcvSn8OXQrXNS+sEJqk32FUF59HmretC91yfwjK89+Xxu9W0p7C0/xp9kzgZ9Dr3oaO8A5tZM/KMuu8TuZP4K79O4w
n0Zz3ubkbx5cwWP8deY24Rk9fbAB5uE5nGee7wmK+P30bpAfoifJ7/G7eK8Dvwe/ET0MB/HpNb/neIDeRs8wv4e/4u
8pyo9IfeKezNCXPPq8mf9hVOQHIqNFCA0KZW5kc3RyZWFtDQplbmRvYmoNCg0Kc3RhcnR4cmVmDQo4OTMxOQ0KJSVF
T0YNCg==",
"filename": "1713627687-6042-nttintn20cvn222gmailcom_TranNguyenMinhVu_DotNetDeveloper.docx.pdf",
"type": "cv"
},
{
"content": "LXR4dC0KCkRlYXIgUmVjcnVpdGVyLA0KDQpFbmNsb3NlZCBhcmUgdGhlIGRldGFpbHMgb2YgYSBjY
W5kaWRhdGUgd2hvIHdpc2hlcyB0byBhcHBseSBmb3IgdGhlIGpvYiB0aXRsZWQ6IERyYWZ0IGpvYiBhZCAocmVmOi
BwcmV2aWV3LTM4NjYtMTAwNTE4NCkuDQoNCkZpcnN0bmFtZTogVO+/vW4NClN1cm5hbWU6IFRydW5nDQpDb250YWN
0IEVtYWlsOiBudHRpbi50bjIwLmN2bjIyMkBnbWFpbC5jb20NCkhvbWUvRXZlbmluZyBUZWw6ICs4NDM5MzM1NDg3
NQ0KV29yay9EYXl0aW1lIFRlbDogKzg0MzkzMzU0ODMyDQpNb2JpbGUgVGVsOiAwMzkzMzEyNTA5DQo=",
"filename": "email_body",
"type": "email_body"
},
{
"content": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPFJlc3VtZSB4bWxucz0iaHR0\
ncDovL25zLmhyLXhtbC5vcmcvMjAwNy0wNC0xNSI+CiAgPFN0cnVjdHVyZWRYTUxSZXN1bWU+CiAg\nICA8Q29udG
FjdEluZm8+CiAgICAgIDxQZXJzb25OYW1lPgogICAgICAgIDxGb3JtYXR0ZWROYW1l\nPlRSQU4gTkdVWUVOIE1JT
kggVlU8L0Zvcm1hdHRlZE5hbWU+CiAgICAgICAgPEdpdmVuTmFtZT5U\nUkFOPC9HaXZlbk5hbWU+CiAgICAgICAg
PE1pZGRsZU5hbWU+IE5HVVlFTiBNSU5IPC9NaWRhbHVlLz4KICAgICAgICA8\nU3VwcG9ydGluZ0luZm9ybWF0aW9u
PlNlY3Rpb24gb2YgQ1YgZm91bmQgaW46IGV4cGVyaWVuY2U8\nL1N1cHBvcnRpbmdJbmZvcm1hdGlvbj4KICAgICAg
PC9Db21wZXRlbmN5V2VpZ2h0PgogICAgPC9D\nb21wZXRlbmN5PgogICAgPENvbXBldGVuY3kgbmFtZT0idXNlciBp
bnRlcmZhY2UgZGVzaWduIj4K\nICAgICAgPENvbXBldGVuY3lXZWlnaHQ+CiAgICAgICAgPFN0cmluZ1ZhbHVlLz4K
ICAgICAgICA8\nU3VwcG9ydGluZ0luZm9ybWF0aW9uPlNlY3Rpb24gb2YgQ1YgZm91bmQgaW46IGV4cGVyaWVuY2U8
\nL1N1cHBvcnRpbmdJbmZvcm1hdGlvbj4KICAgICAgPC9Db21wZXRlbmN5V2VpZ2h0PgogICAgPC9D\nb21wZXRlbm
N5PgogICAgPENvbXBldGVuY3kgbmFtZT0id2ViIHNpdGUgcHJvZHVjdGlvbiI+CiAg\nICAgIDxDb21wZXRlbmN5V2
VpZ2h0PgogICAgICAgIDxTdHJpbmdWYWx1ZT4zIC0gNCB5cnM8L1N0\ncmluZ1ZhbHVlPgogICAgICAgIDxTdXBwb3
J0aW5nSW5mb3JtYXRpb24+WWVhciBsYXN0IHVzZWQ6\nIDIwMjI8L1N1cHBvcnRpbmdJbmZvcm1hdGlvbj4KICAgIC
AgICA8U3VwcG9ydGluZ0luZm9ybWF0\naW9uPlNlY3Rpb24gb2YgQ1YgZm91bmQgaW46IGV4cGVyaWVuY2UgLSAyLD
M8L1N1cHBvcnRpbmdJ\nbmZvcm1hdGlvbj4KICAgICAgPC9Db21wZXRlbmN5V2VpZ2h0PgogICAgPC9Db21wZXRlbm
N5Pgog\nIDwvVXNlckFyZWE+CjwvUmVzdW1lPgo=\n",
"description": "Tagger: BurningGlass, Conversion: hr_xml",
"filename": "1713627687-6042-nttintn20cvn222gmailcom_TranNguyenMinhVu_DotNetDeveloper.docx.xml",
"type": "parsed_cv"
}
],
"education": [],
"email": "nttin.tn20.cvn222@gmail.com",
"employment": [
{
"employer": "OrangeLogic Vietnam",
"end_date": "2023-06-01T00:00:00",
"start_date": "2022-07-01T00:00:00",
"summary": "An media management product that provides lots of tools to upload/download media
(image, video, file,...),\nmanage permissions to access, sharing permissions and the payments
.\n⪠Responsibility:\nâ Receive, analyze and solve by myself the tasks from the US team or
client directly, do self-testing as well.\nâ Improve performance.\nâ Unit tests.\nâª
Technology: ASP.NET, MSSQL Server, HTML, CSS, JavaScript, JQuery.",
"title": "Senior .NET Software Engineer"
},
{
"employer": "ASWhite VietNam",
"end_date": "2022-07-01T00:00:00",
"start_date": "2019-10-01T00:00:00",
"summary": "o EML\n⪠Domain: An insurance website that allows users to create and manage
claims of claimants. It also calculates the amount\nthat company must pay each week for
claimants.\n⪠Responsibility:\nâ Participate in research and propose solutions for
incoming challenges.\nâ Provide a plan, tasks and estimation for old features that
need to be refactored.\nâ Responsible for production issues.\nâ Contribute to improve
features of EML's platform.\nâ Review code for other dev and collaborate with them to
keep code clean, follow structure of project.\nâ Working through database, back-end,
front-end to complete user stories.\nâ SCRUM experienced.\n⪠Technology: ASP.NET,
ASP.NET Core, .NET Web API, MSSQL Server, HTML, CSS, JavaScript, JQuery, RabbitMQ, Microservices.",
"title": "Senior Fullstack .NET Software Engineer"
},
{
"employer": "Flexidata VietNam",
"end_date": "2019-06-01T00:00:00",
"start_date": "2018-09-01T00:00:00",
"summary": "Health\n⪠Domain: A CRM website which provides the solution to Bayer's
administrators to create their campaigns for their\ncompany's customers. The customers
can participate to earn points and exchange gifts.\n⪠Responsibility:\nâ Analyze
requirements and provide estimation to help BA prepare execution plans for clients.\nâ
Propose solution and implement to adapt business requirements such as events, background
jobs, SSO.\nâ Self-managed task.\n⪠Technology: Angular2, ASP.NET Core, .NET Web API,
IdentityServer4, ASP.NET boilerplate, MSSQL Server.\no Connector projects: ZaloConnector,
VivasConnector, GotitConnector\n⪠Domain: These projects are responsible for interacting
with 3rd parties, recording transactions and supplying the APIs for\ninternal applications.
\n⪠Responsibility:\nâ Collaborate directly with IT teams of 3rd parties to implement
features.\nâ Define output structure of APIs for internal members.\n⪠Technology:
Angular2, ASP.NET Core, .NET Web API, ASP.NET boilerplate, MSSQL Server.",
"title": "Fullstack .NET Software Engineer"
},
{
"employer": "NashTech VietNam",
"end_date": "2018-05-01T00:00:00",
"start_date": "2015-08-01T00:00:00",
"summary": null,
"title": "Fullstack .NET Software Engineer"
}
],
"first_name": "Tran Nguyen Minh",
"last_name": "Vu",
"location_address": null,
"location_city": null,
"location_country": null,
"location_country_code": null,
"location_county": null,
"location_postcode": null,
"mobile_telephone": "+84 356 037 181",
"name": "Tran Nguyen Minh Vu"
},
"context": {
"application_time": "2024-04-30T12:34:48Z",
"candidate_source_id": "jobscabi",
"candidate_source_name": "Jobs Cabinet (Test Board)",
"supplementary": {
"board_id": "2336",
"board_name": "jobscabi",
"board_nice_name": "Jobs Cabinet (Test Board)",
"candidate_status": "ranked",
"custom_field_ATSInternalID": "9820240327191635",
"id": 80065,
"is_requisition_ad": 0,
"jobref": "0000000025",
"jobtitle": "Directeur des Ressources Humaines",
"locale": "en_usa",
"rank": "SUITABLE",
"rank_time": 0,
"screened": 0,
"status_timestamp": "2024-04-30T12:34:48Z",
"username": "testuser@testteam.testoffice.testclient"
},
"transformer": {
"advert": {
"id": 592580,
"is_requisition_ad": 0,
"jobref": "0000000025",
"jobtitle": "Directeur des Ressources Humaines",
"screened": 0
},
"application_time": "2024-04-30T12:34:48Z",
"candidate_source_id": "jobscabi",
"candidate_source_name": "Jobs Cabinet (Test Board)",
"candidate_status": "ranked",
"consultant": {
"locale": "en_usa",
"username": "testuser@testteam.testoffice.testclient"
},
"custom_fields": [
{
"name": "ATSInternalID",
"value": "9820240327191635"
}
],
"response": {
"id": 80065,
"rank": "SUITABLE",
"rank_time": 1713629397
},
"response_details": {},
"source": {
"board_id": "2336",
"board_name": "jobscabi",
"board_nice_name": "Jobs Cabinet (Test Board)"
},
"status_timestamp": "2024-04-30T12:34:48Z"
}
},
"meta_info": {
"hub_candidate_id": "09361F02-0XXX-11EF-AE34-E6XXXXXXA",
"hub_client_id": "testclient",
"hub_delivery_id": "09705578-06EE-1XXX-AE34-E6XXXXX0DA",
"hub_schema_version": 1,
"hub_source_id": "testsource",
"hub_transaction_id": "092EC4BE-0XXX-11XF-8BF7-37AXXXXXE4",
"import_process_report_url": "https://candidatehub.adcourier.com/candidate/report/09XX-0XXX-11EF-AE34-E6XXA"
}
}
{
"success": 1,
"message": "Candidate Received for processing"
}
Request Fields
Payload Fields
| Field | Description | Mandatory |
|---|---|---|
| meta_info | Meta Info used to identify the specific request/payload | Y |
| candidate | See Candidate Entity for a detailed description on how to populate this node | Y |
| context | See Candidate Context for detailed description on what this node includes | N |
| authentication | Authentication details used to verify the request/payload came from CandidateHub | N |
Meta Info
| Field | Description | Mandatory |
|---|---|---|
| hub_transaction_id | Unique ID for a Transaction in CandidateHub | Y |
| hub_candidate_id | Unique ID for a Candidate application | Y |
| hub_client_id | ID for the client as setup in CandidateHub | Y |
| hub_source_id | ID for the source as setup in CandidateHub. For source tracking you may want to use details from Candidate Context instead | Y |
| import_process_report_url | Used to send a Candidate Processing Report callback after the candidate import has been processed on the receiving system | Y |
Authentication
| Field | Description | Mandatory |
|---|---|---|
| api_key | The API Key used to generate the signature. This is provided by Veritone Hire at the time of setup | Y |
| time | The time at which the signature was generated | Y |
| signature | The unique request signature which you should verify to ensure the request came from CandidateHub. See Verifying the authentication/signature for details on how verify this. | Y |
Verifying the authentication/signature
To verify the signature you will need to generate it again and make sure it matches the one in the payload
1. Obtain secret from Veritone Hire. eg: 1secret1
2. Obtain api_key from payload eg: apiKey1
3. Obtain time ( time signature was generated ) from the payload, this is an epoch timestamp in ms. eg:
1594796637012 ( Wednesday, 15 July 2020 07:03:57.012 GMT )
4. Concatenate api_key and time separated by a pipe. eg: apiKey1|1594796637012
5. HMAC-SHA256 encode the concatenated string with the secret from Veritone Hire.
Example using Bash and OpenSSL:
# Usage: echo -n {api_key}|{time} | openssl dgst -sha256 -hmac {secret}
echo -n 'apiKey1|1594796637012' | openssl dgst -sha256 -hmac 1secret1
# Output:
(stdin)= 90f794a2d7cc174dcae31a901123bbde38ec43f82d86b8ef58e86e9ed6693e66
6. The secret key in this example would be 90f794a2d7cc174dcae31a901123bbde38ec43f82d86b8ef58e86e9ed6693e66 and should match the the /authentication/signature value in the payload
Return to top