1 JobAdder Developer Account
Integration partners are first required to register for a JobAdder Developer Account:
Accessibility will be determined based on the information provided when registering for a developer account. It is important that correct and factual information is provided for the solution in order to be approved for accessibility.
2 Things to Consider
The following describe important items which should be noted and highlighted into your design and requirements decision.
|
Items |
Description |
|
Webhook Monitoring |
Make sure you to monitor your webhooks. A webhook gets "Suspended" if requests to the webhook URL fails 10 times in an hour. If a webhook gets "Suspended", it will not make any requests to the webhook URL until it has been re-enabled. All failed events are lost if the webhook goes suspended. Any other events which happen while webhook is suspended is lost as well. A suspended webhook will remain suspended until the status has been updated by making an update webhook API request. |
|
|
Any response status code other 2XX (e.g. 200-299) is considered as a failed request. |
|
|
Retries to the failed webhook URL request happens every 5minutes. |
|
|
The timeout for each webhook URL request is 100 seconds. |
|
|
The request header in the post request to your webhook URL will contain the x-jobadder-webhookid which has the webhook ID of the webhook. |
|
|
Webhook events are only triggered on the JobAdder accounts where the webhooks are created via the API. |
3 Available Webhooks
|
Webhook Event* |
Required Scope** |
|
job_status_changed |
read or read_job |
| job_invoice_sent |
read or read_job |
|
job_partner_action |
read or read_job, partner_ui_action |
|
jobad_posted |
read or read_jobad |
|
jobad_expired |
read or read_jobad |
|
jobad_partner_action |
read or read_jobad, partner_ui_action |
|
candidate_status_changed |
read or read_candidate |
| candidate_updated |
read or read_candidate |
|
candidate_partner_action |
read or read_candidate, partner_ui_action |
|
jobapplication_status_changed |
read or read_jobapplication |
|
jobapplication_partner_action |
read or read_jobapplication, partner_ui_action |
|
placement_approved |
read or read_placement |
|
placement_status_changed |
read or read_placement |
|
placement_partner_action |
read or read_placement, partner_ui_action |
|
company_status_changed |
read or read_company |
|
company_partner_action |
read or read_company, partner_ui_action |
|
contact_status_changed |
read or read_contact |
|
contact_partner_action |
read or read_contact, partner_ui_action |
|
interview_scheduled |
read or read_interview |
|
interview_evaluation_submitted |
read or read_interview |
|
folder_job_added |
read or read_job, read or read_folder |
|
folder_job_removed |
read or read_job, read or read_folder |
|
folder_candidate_added |
read or read_candidate, read or read_folder |
|
folder_candidate_removed |
read or read_candidate, read or read_folder |
|
folder_jobapplication_added |
read or read_jobapplication, read or read_folder |
|
folder_jobapplication_removed |
read or read_jobapplication, read or read_folder |
|
folder_placement_added |
read or read_placement, read or read_folder |
|
folder_placement_removed |
read or read_placement, read or read_folder |
|
folder_company_added |
read or read_company, read or read_folder |
|
folder_company_removed |
read or read_company, read or read_folder |
|
folder_contact_added |
read or read_contact, read or read_folder |
|
folder_contact_removed |
read or read_contact, read or read_folder |
*All events trigger for creation events also (except for partner_action events)
**All webhooks require offline_access scope
Example cURL request to create a webhook:
curl -X POST \
https://api.jobadder.com/v2/webhooks \
-H 'Authorization: Bearer {INSERT_TOKEN}' \
-H 'Content-Type: application/json' \
-d '{
"name": "Test Webhooks",
"status": "Enabled",
"url": "https://webhook.site/example",
"events": [
"candidate_status_changed"
]
}'
Example response:
{
"status": "Enabled",
"name": "Test Webhooks",
"links": {
"self": "{API_LINK}"
},
"url": "https://webhook.site/example",
"id": "{WEBHOOK_ID}",
"updatedAt": "2019-05-02T01:42:24Z",
"events": [
"candidate_status_changed"
],
"enabledAt": "2019-05-02T01:42:24Z",
"createdAt": "2019-05-02T01:42:24Z"
}
Example Event Response:
{
"apiVersion": 2,
"eventId": "{EVENT_ID}",
"eventDate": "{EVENT_DATE}",
"event": "candidate_status_changed",
"eventUser": {
"userId": USER_ID,
"firstName": "{FIRST_NAME}",
"lastName": "{LAST_NAME}",
"email": "{EMAIL}",
"mobile": "{EMAIL}",
[...]
},
"createdAt": "{CREATED_AT}",
"updatedAt": "{UPDATED_AT}"
},
"statusChange": {
"oldStatus": {
"statusId": STATUS_ID,
"name": "Active - Interviewing",
"active": true
},
"newStatus": {
"statusId": STATUS_ID,
"name": "Active",
"active": true,
"default": true
}
},
"candidate": {
[...]
"custom": [...],
[...]
}
}
}
}
Example cURL request to Delete a Webhook
curl -X DELETE \
https://api.jobadder.com/v2/webhooks/{WEBHOOK_ID} \
-H 'Authorization: Bearer {INSERT_TOKEN}' \