{"_id":"569e609bebbadc0d0079bed3","isReference":false,"parentDoc":null,"hidden":false,"link_external":false,"link_url":"","slug":"getting-started","type":"basic","api":{"params":[],"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"code":"{}","name":"","status":400,"language":"json"}]},"settings":"","url":"","auth":"required"},"createdAt":"2016-01-19T16:13:15.595Z","project":"569e6099ebbadc0d0079becd","title":"Getting Started with RolePoint Connect","updates":[],"user":"569e6058ffccd10d00a05b49","body":"## Connect Overview\n\nIntegrate once and connect directly to the leading Applicant Tracking Systems (ATSs). \n\nGet [jobs straight from the ATS](doc:job-webhooks) and [create your own application process](doc:get-jobs-and-insert-applications). [Search for candidates](doc:find-candidates) and build your own CRM or simply [get your candidates into the ATS with the correct source](doc:send-candidate).\n\nThe root URL for the API is https://api.rolepoint-connect.com/v1\nAll data is sent and received as JSON over HTTPS, using the Unicode UTF-8 text encoding.\nWe won’t rename or remove fields without a version bump.\n\n[Skip the overview and create your first Sandbox Connector](doc:sandbox-connector)","excerpt":"Get to know the features of Connect","category":"569e609aebbadc0d0079bed1","githubsync":"","order":0,"sync_unique":"","version":"569e609aebbadc0d0079bed0","__v":67,"childrenPages":[]}

Getting Started with RolePoint Connect

Get to know the features of Connect

## Connect Overview Integrate once and connect directly to the leading Applicant Tracking Systems (ATSs). Get [jobs straight from the ATS](doc:job-webhooks) and [create your own application process](doc:get-jobs-and-insert-applications). [Search for candidates](doc:find-candidates) and build your own CRM or simply [get your candidates into the ATS with the correct source](doc:send-candidate). The root URL for the API is https://api.rolepoint-connect.com/v1 All data is sent and received as JSON over HTTPS, using the Unicode UTF-8 text encoding. We won’t rename or remove fields without a version bump. [Skip the overview and create your first Sandbox Connector](doc:sandbox-connector)
## Connect Overview Integrate once and connect directly to the leading Applicant Tracking Systems (ATSs). Get [jobs straight from the ATS](doc:job-webhooks) and [create your own application process](doc:get-jobs-and-insert-applications). [Search for candidates](doc:find-candidates) and build your own CRM or simply [get your candidates into the ATS with the correct source](doc:send-candidate). The root URL for the API is https://api.rolepoint-connect.com/v1 All data is sent and received as JSON over HTTPS, using the Unicode UTF-8 text encoding. We won’t rename or remove fields without a version bump. [Skip the overview and create your first Sandbox Connector](doc:sandbox-connector)
{"_id":"56e4a86fca77c62900ee4154","createdAt":"2016-03-12T23:38:23.836Z","hidden":false,"order":1,"slug":"features","title":"Features","version":"569e609aebbadc0d0079bed0","__v":2,"link_url":"","parentDoc":null,"project":"569e6099ebbadc0d0079becd","isReference":false,"body":"### Apply\nCreate candidates and applications in the ATS.\n\n### Candidate Status\nGet updates on a candidate as they move through the application process.\n\n### Jobs\nGet notified when a job is created, updated or deleted.\n\n### Candidate Search\nSearch for candidates by email, creation date or modified date.\n\n### Candidate Detail\nGet details on a candidate like the application source or their phone number.","githubsync":"","link_external":false,"sync_unique":"","user":"56d846d5b20d260b0026570b","category":"569e609aebbadc0d0079bed1","excerpt":"","type":"basic","updates":[],"api":{"auth":"required","params":[],"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"settings":"","url":""},"childrenPages":[]}

Features


### Apply Create candidates and applications in the ATS. ### Candidate Status Get updates on a candidate as they move through the application process. ### Jobs Get notified when a job is created, updated or deleted. ### Candidate Search Search for candidates by email, creation date or modified date. ### Candidate Detail Get details on a candidate like the application source or their phone number.
### Apply Create candidates and applications in the ATS. ### Candidate Status Get updates on a candidate as they move through the application process. ### Jobs Get notified when a job is created, updated or deleted. ### Candidate Search Search for candidates by email, creation date or modified date. ### Candidate Detail Get details on a candidate like the application source or their phone number.
{"_id":"56e4a8d3c50aef1700971a62","api":{"auth":"required","params":[],"results":{"codes":[{"code":"{}","name":"","status":200,"language":"json"},{"name":"","status":400,"language":"json","code":"{}"}]},"settings":"","url":""},"body":"We're working on supporting all the features above with each ATS. The table below shows support for the main APIs in our standard ATSs. Things are moving quickly, so let us know if you need support for a feature or ATS not listed.\n[block:html]\n{\n  \"html\": \"<style type=\\\"text/css\\\">\\n\\n</style>\\n\\n<table style=\\\"background:white;\\\">\\n  <tr>\\n    <td> </td>\\n    <td align=\\\"center\\\"><img width=\\\"70px\\\" src=\\\"https://app.rolepoint-apply.com/public/admin/images/ats-tee.png\\\"></td>\\n    <td align=\\\"center\\\"><img width=\\\"70px\\\" src=\\\"https://app.rolepoint-apply.com/public/admin/images/ats-tbe.png\\\"></td>\\n    <td align=\\\"center\\\"><img width=\\\"70px\\\" src=\\\"https://app.rolepoint-apply.com/public/admin/images/ats-icims.png\\\"></td>\\n    <td align=\\\"center\\\"><img width=\\\"70px\\\" src=\\\"https://app.rolepoint-apply.com/public/admin/images/ats-greenhouse.png\\\"></td>\\n    <td align=\\\"center\\\"><img width=\\\"70px\\\" src=\\\"https://app.rolepoint-apply.com/public/admin/images/ats-lumesse.png\\\"></td>\\n  </tr>\\n  <tr>\\n    <td align=\\\"right\\\" class=\\\"title\\\"><b>Apply</b><br><small></small></td>\\n    <td align=\\\"center\\\"><img width=\\\"25\\\" style=\\\"margin-top:8px;\\\" src=\\\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\\\"></td>\\n    <td align=\\\"center\\\"><img width=\\\"25\\\" style=\\\"margin-top:8px;\\\" src=\\\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\\\"></td>\\n    <td align=\\\"center\\\"><img width=\\\"25\\\" style=\\\"margin-top:8px;\\\" src=\\\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\\\"></td>\\n    <td align=\\\"center\\\"><img width=\\\"25\\\" style=\\\"margin-top:8px;\\\" src=\\\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\\\"></td>\\n    <td align=\\\"center\\\"><img width=\\\"25\\\" style=\\\"margin-top:8px;\\\" src=\\\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\\\"></td>\\n  </tr>\\n  <tr>\\n    <td align=\\\"right\\\" class=\\\"title\\\"><b>Status</b><br><small></small></td>\\n    <td align=\\\"center\\\"><img width=\\\"25\\\" style=\\\"margin-top:8px;\\\" src=\\\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\\\"></td>\\n    <td align=\\\"center\\\"><img width=\\\"25\\\" style=\\\"margin-top:8px;\\\" src=\\\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\\\"></td>\\n    <td align=\\\"center\\\"><img width=\\\"25\\\" style=\\\"margin-top:8px;\\\" src=\\\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\\\"></td>\\n    <td align=\\\"center\\\"><img width=\\\"25\\\" style=\\\"margin-top:8px;\\\" src=\\\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\\\"></td>\\n    <td align=\\\"center\\\"><img width=\\\"25\\\" style=\\\"margin-top:8px;\\\" src=\\\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\\\"></td>\\n  </tr>\\n  <tr>\\n    <td align=\\\"right\\\" class=\\\"title\\\"><b>Jobs</b><br><small></small></td>\\n    <td align=\\\"center\\\"><img width=\\\"25\\\" style=\\\"margin-top:8px;\\\" src=\\\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\\\"></td>\\n    <td align=\\\"center\\\"><img width=\\\"25\\\" style=\\\"margin-top:8px;\\\" src=\\\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\\\"></td>\\n    <td align=\\\"center\\\"><img width=\\\"25\\\" style=\\\"margin-top:8px;\\\" src=\\\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\\\"></td>\\n    <td align=\\\"center\\\"><img width=\\\"25\\\" style=\\\"margin-top:8px;\\\" src=\\\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\\\"></td>\\n    <td align=\\\"center\\\"><img width=\\\"25\\\" style=\\\"margin-top:8px;\\\" src=\\\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\\\"></td>\\n  </tr>\\n\\n</table>\\n\\n\\n<style type=\\\"text/css\\\">\\n\\n</style>\\n\\n<table style=\\\"background:white;\\\">\\n  <tr>\\n    <td> </td>\\n    <td align=\\\"center\\\"><img width=\\\"70px\\\" src=\\\"https://app.rolepoint-apply.com/public/admin/images/ats-smart.png\\\"></td>\\n    <td align=\\\"center\\\"><img width=\\\"70px\\\" src=\\\"https://app.rolepoint-apply.com/public/admin/images/ats-bullhorn.png\\\"></td>\\n    <td align=\\\"center\\\"><img width=\\\"70px\\\" src=\\\"https://i.imgur.com/SY0GZFC.png\\\"></td>\\n    <td align=\\\"center\\\"><img style=\\\"margin-top:20px;\\\" width=\\\"70px\\\" src=\\\"https://i.imgur.com/YFut5bh.jpg\\\"></td>\\n    <td align=\\\"center\\\"><img width=\\\"70px\\\" src=\\\"https://i.imgur.com/CZLFDit.jpg\\\"></td>\\n  </tr>\\n  <tr>\\n    <td align=\\\"right\\\" class=\\\"title\\\"><b>Apply</b><br><small></small></td>\\n    <td align=\\\"center\\\"><img width=\\\"25\\\" style=\\\"margin-top:8px;\\\" src=\\\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\\\"></td>\\n    <td align=\\\"center\\\"><img width=\\\"25\\\" style=\\\"margin-top:8px;\\\" src=\\\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\\\"></td>\\n    <td align=\\\"center\\\"><img width=\\\"25\\\" style=\\\"margin-top:8px;\\\" src=\\\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\\\"></td>\\n    <td align=\\\"center\\\"><img width=\\\"25\\\" style=\\\"margin-top:8px;\\\" src=\\\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\\\"></td>\\n    <td align=\\\"center\\\"><img width=\\\"25\\\" style=\\\"margin-top:8px;\\\" src=\\\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\\\"></td>\\n  </tr>\\n  <tr>\\n    <td align=\\\"right\\\" class=\\\"title\\\"><b>Status</b><br><small></small></td>\\n    <td align=\\\"center\\\"><img width=\\\"25\\\" style=\\\"margin-top:8px;\\\" src=\\\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\\\"></td>\\n    <td align=\\\"center\\\"><img width=\\\"25\\\" style=\\\"margin-top:8px;\\\" src=\\\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\\\"></td>\\n    <td align=\\\"center\\\"><img width=\\\"25\\\" style=\\\"margin-top:8px;\\\" src=\\\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\\\"></td>\\n    <td align=\\\"center\\\"><img width=\\\"25\\\" style=\\\"margin-top:8px;\\\" src=\\\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\\\"></td>\\n    <td align=\\\"center\\\"><img width=\\\"25\\\" style=\\\"margin-top:8px;\\\" src=\\\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\\\"></td>\\n  </tr>\\n  <tr>\\n    <td align=\\\"right\\\" class=\\\"title\\\"><b>Jobs</b><br><small></small></td>\\n    <td align=\\\"center\\\"><img width=\\\"25\\\" style=\\\"margin-top:8px;\\\" src=\\\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\\\"></td>\\n    <td align=\\\"center\\\"><img width=\\\"25\\\" style=\\\"margin-top:8px;\\\" src=\\\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\\\"></td>\\n    <td align=\\\"center\\\"><img width=\\\"25\\\" style=\\\"margin-top:8px;\\\" src=\\\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\\\"></td>\\n    <td align=\\\"center\\\"><img width=\\\"25\\\" style=\\\"margin-top:8px;\\\" src=\\\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\\\"></td>\\n    <td align=\\\"center\\\"><img width=\\\"25\\\" style=\\\"margin-top:8px;\\\" src=\\\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\\\"></td>\\n  </tr>\\n\\n</table>\"\n}\n[/block]","parentDoc":null,"version":"569e609aebbadc0d0079bed0","createdAt":"2016-03-12T23:40:03.476Z","next":{"pages":[],"description":""},"project":"569e6099ebbadc0d0079becd","updates":[],"user":"56d846d5b20d260b0026570b","__v":7,"category":"569e609aebbadc0d0079bed1","isReference":false,"slug":"ats-api-support","sync_unique":"","type":"basic","title":"ATS API Support","excerpt":"","githubsync":"","hidden":false,"link_external":false,"link_url":"","order":2,"childrenPages":[]}

ATS API Support


We're working on supporting all the features above with each ATS. The table below shows support for the main APIs in our standard ATSs. Things are moving quickly, so let us know if you need support for a feature or ATS not listed. [block:html] { "html": "<style type=\"text/css\">\n\n</style>\n\n<table style=\"background:white;\">\n <tr>\n <td> </td>\n <td align=\"center\"><img width=\"70px\" src=\"https://app.rolepoint-apply.com/public/admin/images/ats-tee.png\"></td>\n <td align=\"center\"><img width=\"70px\" src=\"https://app.rolepoint-apply.com/public/admin/images/ats-tbe.png\"></td>\n <td align=\"center\"><img width=\"70px\" src=\"https://app.rolepoint-apply.com/public/admin/images/ats-icims.png\"></td>\n <td align=\"center\"><img width=\"70px\" src=\"https://app.rolepoint-apply.com/public/admin/images/ats-greenhouse.png\"></td>\n <td align=\"center\"><img width=\"70px\" src=\"https://app.rolepoint-apply.com/public/admin/images/ats-lumesse.png\"></td>\n </tr>\n <tr>\n <td align=\"right\" class=\"title\"><b>Apply</b><br><small></small></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n </tr>\n <tr>\n <td align=\"right\" class=\"title\"><b>Status</b><br><small></small></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n </tr>\n <tr>\n <td align=\"right\" class=\"title\"><b>Jobs</b><br><small></small></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n </tr>\n\n</table>\n\n\n<style type=\"text/css\">\n\n</style>\n\n<table style=\"background:white;\">\n <tr>\n <td> </td>\n <td align=\"center\"><img width=\"70px\" src=\"https://app.rolepoint-apply.com/public/admin/images/ats-smart.png\"></td>\n <td align=\"center\"><img width=\"70px\" src=\"https://app.rolepoint-apply.com/public/admin/images/ats-bullhorn.png\"></td>\n <td align=\"center\"><img width=\"70px\" src=\"https://i.imgur.com/SY0GZFC.png\"></td>\n <td align=\"center\"><img style=\"margin-top:20px;\" width=\"70px\" src=\"https://i.imgur.com/YFut5bh.jpg\"></td>\n <td align=\"center\"><img width=\"70px\" src=\"https://i.imgur.com/CZLFDit.jpg\"></td>\n </tr>\n <tr>\n <td align=\"right\" class=\"title\"><b>Apply</b><br><small></small></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n </tr>\n <tr>\n <td align=\"right\" class=\"title\"><b>Status</b><br><small></small></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n </tr>\n <tr>\n <td align=\"right\" class=\"title\"><b>Jobs</b><br><small></small></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n </tr>\n\n</table>" } [/block]
We're working on supporting all the features above with each ATS. The table below shows support for the main APIs in our standard ATSs. Things are moving quickly, so let us know if you need support for a feature or ATS not listed. [block:html] { "html": "<style type=\"text/css\">\n\n</style>\n\n<table style=\"background:white;\">\n <tr>\n <td> </td>\n <td align=\"center\"><img width=\"70px\" src=\"https://app.rolepoint-apply.com/public/admin/images/ats-tee.png\"></td>\n <td align=\"center\"><img width=\"70px\" src=\"https://app.rolepoint-apply.com/public/admin/images/ats-tbe.png\"></td>\n <td align=\"center\"><img width=\"70px\" src=\"https://app.rolepoint-apply.com/public/admin/images/ats-icims.png\"></td>\n <td align=\"center\"><img width=\"70px\" src=\"https://app.rolepoint-apply.com/public/admin/images/ats-greenhouse.png\"></td>\n <td align=\"center\"><img width=\"70px\" src=\"https://app.rolepoint-apply.com/public/admin/images/ats-lumesse.png\"></td>\n </tr>\n <tr>\n <td align=\"right\" class=\"title\"><b>Apply</b><br><small></small></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n </tr>\n <tr>\n <td align=\"right\" class=\"title\"><b>Status</b><br><small></small></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n </tr>\n <tr>\n <td align=\"right\" class=\"title\"><b>Jobs</b><br><small></small></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n </tr>\n\n</table>\n\n\n<style type=\"text/css\">\n\n</style>\n\n<table style=\"background:white;\">\n <tr>\n <td> </td>\n <td align=\"center\"><img width=\"70px\" src=\"https://app.rolepoint-apply.com/public/admin/images/ats-smart.png\"></td>\n <td align=\"center\"><img width=\"70px\" src=\"https://app.rolepoint-apply.com/public/admin/images/ats-bullhorn.png\"></td>\n <td align=\"center\"><img width=\"70px\" src=\"https://i.imgur.com/SY0GZFC.png\"></td>\n <td align=\"center\"><img style=\"margin-top:20px;\" width=\"70px\" src=\"https://i.imgur.com/YFut5bh.jpg\"></td>\n <td align=\"center\"><img width=\"70px\" src=\"https://i.imgur.com/CZLFDit.jpg\"></td>\n </tr>\n <tr>\n <td align=\"right\" class=\"title\"><b>Apply</b><br><small></small></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n </tr>\n <tr>\n <td align=\"right\" class=\"title\"><b>Status</b><br><small></small></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n </tr>\n <tr>\n <td align=\"right\" class=\"title\"><b>Jobs</b><br><small></small></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n <td align=\"center\"><img width=\"25\" style=\"margin-top:8px;\" src=\"https://cdn0.iconfinder.com/data/icons/round-ui-icons/128/tick_green.png\"></td>\n </tr>\n\n</table>" } [/block]
{"_id":"56ddc5890cfa331700f4d002","isReference":false,"link_url":"","slug":"authentication","sync_unique":"","category":"56d730d436dd840b00cef0f7","hidden":false,"parentDoc":null,"type":"basic","user":"543d38fea10ab32000b3aa8f","version":"569e609aebbadc0d0079bed0","api":{"auth":"required","params":[],"results":{"codes":[{"name":"","status":200,"language":"json","code":"{}"},{"status":400,"language":"json","code":"{}","name":""}]},"settings":"","url":""},"excerpt":"","githubsync":"","title":"Authentication","updates":[],"__v":4,"createdAt":"2016-03-07T18:16:41.304Z","order":0,"project":"569e6099ebbadc0d0079becd","body":"You should issue all requests with Basic Authentication parameters using the credentials you were provided with.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -u username:password https://api.rolepoint-connect.com\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\nRequests that require authentication may return a `404 Not Found` instead of a `401 Authorization Required` or `403 Forbidden` response to avoid leaking private URLs.\n\n### Failed login limit\n\nAuthenticating with invalid credentials will return `401 Unauthorized`.  After detecting several requests with invalid credentials within a short period, the API will temporarily reject all authentication attempts for that user (including ones with valid credentials) with a `403 Forbidden` response.","link_external":false,"childrenPages":[]}

Authentication


You should issue all requests with Basic Authentication parameters using the credentials you were provided with. [block:code] { "codes": [ { "code": "curl -u username:password https://api.rolepoint-connect.com", "language": "curl" } ] } [/block] Requests that require authentication may return a `404 Not Found` instead of a `401 Authorization Required` or `403 Forbidden` response to avoid leaking private URLs. ### Failed login limit Authenticating with invalid credentials will return `401 Unauthorized`. After detecting several requests with invalid credentials within a short period, the API will temporarily reject all authentication attempts for that user (including ones with valid credentials) with a `403 Forbidden` response.
You should issue all requests with Basic Authentication parameters using the credentials you were provided with. [block:code] { "codes": [ { "code": "curl -u username:password https://api.rolepoint-connect.com", "language": "curl" } ] } [/block] Requests that require authentication may return a `404 Not Found` instead of a `401 Authorization Required` or `403 Forbidden` response to avoid leaking private URLs. ### Failed login limit Authenticating with invalid credentials will return `401 Unauthorized`. After detecting several requests with invalid credentials within a short period, the API will temporarily reject all authentication attempts for that user (including ones with valid credentials) with a `403 Forbidden` response.
{"_id":"56ddbcda5771a520003923b0","api":{"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"language":"json","code":"{}","name":"","status":400}]},"settings":"","url":"","auth":"required","params":[]},"project":"569e6099ebbadc0d0079becd","slug":"version","type":"basic","updates":[],"githubsync":"","isReference":false,"user":"543d38fea10ab32000b3aa8f","body":"By default, all requests currently use v2 of the API.  We encourage you to explicitly request this version via the `Accept` header.\n\n    Accept: application/rolepoint.v2+json\n    \nSee [Media Types](media-types/) for more information.","createdAt":"2016-03-07T17:39:38.008Z","excerpt":"","link_url":"","parentDoc":null,"sync_unique":"","title":"Version","__v":2,"category":"56d730d436dd840b00cef0f7","hidden":false,"link_external":false,"order":1,"version":"569e609aebbadc0d0079bed0","childrenPages":[]}

Version


By default, all requests currently use v2 of the API. We encourage you to explicitly request this version via the `Accept` header. Accept: application/rolepoint.v2+json See [Media Types](media-types/) for more information.
By default, all requests currently use v2 of the API. We encourage you to explicitly request this version via the `Accept` header. Accept: application/rolepoint.v2+json See [Media Types](media-types/) for more information.
{"_id":"56ddbd530e801d2900c2e408","createdAt":"2016-03-07T17:41:39.516Z","hidden":false,"sync_unique":"","title":"Schema","version":"569e609aebbadc0d0079bed0","__v":4,"isReference":false,"parentDoc":null,"project":"569e6099ebbadc0d0079becd","type":"basic","user":"543d38fea10ab32000b3aa8f","api":{"params":[],"results":{"codes":[{"name":"","status":200,"language":"json","code":"{}"},{"language":"json","code":"{}","name":"","status":400}]},"settings":"","url":"","auth":"required"},"category":"56d730d436dd840b00cef0f7","link_external":false,"updates":[],"githubsync":"","link_url":"","order":2,"slug":"schema","body":"All API access is over HTTPS and accessed from the `api.rolepoint-connect.com` domain. All data is sent and received as JSON.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"    curl --user user:pass https://api.rolepoint-connect.com/endpoint\\n\\n    > {'connected': True}\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\nOptional fields can be sent in as `null` or omitted.  Optional fields in responses will not be omitted - instead they will be returned as `null` or empty.\n\nAll timestamps are returned in ISO 8601 format:\n\n    YYYY-MM-DDTHH:MM:SSZ","excerpt":"","childrenPages":[]}

Schema


All API access is over HTTPS and accessed from the `api.rolepoint-connect.com` domain. All data is sent and received as JSON. [block:code] { "codes": [ { "code": " curl --user user:pass https://api.rolepoint-connect.com/endpoint\n\n > {'connected': True}", "language": "curl" } ] } [/block] Optional fields can be sent in as `null` or omitted. Optional fields in responses will not be omitted - instead they will be returned as `null` or empty. All timestamps are returned in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ
All API access is over HTTPS and accessed from the `api.rolepoint-connect.com` domain. All data is sent and received as JSON. [block:code] { "codes": [ { "code": " curl --user user:pass https://api.rolepoint-connect.com/endpoint\n\n > {'connected': True}", "language": "curl" } ] } [/block] Optional fields can be sent in as `null` or omitted. Optional fields in responses will not be omitted - instead they will be returned as `null` or empty. All timestamps are returned in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ
{"_id":"56ddbd80d55588290014a918","api":{"params":[],"results":{"codes":[{"code":"{}","name":"","status":200,"language":"json"},{"name":"","status":400,"language":"json","code":"{}"}]},"settings":"","url":"","auth":"required"},"isReference":false,"link_external":false,"order":3,"slug":"success-responses","type":"basic","body":"Successful API calls will return a `200 OK` response.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"HTTP/1.1 200 OK\\n\\n{}\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]","githubsync":"","hidden":false,"link_url":"","project":"569e6099ebbadc0d0079becd","user":"543d38fea10ab32000b3aa8f","version":"569e609aebbadc0d0079bed0","__v":3,"category":"56d730d436dd840b00cef0f7","excerpt":"","parentDoc":null,"createdAt":"2016-03-07T17:42:24.611Z","sync_unique":"","title":"Success Responses","updates":[],"childrenPages":[]}

Success Responses


Successful API calls will return a `200 OK` response. [block:code] { "codes": [ { "code": "HTTP/1.1 200 OK\n\n{}", "language": "http" } ] } [/block]
Successful API calls will return a `200 OK` response. [block:code] { "codes": [ { "code": "HTTP/1.1 200 OK\n\n{}", "language": "http" } ] } [/block]
{"_id":"56ddbb9350dd421700424b7e","sync_unique":"","title":"Asynchronous Requests","api":{"params":[],"results":{"codes":[{"name":"","status":200,"language":"json","code":"{}"},{"language":"json","code":"{}","name":"","status":400}]},"settings":"","url":"","auth":"required"},"hidden":false,"order":4,"project":"569e6099ebbadc0d0079becd","category":"56d730d436dd840b00cef0f7","isReference":false,"updates":[],"slug":"asynchronous-requests","version":"569e609aebbadc0d0079bed0","createdAt":"2016-03-07T17:34:11.319Z","excerpt":"","githubsync":"","link_external":false,"parentDoc":null,"__v":15,"body":"The API has some endpoints that process requests asynchronously. Each request to Connect can map to one or more requests to the ATS, which could potentially take a long time to process due to request times to the ATS or rate limiting requirements. Working asynchronously will help hide this from your users and allow Connect to stay within the limits imposed by the ATS.\n\n### Callbacks\n\nEach asynchronous endpoint will accept a `X-RolePoint-Callback-Url` HTTP header that we will post a JSON status report to upon completion of the task. The data POSTed to the callback url will follow the [completed](#section-completed) or [failed](#section-failed) status reports below.\n\n### Completed\n\nIf the task has completed, the status report will be of the format:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"status\\\": \\\"complete\\\",\\n  \\\"result_info\\\": {\\n    \\\"url\\\": \\\"https://api.rolepoint-connect.com/:endpoint/:request_id/result\\\",\\n    \\\"ttl\\\": 123\\n  },\\n  \\\"error_info\\\": null\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nWhere the `url` can be used to get the result of the task (e.g. the results of a [Find Candidates](doc:find-candidates) query) and the `ttl` refers to the time until the result expires.\n\n### Failed\n\nIf the task failed, the response will have the form:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"status\\\": \\\"failed\\\",\\n  \\\"result_info\\\": {\\n    \\\"url\\\": \\\"https://api.rolepoint-connect.com/:endpoint/:request_id/result\\\",\\n    \\\"ttl\\\": 123\\n  },\\n  \\\"error_info\\\": {\\n    \\\"message\\\": \\\"Message describing the error that occured\\\",\\n    \\\"code\\\": 123\\n  }\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nWhere the `code` is one of the defined [Error Codes](doc:error-codes) and the `message` describes why the task failed.\n\n### Polling request status\n\nAsynchronous endpoints will also return a status URL that you can poll for status updates and success reports. This is useful when working in an environment where accepting a callback POST is not possible.\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"body\": \"We recommend using the callback functionality rather than polling Connect. Each request to Connect can map to one or more requests to the ATS, which could potentially take a while to process. By sending a callback we reduce the need to make several needless connections over what could be an extended period of time.\",\n  \"title\": \"Polling not recommended\"\n}\n[/block]\n[Async Request Status](doc:get-async-request-status) can be used to check the status of an synchronous task.\n\nThe [completed](#section-completed) and [failed](#section-failed) status reports are the same as for callbacks above.","link_url":"","type":"basic","user":"543d38fea10ab32000b3aa8f","childrenPages":[]}

Asynchronous Requests


The API has some endpoints that process requests asynchronously. Each request to Connect can map to one or more requests to the ATS, which could potentially take a long time to process due to request times to the ATS or rate limiting requirements. Working asynchronously will help hide this from your users and allow Connect to stay within the limits imposed by the ATS. ### Callbacks Each asynchronous endpoint will accept a `X-RolePoint-Callback-Url` HTTP header that we will post a JSON status report to upon completion of the task. The data POSTed to the callback url will follow the [completed](#section-completed) or [failed](#section-failed) status reports below. ### Completed If the task has completed, the status report will be of the format: [block:code] { "codes": [ { "code": "{\n \"status\": \"complete\",\n \"result_info\": {\n \"url\": \"https://api.rolepoint-connect.com/:endpoint/:request_id/result\",\n \"ttl\": 123\n },\n \"error_info\": null\n}", "language": "json" } ] } [/block] Where the `url` can be used to get the result of the task (e.g. the results of a [Find Candidates](doc:find-candidates) query) and the `ttl` refers to the time until the result expires. ### Failed If the task failed, the response will have the form: [block:code] { "codes": [ { "code": "{\n \"status\": \"failed\",\n \"result_info\": {\n \"url\": \"https://api.rolepoint-connect.com/:endpoint/:request_id/result\",\n \"ttl\": 123\n },\n \"error_info\": {\n \"message\": \"Message describing the error that occured\",\n \"code\": 123\n }\n}", "language": "json" } ] } [/block] Where the `code` is one of the defined [Error Codes](doc:error-codes) and the `message` describes why the task failed. ### Polling request status Asynchronous endpoints will also return a status URL that you can poll for status updates and success reports. This is useful when working in an environment where accepting a callback POST is not possible. [block:callout] { "type": "warning", "body": "We recommend using the callback functionality rather than polling Connect. Each request to Connect can map to one or more requests to the ATS, which could potentially take a while to process. By sending a callback we reduce the need to make several needless connections over what could be an extended period of time.", "title": "Polling not recommended" } [/block] [Async Request Status](doc:get-async-request-status) can be used to check the status of an synchronous task. The [completed](#section-completed) and [failed](#section-failed) status reports are the same as for callbacks above.
The API has some endpoints that process requests asynchronously. Each request to Connect can map to one or more requests to the ATS, which could potentially take a long time to process due to request times to the ATS or rate limiting requirements. Working asynchronously will help hide this from your users and allow Connect to stay within the limits imposed by the ATS. ### Callbacks Each asynchronous endpoint will accept a `X-RolePoint-Callback-Url` HTTP header that we will post a JSON status report to upon completion of the task. The data POSTed to the callback url will follow the [completed](#section-completed) or [failed](#section-failed) status reports below. ### Completed If the task has completed, the status report will be of the format: [block:code] { "codes": [ { "code": "{\n \"status\": \"complete\",\n \"result_info\": {\n \"url\": \"https://api.rolepoint-connect.com/:endpoint/:request_id/result\",\n \"ttl\": 123\n },\n \"error_info\": null\n}", "language": "json" } ] } [/block] Where the `url` can be used to get the result of the task (e.g. the results of a [Find Candidates](doc:find-candidates) query) and the `ttl` refers to the time until the result expires. ### Failed If the task failed, the response will have the form: [block:code] { "codes": [ { "code": "{\n \"status\": \"failed\",\n \"result_info\": {\n \"url\": \"https://api.rolepoint-connect.com/:endpoint/:request_id/result\",\n \"ttl\": 123\n },\n \"error_info\": {\n \"message\": \"Message describing the error that occured\",\n \"code\": 123\n }\n}", "language": "json" } ] } [/block] Where the `code` is one of the defined [Error Codes](doc:error-codes) and the `message` describes why the task failed. ### Polling request status Asynchronous endpoints will also return a status URL that you can poll for status updates and success reports. This is useful when working in an environment where accepting a callback POST is not possible. [block:callout] { "type": "warning", "body": "We recommend using the callback functionality rather than polling Connect. Each request to Connect can map to one or more requests to the ATS, which could potentially take a while to process. By sending a callback we reduce the need to make several needless connections over what could be an extended period of time.", "title": "Polling not recommended" } [/block] [Async Request Status](doc:get-async-request-status) can be used to check the status of an synchronous task. The [completed](#section-completed) and [failed](#section-failed) status reports are the same as for callbacks above.
{"_id":"56ddbd9ae1a78d0e00a9bdd7","createdAt":"2016-03-07T17:42:50.345Z","project":"569e6099ebbadc0d0079becd","updates":[],"user":"543d38fea10ab32000b3aa8f","title":"Errors","version":"569e609aebbadc0d0079bed0","category":"56d730d436dd840b00cef0f7","githubsync":"","isReference":false,"slug":"client-responses","hidden":false,"parentDoc":null,"link_url":"","order":5,"sync_unique":"","__v":9,"api":{"url":"","auth":"required","params":[],"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"name":"","status":400,"language":"json","code":"{}"}]},"settings":""},"body":"## Client Errors\n\nThere are six types of client errors on API calls:\n\n1. Sending a request with missing credentials will result in a `401\n   Unauthorized` response\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"HTTP/1.1 401 Unauthorized\\n\\n{\\\"message\\\": \\\"Missing credentials\\\"}\\n\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\n2. Sending a request with invalid or insufficient credentials will result in a\n   `401 Unauthorized` response.\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"HTTP/1.1 401 Unauthorized\\n\\n{\\\"message\\\": \\\"Invalid credentials\\\"}\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\n3. Sending a request to an endpoint that does not exist will result in a `404\n   Not Found` response.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"HTTP/1.1 404 Not Found\\n\\n{\\\"message\\\": \\\"Page not found\\\"}\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\n4. Sending malformed JSON bodies will result in a `400 Bad Request` response.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"HTTP/1.1 400 Bad Request\\n\\n{\\\"message\\\": \\\"Problems parsing JSON\\\"}\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\n5. Sending JSON bodies with missing fields or unexpected fields will result in a `422\n   Unprocessable Entity` response.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"HTTP/1.1 422 Unprocessable Entity\\n\\n{\\\"message\\\": \\\"JSON does not match expected schema.\\\"}\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\n6. Sending a request that exceeds rate limits will result in a `429 Too Many\n   Requests` response.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"HTTP/1.1 429 Too Many Requests\\n\\n{\\\"message\\\": \\\"Rate limit exceeded\\\", \\\"rate-limit-reset\\\": \\\"60\\\"}\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\nThe `rate-limit-reset` field in this response is the number of seconds until\nthe rate limit will be reset.\n\nIf endpoints have custom validation errors, they will be documented with the\nendpoint.\n\n## Other Errors\n\nIf an unexpected error occurs during an API call, the server will return a `500\nInternal Server Error`\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"HTTP/1.1 500 Internal Server Error\\n\\n{\\\"message\\\": \\\"Unknown error\\\"}\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\nYou should assume that these requests failed and attempt them again later.","excerpt":"","link_external":false,"type":"basic","childrenPages":[]}

Errors


## Client Errors There are six types of client errors on API calls: 1. Sending a request with missing credentials will result in a `401 Unauthorized` response [block:code] { "codes": [ { "code": "HTTP/1.1 401 Unauthorized\n\n{\"message\": \"Missing credentials\"}\n", "language": "http" } ] } [/block] 2. Sending a request with invalid or insufficient credentials will result in a `401 Unauthorized` response. [block:code] { "codes": [ { "code": "HTTP/1.1 401 Unauthorized\n\n{\"message\": \"Invalid credentials\"}", "language": "http" } ] } [/block] 3. Sending a request to an endpoint that does not exist will result in a `404 Not Found` response. [block:code] { "codes": [ { "code": "HTTP/1.1 404 Not Found\n\n{\"message\": \"Page not found\"}", "language": "http" } ] } [/block] 4. Sending malformed JSON bodies will result in a `400 Bad Request` response. [block:code] { "codes": [ { "code": "HTTP/1.1 400 Bad Request\n\n{\"message\": \"Problems parsing JSON\"}", "language": "http" } ] } [/block] 5. Sending JSON bodies with missing fields or unexpected fields will result in a `422 Unprocessable Entity` response. [block:code] { "codes": [ { "code": "HTTP/1.1 422 Unprocessable Entity\n\n{\"message\": \"JSON does not match expected schema.\"}", "language": "http" } ] } [/block] 6. Sending a request that exceeds rate limits will result in a `429 Too Many Requests` response. [block:code] { "codes": [ { "code": "HTTP/1.1 429 Too Many Requests\n\n{\"message\": \"Rate limit exceeded\", \"rate-limit-reset\": \"60\"}", "language": "http" } ] } [/block] The `rate-limit-reset` field in this response is the number of seconds until the rate limit will be reset. If endpoints have custom validation errors, they will be documented with the endpoint. ## Other Errors If an unexpected error occurs during an API call, the server will return a `500 Internal Server Error` [block:code] { "codes": [ { "code": "HTTP/1.1 500 Internal Server Error\n\n{\"message\": \"Unknown error\"}", "language": "http" } ] } [/block] You should assume that these requests failed and attempt them again later.
## Client Errors There are six types of client errors on API calls: 1. Sending a request with missing credentials will result in a `401 Unauthorized` response [block:code] { "codes": [ { "code": "HTTP/1.1 401 Unauthorized\n\n{\"message\": \"Missing credentials\"}\n", "language": "http" } ] } [/block] 2. Sending a request with invalid or insufficient credentials will result in a `401 Unauthorized` response. [block:code] { "codes": [ { "code": "HTTP/1.1 401 Unauthorized\n\n{\"message\": \"Invalid credentials\"}", "language": "http" } ] } [/block] 3. Sending a request to an endpoint that does not exist will result in a `404 Not Found` response. [block:code] { "codes": [ { "code": "HTTP/1.1 404 Not Found\n\n{\"message\": \"Page not found\"}", "language": "http" } ] } [/block] 4. Sending malformed JSON bodies will result in a `400 Bad Request` response. [block:code] { "codes": [ { "code": "HTTP/1.1 400 Bad Request\n\n{\"message\": \"Problems parsing JSON\"}", "language": "http" } ] } [/block] 5. Sending JSON bodies with missing fields or unexpected fields will result in a `422 Unprocessable Entity` response. [block:code] { "codes": [ { "code": "HTTP/1.1 422 Unprocessable Entity\n\n{\"message\": \"JSON does not match expected schema.\"}", "language": "http" } ] } [/block] 6. Sending a request that exceeds rate limits will result in a `429 Too Many Requests` response. [block:code] { "codes": [ { "code": "HTTP/1.1 429 Too Many Requests\n\n{\"message\": \"Rate limit exceeded\", \"rate-limit-reset\": \"60\"}", "language": "http" } ] } [/block] The `rate-limit-reset` field in this response is the number of seconds until the rate limit will be reset. If endpoints have custom validation errors, they will be documented with the endpoint. ## Other Errors If an unexpected error occurs during an API call, the server will return a `500 Internal Server Error` [block:code] { "codes": [ { "code": "HTTP/1.1 500 Internal Server Error\n\n{\"message\": \"Unknown error\"}", "language": "http" } ] } [/block] You should assume that these requests failed and attempt them again later.
{"_id":"56ddc57225a3dd1700e5c758","hidden":false,"excerpt":"","link_external":false,"order":6,"slug":"error-codes","title":"Error Codes","isReference":false,"parentDoc":null,"project":"569e6099ebbadc0d0079becd","__v":3,"body":"### 100 - ATS Unauthorized Error\n\n100 is the error code Connect sends when there's an authorization problem connecting to the ATS. If there's a problem authorizing with the ATS, Connect will shut down any future attempts to connect to the ATS until we can confirm the credentials work. This is to prevent the ATS account being locked for multiple invalid authorization requests.\n\n### 999 - General Purpose Error\n\nThis is a general purpose error code. This will be returned as a 'catch-all', so if there is an unexpected error, this code would be returned with a message indicating what went wrong.","category":"56d730d436dd840b00cef0f7","createdAt":"2016-03-07T18:16:18.539Z","updates":[],"user":"543d38fea10ab32000b3aa8f","version":"569e609aebbadc0d0079bed0","api":{"params":[],"results":{"codes":[{"code":"{}","name":"","status":200,"language":"json"},{"status":400,"language":"json","code":"{}","name":""}]},"settings":"","url":"","auth":"required"},"githubsync":"","link_url":"","sync_unique":"","type":"basic","childrenPages":[]}

Error Codes


### 100 - ATS Unauthorized Error 100 is the error code Connect sends when there's an authorization problem connecting to the ATS. If there's a problem authorizing with the ATS, Connect will shut down any future attempts to connect to the ATS until we can confirm the credentials work. This is to prevent the ATS account being locked for multiple invalid authorization requests. ### 999 - General Purpose Error This is a general purpose error code. This will be returned as a 'catch-all', so if there is an unexpected error, this code would be returned with a message indicating what went wrong.
### 100 - ATS Unauthorized Error 100 is the error code Connect sends when there's an authorization problem connecting to the ATS. If there's a problem authorizing with the ATS, Connect will shut down any future attempts to connect to the ATS until we can confirm the credentials work. This is to prevent the ATS account being locked for multiple invalid authorization requests. ### 999 - General Purpose Error This is a general purpose error code. This will be returned as a 'catch-all', so if there is an unexpected error, this code would be returned with a message indicating what went wrong.
{"_id":"56e453c0f0150e1700ce67fc","category":"56d730d436dd840b00cef0f7","githubsync":"","isReference":false,"order":7,"parentDoc":null,"slug":"billing-limits","type":"basic","createdAt":"2016-03-12T17:37:04.922Z","hidden":false,"body":"The API has credit limits, defined on a per-connector basis.\n\nYou can check the returned HTTP headers of any API request to see your current credit limit status:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -i https://api.rolepoint-connect.com/whatever\\n\\nHTTP/1.1 200 OK\\nStatus: 200 OK\\nX-CreditLimit-Limit: 60\\nX-CreditLimit-Remaining: 56\\nX-CreditLimit_Reset: 1372700873\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\nThe headers tell you everything you need to know about your current credit limit status:\n\n* X-CreditLimit-Limit - The maximum number of requests that the consumer is permitted to make per hour.\n* X-CreditLimit-Remaining - The number of requests remaining in the current credit window.\n* X-CreditLimit-Reset - The time at which the current credit window resets in UTC epoch seconds.\n\nOnce you go over your credit limit you will receive an error response:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"HTTP/1.1 429 Too Many Requests\\nStatus: 429 Too Many Requests\\nX-CreditLimit-Limit: 60\\nX-CreditLimit-Remaining: 0\\nX-CreditLimit-Reset: 1372700873\\n\\n{\\\"message\\\": \\\"Rate limit exceeded\\\", \\\"rate-limit-reset\\\": 1372700873}\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]","excerpt":"","link_url":"","sync_unique":"","title":"Billing limits","version":"569e609aebbadc0d0079bed0","__v":4,"api":{"auth":"required","params":[],"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"settings":"","url":""},"link_external":false,"project":"569e6099ebbadc0d0079becd","updates":[],"user":"56d846d5b20d260b0026570b","childrenPages":[]}

Billing limits


The API has credit limits, defined on a per-connector basis. You can check the returned HTTP headers of any API request to see your current credit limit status: [block:code] { "codes": [ { "code": "curl -i https://api.rolepoint-connect.com/whatever\n\nHTTP/1.1 200 OK\nStatus: 200 OK\nX-CreditLimit-Limit: 60\nX-CreditLimit-Remaining: 56\nX-CreditLimit_Reset: 1372700873", "language": "curl" } ] } [/block] The headers tell you everything you need to know about your current credit limit status: * X-CreditLimit-Limit - The maximum number of requests that the consumer is permitted to make per hour. * X-CreditLimit-Remaining - The number of requests remaining in the current credit window. * X-CreditLimit-Reset - The time at which the current credit window resets in UTC epoch seconds. Once you go over your credit limit you will receive an error response: [block:code] { "codes": [ { "code": "HTTP/1.1 429 Too Many Requests\nStatus: 429 Too Many Requests\nX-CreditLimit-Limit: 60\nX-CreditLimit-Remaining: 0\nX-CreditLimit-Reset: 1372700873\n\n{\"message\": \"Rate limit exceeded\", \"rate-limit-reset\": 1372700873}", "language": "http" } ] } [/block]
The API has credit limits, defined on a per-connector basis. You can check the returned HTTP headers of any API request to see your current credit limit status: [block:code] { "codes": [ { "code": "curl -i https://api.rolepoint-connect.com/whatever\n\nHTTP/1.1 200 OK\nStatus: 200 OK\nX-CreditLimit-Limit: 60\nX-CreditLimit-Remaining: 56\nX-CreditLimit_Reset: 1372700873", "language": "curl" } ] } [/block] The headers tell you everything you need to know about your current credit limit status: * X-CreditLimit-Limit - The maximum number of requests that the consumer is permitted to make per hour. * X-CreditLimit-Remaining - The number of requests remaining in the current credit window. * X-CreditLimit-Reset - The time at which the current credit window resets in UTC epoch seconds. Once you go over your credit limit you will receive an error response: [block:code] { "codes": [ { "code": "HTTP/1.1 429 Too Many Requests\nStatus: 429 Too Many Requests\nX-CreditLimit-Limit: 60\nX-CreditLimit-Remaining: 0\nX-CreditLimit-Reset: 1372700873\n\n{\"message\": \"Rate limit exceeded\", \"rate-limit-reset\": 1372700873}", "language": "http" } ] } [/block]
{"_id":"56ddc61490559a2900a3a4ae","title":"Rate Limits","version":"569e609aebbadc0d0079bed0","category":"56d730d436dd840b00cef0f7","githubsync":"","link_external":false,"parentDoc":null,"type":"basic","updates":[],"excerpt":"","isReference":false,"project":"569e6099ebbadc0d0079becd","slug":"rate-limits","sync_unique":"","api":{"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"language":"json","code":"{}","name":"","status":400}]},"settings":"","url":"","auth":"required","params":[]},"createdAt":"2016-03-07T18:19:00.819Z","user":"543d38fea10ab32000b3aa8f","__v":4,"body":"The connector API has rate limits, which vary by ATS. These are separate from the billing-based credit limits described above. These are in place to ensure that we don't exceed the rate limits imposed by the underlying ATS.\n\nThese rate limits are implemented using a sliding window that should allow you to burst at a higher rate than the ATS usually allows, but will not allow you to maintain that level indefinitely.\n\nYou can check the returned HTTP headers of any API request to see your current rate limit status:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -i https://api.rolepoint-connect.com/whatever\\n\\nHTTP/1.1 200 OK\\nStatus: 200 OK\\nX-RateLimit-Remaining: 1\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\nThese limiters are implemented as a sliding window, so do not provide reset information.\n\nOnce you go over your rate limit, you will receive an error response:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"HTTP/1.1 429 Too Many Requests\\nStatus: 429 Too Many Requests\\nX-CreditLimit-Remaining: 0\\n\\n{\\\"message\\\": \\\"Rate limit exceeded\\\"}\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]","hidden":false,"link_url":"","order":8,"childrenPages":[]}

Rate Limits


The connector API has rate limits, which vary by ATS. These are separate from the billing-based credit limits described above. These are in place to ensure that we don't exceed the rate limits imposed by the underlying ATS. These rate limits are implemented using a sliding window that should allow you to burst at a higher rate than the ATS usually allows, but will not allow you to maintain that level indefinitely. You can check the returned HTTP headers of any API request to see your current rate limit status: [block:code] { "codes": [ { "code": "curl -i https://api.rolepoint-connect.com/whatever\n\nHTTP/1.1 200 OK\nStatus: 200 OK\nX-RateLimit-Remaining: 1", "language": "curl" } ] } [/block] These limiters are implemented as a sliding window, so do not provide reset information. Once you go over your rate limit, you will receive an error response: [block:code] { "codes": [ { "code": "HTTP/1.1 429 Too Many Requests\nStatus: 429 Too Many Requests\nX-CreditLimit-Remaining: 0\n\n{\"message\": \"Rate limit exceeded\"}", "language": "http" } ] } [/block]
The connector API has rate limits, which vary by ATS. These are separate from the billing-based credit limits described above. These are in place to ensure that we don't exceed the rate limits imposed by the underlying ATS. These rate limits are implemented using a sliding window that should allow you to burst at a higher rate than the ATS usually allows, but will not allow you to maintain that level indefinitely. You can check the returned HTTP headers of any API request to see your current rate limit status: [block:code] { "codes": [ { "code": "curl -i https://api.rolepoint-connect.com/whatever\n\nHTTP/1.1 200 OK\nStatus: 200 OK\nX-RateLimit-Remaining: 1", "language": "curl" } ] } [/block] These limiters are implemented as a sliding window, so do not provide reset information. Once you go over your rate limit, you will receive an error response: [block:code] { "codes": [ { "code": "HTTP/1.1 429 Too Many Requests\nStatus: 429 Too Many Requests\nX-CreditLimit-Remaining: 0\n\n{\"message\": \"Rate limit exceeded\"}", "language": "http" } ] } [/block]
{"_id":"56d732043eb4dd0b00201922","category":"56d8457a9d27560b00a4cc17","createdAt":"2016-03-02T18:33:40.339Z","hidden":false,"isReference":true,"project":"569e6099ebbadc0d0079becd","updates":[],"__v":4,"api":{"auth":"required","examples":{"codes":[]},"method":"post","params":[{"name":"connector_id","ref":"","required":false,"type":"string","in":"body","_id":"56d7330a3513421d009342ec","default":"","desc":"The ID of your Connector."}],"results":{"codes":[{"code":"{\n  \"request_status_url\": \"https://api.rolepoint-connect.com/123/requests/456/status\"\n}","language":"json","status":200},{"code":"{\n  \"message\": \"JSON does not match expected schema\",\n  \"errors\": [\n    \"empty values not allowed for field 'first_name'\",\n    \"empty values not allowed for field 'last_name'\"\n  ]\n}","language":"json","status":422},{"language":"json","code":"{\"message\": \"Rate limit exceeded\"}","status":429},{"code":"{\"message\": \"Invalid credentials\"}\nor\n{\"message\": \"Missing credentials\"}","language":"json","status":401}]},"settings":"","url":"/candidate"},"body":"[block:textarea]\n{\n  \"text\": \"## Request\",\n  \"sidebar\": true\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"POST /v1/123/candidate HTTP/1.1\\nHost: api.rolepoint-connect.com\\nAccept: application/rolepoint.v2+json\\nContent-Type: application/rolepoint.v2+json\\nAuthorization: xxxxx\\nX-RolePoint-Callback-Url: https://example.com/send-candidate-callback\\n\\n{\\n  \\\"source\\\": \\\"example\\\",\\n  \\\"candidate\\\": {\\n    \\\"email\\\": \\\"test@example.com\\\",\\n    \\\"first_name\\\": \\\"James\\\",\\n    \\\"last_name\\\": \\\"Test\\\",\\n    \\\"cv_file\\\": \\\"\\\",\\n\\t  \\\"location\\\": {\\n  \\t  \\\"city\\\": \\\"London\\\",\\n\\t    \\\"country\\\": \\\"UK\\\",\\n  \\t  \\\"zipcode\\\": \\\"EC1R 5DT\\\"\\n\\t  }\\n  },\\n  \\\"applications\\\": [{\\n  \\t\\\"job_id\\\": \\\"1234\\\"\\n  }]\\n}\",\n      \"language\": \"http\"\n    },\n    {\n      \"code\": \"import json\\nimport requests\\n\\nconnector_id = '123'\\nusername = 'username'\\npassword = 'password'\\n\\nurl = \\\"https://api.rolepoint-connect.com/v1/{}/candidate\\\".format(\\n  connector_id\\n)\\n\\nheaders = {\\n  \\\"content-type\\\": \\\"application/rolepoint.v2+json\\\",\\n  \\\"accept\\\": \\\"application/rolepoint.v2+json\\\",\\n  'X-RolePoint-Callback-Url': 'https://example.com/send-candidate-callback'\\n}\\n\\npayload = json.dumps({\\n  \\\"source\\\": \\\"example\\\",\\n  \\\"candidate\\\": {\\n    \\\"email\\\": \\\"test@example.com\\\",\\n    \\\"first_name\\\": \\\"James\\\",\\n    \\\"last_name\\\": \\\"Test\\\",\\n    \\\"cv_file\\\": \\\"\\\",\\n\\t  \\\"location\\\": {\\n  \\t  \\\"city\\\": \\\"London\\\",\\n\\t    \\\"country\\\": \\\"UK\\\",\\n  \\t  \\\"zipcode\\\": \\\"EC1R 5DT\\\"\\n\\t  }\\n  },\\n  \\\"applications\\\": [{\\n  \\t\\\"job_id\\\": \\\"1234\\\"\\n  }]\\n})\\n\\nresponse = requests.post(\\n  url, data=payload, headers=headers, auth=(username, password)\\n)\\n\\nprint(response.text)\",\n      \"language\": \"python\"\n    }\n  ],\n  \"sidebar\": true\n}\n[/block]\n\n[block:textarea]\n{\n  \"text\": \"## Final Result\",\n  \"sidebar\": true\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \" HTTP/1.1 200 OK\\n Status: 200 OK\\n Content-Type: application/rolepoint.v2+json\\n\\n{\\n  \\\"candidate_id\\\": 1234,\\n  \\\"candidate_created\\\": True\\n  \\\"application_ids\\\": {\\n\\t  \\\"1234\\\": 4675\\n  }\\n}\",\n      \"language\": \"http\"\n    }\n  ],\n  \"sidebar\": true\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Asynchronous Endpoint\",\n  \"body\": \"This endpoint is asynchronous. See the [Asynchronous Requests](doc:asynchronous-requests) documentation for more details.\"\n}\n[/block]\n## Request Body\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"candidate\",\n    \"h-0\": \"Attribute\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Required\",\n    \"h-3\": \"Description\",\n    \"0-1\": \"[Candidate](doc:resources)\",\n    \"0-2\": \"True\",\n    \"0-3\": \"The Candidate entity the application(s) is for.\",\n    \"1-0\": \"applications\",\n    \"1-1\": \"list<[Application](doc:application)>\",\n    \"1-2\": \"True\",\n    \"1-3\": \"The job(s) the Candidate is applying for.\",\n    \"2-0\": \"source\",\n    \"2-1\": \"string\",\n    \"2-2\": \"False\",\n    \"2-3\": \"The ID which specifies the source that the application was made through.\"\n  },\n  \"cols\": 4,\n  \"rows\": 3\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Potential Errors\",\n  \"body\": \"The endpoint can return errors if the payload is malformed. The response\\nin this case will contain the following fields:\\n\\n    PUT /v1/123/candidate HTTP/1.1\\n\\n    HTTP/1.1 422 Unprocessable Entity\\n    Status: 422 Unprocessable Entity\\n\\n    {\\n        \\\"message\\\": \\\"JSON does not match expected schema\\\",\\n        \\\"errors\\\": [\\n            \\\"empty values not allowed for field 'first_name'\\\",\\n            \\\"empty values not allowed for field 'last_name'\\\"\\n        ]\\n    }\"\n}\n[/block]","githubsync":"","link_url":"","version":"569e609aebbadc0d0079bed0","editedParams2":true,"excerpt":"Endpoint for creating a job application.","order":0,"type":"post","user":"543d38fea10ab32000b3aa8f","sync_unique":"","title":"Send Candidate","editedParams":true,"link_external":false,"parentDoc":null,"slug":"send-candidate","childrenPages":[]}

postSend Candidate

Endpoint for creating a job application.

Body Params

connector_id:
string
The ID of your Connector.
[block:textarea] { "text": "## Request", "sidebar": true } [/block] [block:code] { "codes": [ { "code": "POST /v1/123/candidate HTTP/1.1\nHost: api.rolepoint-connect.com\nAccept: application/rolepoint.v2+json\nContent-Type: application/rolepoint.v2+json\nAuthorization: xxxxx\nX-RolePoint-Callback-Url: https://example.com/send-candidate-callback\n\n{\n \"source\": \"example\",\n \"candidate\": {\n \"email\": \"test@example.com\",\n \"first_name\": \"James\",\n \"last_name\": \"Test\",\n \"cv_file\": \"\",\n\t \"location\": {\n \t \"city\": \"London\",\n\t \"country\": \"UK\",\n \t \"zipcode\": \"EC1R 5DT\"\n\t }\n },\n \"applications\": [{\n \t\"job_id\": \"1234\"\n }]\n}", "language": "http" }, { "code": "import json\nimport requests\n\nconnector_id = '123'\nusername = 'username'\npassword = 'password'\n\nurl = \"https://api.rolepoint-connect.com/v1/{}/candidate\".format(\n connector_id\n)\n\nheaders = {\n \"content-type\": \"application/rolepoint.v2+json\",\n \"accept\": \"application/rolepoint.v2+json\",\n 'X-RolePoint-Callback-Url': 'https://example.com/send-candidate-callback'\n}\n\npayload = json.dumps({\n \"source\": \"example\",\n \"candidate\": {\n \"email\": \"test@example.com\",\n \"first_name\": \"James\",\n \"last_name\": \"Test\",\n \"cv_file\": \"\",\n\t \"location\": {\n \t \"city\": \"London\",\n\t \"country\": \"UK\",\n \t \"zipcode\": \"EC1R 5DT\"\n\t }\n },\n \"applications\": [{\n \t\"job_id\": \"1234\"\n }]\n})\n\nresponse = requests.post(\n url, data=payload, headers=headers, auth=(username, password)\n)\n\nprint(response.text)", "language": "python" } ], "sidebar": true } [/block] [block:textarea] { "text": "## Final Result", "sidebar": true } [/block] [block:code] { "codes": [ { "code": " HTTP/1.1 200 OK\n Status: 200 OK\n Content-Type: application/rolepoint.v2+json\n\n{\n \"candidate_id\": 1234,\n \"candidate_created\": True\n \"application_ids\": {\n\t \"1234\": 4675\n }\n}", "language": "http" } ], "sidebar": true } [/block] [block:callout] { "type": "info", "title": "Asynchronous Endpoint", "body": "This endpoint is asynchronous. See the [Asynchronous Requests](doc:asynchronous-requests) documentation for more details." } [/block] ## Request Body [block:parameters] { "data": { "0-0": "candidate", "h-0": "Attribute", "h-1": "Type", "h-2": "Required", "h-3": "Description", "0-1": "[Candidate](doc:resources)", "0-2": "True", "0-3": "The Candidate entity the application(s) is for.", "1-0": "applications", "1-1": "list<[Application](doc:application)>", "1-2": "True", "1-3": "The job(s) the Candidate is applying for.", "2-0": "source", "2-1": "string", "2-2": "False", "2-3": "The ID which specifies the source that the application was made through." }, "cols": 4, "rows": 3 } [/block] [block:callout] { "type": "warning", "title": "Potential Errors", "body": "The endpoint can return errors if the payload is malformed. The response\nin this case will contain the following fields:\n\n PUT /v1/123/candidate HTTP/1.1\n\n HTTP/1.1 422 Unprocessable Entity\n Status: 422 Unprocessable Entity\n\n {\n \"message\": \"JSON does not match expected schema\",\n \"errors\": [\n \"empty values not allowed for field 'first_name'\",\n \"empty values not allowed for field 'last_name'\"\n ]\n }" } [/block]

Definition

{{ api_url }}{{ page_api_url }}

Result Format



[block:textarea] { "text": "## Request", "sidebar": true } [/block] [block:code] { "codes": [ { "code": "POST /v1/123/candidate HTTP/1.1\nHost: api.rolepoint-connect.com\nAccept: application/rolepoint.v2+json\nContent-Type: application/rolepoint.v2+json\nAuthorization: xxxxx\nX-RolePoint-Callback-Url: https://example.com/send-candidate-callback\n\n{\n \"source\": \"example\",\n \"candidate\": {\n \"email\": \"test@example.com\",\n \"first_name\": \"James\",\n \"last_name\": \"Test\",\n \"cv_file\": \"\",\n\t \"location\": {\n \t \"city\": \"London\",\n\t \"country\": \"UK\",\n \t \"zipcode\": \"EC1R 5DT\"\n\t }\n },\n \"applications\": [{\n \t\"job_id\": \"1234\"\n }]\n}", "language": "http" }, { "code": "import json\nimport requests\n\nconnector_id = '123'\nusername = 'username'\npassword = 'password'\n\nurl = \"https://api.rolepoint-connect.com/v1/{}/candidate\".format(\n connector_id\n)\n\nheaders = {\n \"content-type\": \"application/rolepoint.v2+json\",\n \"accept\": \"application/rolepoint.v2+json\",\n 'X-RolePoint-Callback-Url': 'https://example.com/send-candidate-callback'\n}\n\npayload = json.dumps({\n \"source\": \"example\",\n \"candidate\": {\n \"email\": \"test@example.com\",\n \"first_name\": \"James\",\n \"last_name\": \"Test\",\n \"cv_file\": \"\",\n\t \"location\": {\n \t \"city\": \"London\",\n\t \"country\": \"UK\",\n \t \"zipcode\": \"EC1R 5DT\"\n\t }\n },\n \"applications\": [{\n \t\"job_id\": \"1234\"\n }]\n})\n\nresponse = requests.post(\n url, data=payload, headers=headers, auth=(username, password)\n)\n\nprint(response.text)", "language": "python" } ], "sidebar": true } [/block] [block:textarea] { "text": "## Final Result", "sidebar": true } [/block] [block:code] { "codes": [ { "code": " HTTP/1.1 200 OK\n Status: 200 OK\n Content-Type: application/rolepoint.v2+json\n\n{\n \"candidate_id\": 1234,\n \"candidate_created\": True\n \"application_ids\": {\n\t \"1234\": 4675\n }\n}", "language": "http" } ], "sidebar": true } [/block] [block:callout] { "type": "info", "title": "Asynchronous Endpoint", "body": "This endpoint is asynchronous. See the [Asynchronous Requests](doc:asynchronous-requests) documentation for more details." } [/block] ## Request Body [block:parameters] { "data": { "0-0": "candidate", "h-0": "Attribute", "h-1": "Type", "h-2": "Required", "h-3": "Description", "0-1": "[Candidate](doc:resources)", "0-2": "True", "0-3": "The Candidate entity the application(s) is for.", "1-0": "applications", "1-1": "list<[Application](doc:application)>", "1-2": "True", "1-3": "The job(s) the Candidate is applying for.", "2-0": "source", "2-1": "string", "2-2": "False", "2-3": "The ID which specifies the source that the application was made through." }, "cols": 4, "rows": 3 } [/block] [block:callout] { "type": "warning", "title": "Potential Errors", "body": "The endpoint can return errors if the payload is malformed. The response\nin this case will contain the following fields:\n\n PUT /v1/123/candidate HTTP/1.1\n\n HTTP/1.1 422 Unprocessable Entity\n Status: 422 Unprocessable Entity\n\n {\n \"message\": \"JSON does not match expected schema\",\n \"errors\": [\n \"empty values not allowed for field 'first_name'\",\n \"empty values not allowed for field 'last_name'\"\n ]\n }" } [/block]
{"_id":"56e18912686c7d20008606d0","createdAt":"2016-03-10T14:47:46.450Z","excerpt":"Get the result of calling POST candidate","isReference":true,"link_url":"","parentDoc":null,"slug":"send-candidate-result","sync_unique":"","api":{"auth":"required","examples":{"codes":[{"language":"http","code":"GET /123/applications/f586c5aa-842d-4e49-bcca-876a11e82ede/result HTTP/1.1\nHost: api.rolepoint-connect.com\nAccept: application/rolepoint.v2+json\nAuthorization: xxxxx"},{"language":"python","code":"import json\nimport requests\n\nconnector_id = '123'\nusername = 'username'\npassword = 'password'\nrequest_id = ''\n\nurl = \"https://api.rolepoint-connect.com/v1/{}/applications/{}/result\".format(\n  connector_id, request_id\n)\n\nresponse = requests.get(\n  url, auth=(username, password)\n)\n\nprint(response.text)"}]},"method":"get","params":[{"ref":"","required":false,"desc":"The ID of your connector","default":"","type":"string","name":"connector_id","in":"query","_id":"56e18912686c7d20008606d2"},{"type":"string","name":"request_id","in":"path","_id":"56e18912686c7d20008606d1","ref":"","required":false,"desc":"The ID of the asynchronous request as returned in the initial request.","default":""}],"results":{"codes":[{"name":"Success Result","status":200,"language":"json","code":"{\n  \"candidate_id\": 1234,\n  \"candidate_created\": True\n  \"application_ids\": {\n    \"1234\": 4675\n  }\n}"}]},"settings":"","url":"/applications/:request_id/result"},"type":"get","title":"Send Candidate Result","category":"56d8457a9d27560b00a4cc17","githubsync":"","order":1,"version":"569e609aebbadc0d0079bed0","editedParams2":true,"hidden":false,"project":"569e6099ebbadc0d0079becd","editedParams":true,"body":"Once application creation is finished, you can get the result using the\n`result_info.url` field returned in the status (either from a callback or the complete status).  You should issue a `GET` request to that URL.\n\nThe result will contain `candidate_id` and `candidate_created` fields, with an `application_ids` object:\n\n* `candidate_id` - The ID of the candidate that was created.\n* `candidate_created` - True/False relating to whether the candidate was\n    created within the ATS. True indicates the candidate was created as a\n    result of this request. False indicates the candidate already existed in\n    the ATS.\n* `application_ids` - An object that maps the ID of the job that the\n    application was created for to the ID of the application itself. This will\n    be null if no applications were provided in the initial request.\n\nDepending on data provided by the underlying ATS, both ID & application IDs may\nbe null.","link_external":false,"updates":[],"user":"56cc98fcb4cbcf0b004a6009","__v":0,"childrenPages":[]}

getSend Candidate Result

Get the result of calling POST candidate

Path Params

request_id:
string
The ID of the asynchronous request as returned in the initial request.

Query Params

connector_id:
string
The ID of your connector
Once application creation is finished, you can get the result using the `result_info.url` field returned in the status (either from a callback or the complete status). You should issue a `GET` request to that URL. The result will contain `candidate_id` and `candidate_created` fields, with an `application_ids` object: * `candidate_id` - The ID of the candidate that was created. * `candidate_created` - True/False relating to whether the candidate was created within the ATS. True indicates the candidate was created as a result of this request. False indicates the candidate already existed in the ATS. * `application_ids` - An object that maps the ID of the job that the application was created for to the ID of the application itself. This will be null if no applications were provided in the initial request. Depending on data provided by the underlying ATS, both ID & application IDs may be null.

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



Once application creation is finished, you can get the result using the `result_info.url` field returned in the status (either from a callback or the complete status). You should issue a `GET` request to that URL. The result will contain `candidate_id` and `candidate_created` fields, with an `application_ids` object: * `candidate_id` - The ID of the candidate that was created. * `candidate_created` - True/False relating to whether the candidate was created within the ATS. True indicates the candidate was created as a result of this request. False indicates the candidate already existed in the ATS. * `application_ids` - An object that maps the ID of the job that the application was created for to the ID of the application itself. This will be null if no applications were provided in the initial request. Depending on data provided by the underlying ATS, both ID & application IDs may be null.
{"_id":"56e18977a8306d29001ce8ad","project":"569e6099ebbadc0d0079becd","updates":[],"__v":0,"editedParams2":true,"hidden":false,"isReference":true,"link_url":"","excerpt":"Runs a search of candidates and returns the IDs of candidates that match.","title":"Find Candidates","user":"56cc98fcb4cbcf0b004a6009","version":"569e609aebbadc0d0079bed0","slug":"find-candidates","sync_unique":"","api":{"results":{"codes":[{"status":200,"language":"json","code":"{\"request_status_url\": \"https://api.rolepoint-connect.com/123/requests/456/status\"}","name":""}]},"settings":"","url":"/find_candidates","auth":"required","examples":{"codes":[{"code":"POST /v1/123/find_candidates HTTP/1.1\nHost: api.rolepoint-connect.com\nAccept: application/rolepoint.v2+json\nContent-Type: application/rolepoint.v2+json\nAuthorization: xxxxx\nX-RolePoint-Callback-Url: https://yourdomain.com/find-candidates-callback\n\n{\n  \"filters\": [\n    {\n      \"operator\": \"==\",\n      \"field\": \"email\",\n      \"value\": \"test@example.com\"\n    },\n    {\n      \"operator\": \"daterange\",\n      \"field\": \"created_datetime\",\n      \"daterange\": {\n        \"start\": \"2012-01-25\",\n        \"end\": \"2012-01-30\"\n      }\n    }\n  ]\n}","language":"http"},{"language":"python","code":"import json\nimport requests\n\nconnector_id = '123'\nusername = 'username'\npassword = 'password'\n\nurl = \"https://api.rolepoint-connect.com/v1/{}/find_candidates\".format(\n  connector_id\n)\n\nheaders = {\n  \"content-type\": \"application/rolepoint.v2+json\",\n  \"accept\": \"application/rolepoint.v2+json\",\n  'X-RolePoint-Callback-Url': 'https://example.com/find-candidates-callback'\n}\n\npayload = json.dumps({\n  \"filters\": [\n    {\n      \"operator\": \"==\",\n      \"field\": \"email\",\n      \"value\": \"test@example.com\"\n    },\n    {\n      \"operator\": \"daterange\",\n      \"field\": \"created_datetime\",\n      \"daterange\": {\n        \"start\": \"2012-01-25\",\n        \"end\": \"2012-01-30\"\n      }\n    }\n  ]\n})\n\nresponse = requests.post(\n  url, data=payload, headers=headers, auth=(username, password)\n)\n\nprint(response.text)"}]},"method":"post","params":[{"ref":"","required":false,"desc":"The ID of your connector.","default":"","type":"string","name":"connector_id","in":"body","_id":"56e18977a8306d29001ce8ae"}]},"category":"56d8457a9d27560b00a4cc17","createdAt":"2016-03-10T14:49:27.780Z","order":2,"parentDoc":null,"body":"[block:callout]\n{\n  \"type\": \"info\",\n  \"body\": \"This endpoint is asynchronous. See the [Asynchronous Requests](doc:asynchronous-requests) documentation for more details.\",\n  \"title\": \"Asynchronous Endpoint\"\n}\n[/block]\n## Request Body\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Attribute\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Required\",\n    \"h-3\": \"Description\",\n    \"0-0\": \"filters\",\n    \"0-1\": \"list<[Filter](#section-filters)>\",\n    \"0-2\": \"True\",\n    \"0-3\": \"A list of the filters to use in the query\"\n  },\n  \"cols\": 4,\n  \"rows\": 1\n}\n[/block]\n### Filters\n\nYou must supply at least 1 filter to find candidates. These filters have a schema of the form:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Attribute\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Required\",\n    \"h-3\": \"Description\",\n    \"0-0\": \"operator\",\n    \"0-1\": \"string\",\n    \"0-2\": \"True\",\n    \"0-3\": \"The [operator](#section-operators) to use in the filter\",\n    \"1-0\": \"field\",\n    \"2-0\": \"value\",\n    \"3-0\": \"daterange.start\",\n    \"1-1\": \"string\",\n    \"2-1\": \"string\",\n    \"4-0\": \"daterange.end\",\n    \"3-1\": \"date\",\n    \"4-1\": \"date\",\n    \"3-2\": \"True if `operator`is `daterange`\",\n    \"4-2\": \"True if `operator`is `daterange`\",\n    \"2-2\": \"True if `operator`is `==`\",\n    \"1-2\": \"True\",\n    \"1-3\": \"The [field](#section-fields) to filter on\",\n    \"2-3\": \"The value to filter by\",\n    \"3-3\": \"An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formatted date (YYYY-MM-DD)\",\n    \"4-3\": \"An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formatted date (YYYY-MM-DD).\"\n  },\n  \"cols\": 4,\n  \"rows\": 5\n}\n[/block]\n### Operators\n* `==` - The provided `value` must be an exact match for the given `field`.\n* `daterange` - The value in the ATS of the `field` must be between the `start` and `end` dates given in the `daterange`.\n\n### Fields\n* `email` - The email address of the candidate you wish to find. \n* `created_datetime` - When the candidate was created.\n* `modified_datetime` - When the candidate was last modified.\n\n### Operator Attributes\n* `value` - Currently `value` should only be supplied if `operator` is `==`.\n* `daterange` - The timespan specified between `start` and `end` must be a maximum of 7 days. This *must* be populated when `operator` is `daterange`.\n    * `start` - An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formatted date (YYYY-MM-DD).\n    * `end` - An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formatted date (YYYY-MM-DD).\n\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"operator\\\": \\\"==\\\",\\n  \\\"field\\\": \\\"email\\\",\\n  \\\"value\\\": \\\"test@example.com\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Example email filter\"\n    }\n  ],\n  \"sidebar\": true\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"operator\\\": \\\"daterange\\\",\\n  \\\"field\\\": \\\"created_datetime\\\",\\n  \\\"daterange\\\": {\\n    \\\"start\\\": \\\"2012-01-25\\\",\\n    \\\"end\\\": \\\"2012-01-30\\\"\\n  }\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Example created_datetime filter\"\n    }\n  ],\n  \"sidebar\": true\n}\n[/block]\nWe can combine these to make a request for any candidates with the email address `test@example.com` created between `2012-01-25` and `2012-01-30`:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"POST /v1/123/find_candidates HTTP/1.1\\nHost: api.rolepoint-connect.com\\nAccept: application/rolepoint.v2+json\\nContent-Type: application/rolepoint.v2+json\\nAuthorization: xxxxx\\n\\n{\\n  \\\"filters\\\": [\\n    {\\n      \\\"operator\\\": \\\"==\\\",\\n      \\\"field\\\": \\\"email\\\",\\n      \\\"value\\\": \\\"test@example.com\\\"\\n    },\\n    {\\n      \\\"operator\\\": \\\"daterange\\\",\\n      \\\"field\\\": \\\"created_datetime\\\",\\n      \\\"daterange\\\": {\\n        \\\"start\\\": \\\"2012-01-25\\\",\\n        \\\"end\\\": \\\"2012-01-30\\\"\\n      }\\n    }\\n  ]\\n}\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]","editedParams":true,"githubsync":"","link_external":false,"type":"post","childrenPages":[]}

postFind Candidates

Runs a search of candidates and returns the IDs of candidates that match.

Body Params

connector_id:
string
The ID of your connector.
[block:callout] { "type": "info", "body": "This endpoint is asynchronous. See the [Asynchronous Requests](doc:asynchronous-requests) documentation for more details.", "title": "Asynchronous Endpoint" } [/block] ## Request Body [block:parameters] { "data": { "h-0": "Attribute", "h-1": "Type", "h-2": "Required", "h-3": "Description", "0-0": "filters", "0-1": "list<[Filter](#section-filters)>", "0-2": "True", "0-3": "A list of the filters to use in the query" }, "cols": 4, "rows": 1 } [/block] ### Filters You must supply at least 1 filter to find candidates. These filters have a schema of the form: [block:parameters] { "data": { "h-0": "Attribute", "h-1": "Type", "h-2": "Required", "h-3": "Description", "0-0": "operator", "0-1": "string", "0-2": "True", "0-3": "The [operator](#section-operators) to use in the filter", "1-0": "field", "2-0": "value", "3-0": "daterange.start", "1-1": "string", "2-1": "string", "4-0": "daterange.end", "3-1": "date", "4-1": "date", "3-2": "True if `operator`is `daterange`", "4-2": "True if `operator`is `daterange`", "2-2": "True if `operator`is `==`", "1-2": "True", "1-3": "The [field](#section-fields) to filter on", "2-3": "The value to filter by", "3-3": "An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formatted date (YYYY-MM-DD)", "4-3": "An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formatted date (YYYY-MM-DD)." }, "cols": 4, "rows": 5 } [/block] ### Operators * `==` - The provided `value` must be an exact match for the given `field`. * `daterange` - The value in the ATS of the `field` must be between the `start` and `end` dates given in the `daterange`. ### Fields * `email` - The email address of the candidate you wish to find. * `created_datetime` - When the candidate was created. * `modified_datetime` - When the candidate was last modified. ### Operator Attributes * `value` - Currently `value` should only be supplied if `operator` is `==`. * `daterange` - The timespan specified between `start` and `end` must be a maximum of 7 days. This *must* be populated when `operator` is `daterange`. * `start` - An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formatted date (YYYY-MM-DD). * `end` - An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formatted date (YYYY-MM-DD). [block:code] { "codes": [ { "code": "{\n \"operator\": \"==\",\n \"field\": \"email\",\n \"value\": \"test@example.com\"\n}", "language": "json", "name": "Example email filter" } ], "sidebar": true } [/block] [block:code] { "codes": [ { "code": "{\n \"operator\": \"daterange\",\n \"field\": \"created_datetime\",\n \"daterange\": {\n \"start\": \"2012-01-25\",\n \"end\": \"2012-01-30\"\n }\n}", "language": "json", "name": "Example created_datetime filter" } ], "sidebar": true } [/block] We can combine these to make a request for any candidates with the email address `test@example.com` created between `2012-01-25` and `2012-01-30`: [block:code] { "codes": [ { "code": "POST /v1/123/find_candidates HTTP/1.1\nHost: api.rolepoint-connect.com\nAccept: application/rolepoint.v2+json\nContent-Type: application/rolepoint.v2+json\nAuthorization: xxxxx\n\n{\n \"filters\": [\n {\n \"operator\": \"==\",\n \"field\": \"email\",\n \"value\": \"test@example.com\"\n },\n {\n \"operator\": \"daterange\",\n \"field\": \"created_datetime\",\n \"daterange\": {\n \"start\": \"2012-01-25\",\n \"end\": \"2012-01-30\"\n }\n }\n ]\n}", "language": "http" } ] } [/block]

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



[block:callout] { "type": "info", "body": "This endpoint is asynchronous. See the [Asynchronous Requests](doc:asynchronous-requests) documentation for more details.", "title": "Asynchronous Endpoint" } [/block] ## Request Body [block:parameters] { "data": { "h-0": "Attribute", "h-1": "Type", "h-2": "Required", "h-3": "Description", "0-0": "filters", "0-1": "list<[Filter](#section-filters)>", "0-2": "True", "0-3": "A list of the filters to use in the query" }, "cols": 4, "rows": 1 } [/block] ### Filters You must supply at least 1 filter to find candidates. These filters have a schema of the form: [block:parameters] { "data": { "h-0": "Attribute", "h-1": "Type", "h-2": "Required", "h-3": "Description", "0-0": "operator", "0-1": "string", "0-2": "True", "0-3": "The [operator](#section-operators) to use in the filter", "1-0": "field", "2-0": "value", "3-0": "daterange.start", "1-1": "string", "2-1": "string", "4-0": "daterange.end", "3-1": "date", "4-1": "date", "3-2": "True if `operator`is `daterange`", "4-2": "True if `operator`is `daterange`", "2-2": "True if `operator`is `==`", "1-2": "True", "1-3": "The [field](#section-fields) to filter on", "2-3": "The value to filter by", "3-3": "An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formatted date (YYYY-MM-DD)", "4-3": "An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formatted date (YYYY-MM-DD)." }, "cols": 4, "rows": 5 } [/block] ### Operators * `==` - The provided `value` must be an exact match for the given `field`. * `daterange` - The value in the ATS of the `field` must be between the `start` and `end` dates given in the `daterange`. ### Fields * `email` - The email address of the candidate you wish to find. * `created_datetime` - When the candidate was created. * `modified_datetime` - When the candidate was last modified. ### Operator Attributes * `value` - Currently `value` should only be supplied if `operator` is `==`. * `daterange` - The timespan specified between `start` and `end` must be a maximum of 7 days. This *must* be populated when `operator` is `daterange`. * `start` - An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formatted date (YYYY-MM-DD). * `end` - An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formatted date (YYYY-MM-DD). [block:code] { "codes": [ { "code": "{\n \"operator\": \"==\",\n \"field\": \"email\",\n \"value\": \"test@example.com\"\n}", "language": "json", "name": "Example email filter" } ], "sidebar": true } [/block] [block:code] { "codes": [ { "code": "{\n \"operator\": \"daterange\",\n \"field\": \"created_datetime\",\n \"daterange\": {\n \"start\": \"2012-01-25\",\n \"end\": \"2012-01-30\"\n }\n}", "language": "json", "name": "Example created_datetime filter" } ], "sidebar": true } [/block] We can combine these to make a request for any candidates with the email address `test@example.com` created between `2012-01-25` and `2012-01-30`: [block:code] { "codes": [ { "code": "POST /v1/123/find_candidates HTTP/1.1\nHost: api.rolepoint-connect.com\nAccept: application/rolepoint.v2+json\nContent-Type: application/rolepoint.v2+json\nAuthorization: xxxxx\n\n{\n \"filters\": [\n {\n \"operator\": \"==\",\n \"field\": \"email\",\n \"value\": \"test@example.com\"\n },\n {\n \"operator\": \"daterange\",\n \"field\": \"created_datetime\",\n \"daterange\": {\n \"start\": \"2012-01-25\",\n \"end\": \"2012-01-30\"\n }\n }\n ]\n}", "language": "http" } ] } [/block]
{"_id":"56e1c39fd2f9771900df1cf9","api":{"auth":"required","examples":{"codes":[{"code":"GET /v1/123/find_candidates/f586c5aa-842d-4e49-bcca-876a11e82ede/result HTTP/1.1\nHost: api.rolepoint-connect.com\nAccept: application/rolepoint.v2+json\nAuthorization: xxxxx","language":"http"},{"language":"python","code":"import json\nimport requests\n\nconnector_id = '123'\nusername = 'username'\npassword = 'password'\nrequest_id = ''\n\nurl = \"https://api.rolepoint-connect.com/v1/{}/find_candidates/{}/result\".format(\n  connector_id, request_id\n)\n\nresponse = requests.get(url, auth=(username, password))\n\nprint(response.text)"}]},"method":"get","params":[{"ref":"","required":false,"type":"string","in":"query","_id":"56e1c39fd2f9771900df1cfb","default":"","desc":"The ID of your connector","name":"connector_id"},{"in":"path","_id":"56e1c39fd2f9771900df1cfa","ref":"","required":false,"desc":"The ID of the request as returned from the Find Candidates endpoint","default":"","type":"string","name":"request_id"}],"results":{"codes":[{"status":200,"language":"json","code":"{\"candidate_ids\": [\"1\", \"2\"]}","name":""}]},"settings":"","url":"/find_candidates/:request_id/result"},"body":"The result will be of the form:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\\"candidate_ids\\\": [\\\"1\\\", \\\"2\\\"]}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nThe list of `candidate_ids` are RolePoint Connect id's for\ncandidates found, which can be used in [get candidate](doc:get-candidate) requests, detailed below","isReference":true,"sync_unique":"","__v":0,"editedParams2":true,"link_external":false,"title":"Find Candidates Result","type":"get","version":"569e609aebbadc0d0079bed0","link_url":"","order":3,"slug":"find-candidates-result","category":"56d8457a9d27560b00a4cc17","editedParams":true,"excerpt":"","githubsync":"","hidden":false,"parentDoc":null,"project":"569e6099ebbadc0d0079becd","updates":[],"createdAt":"2016-03-10T18:57:35.473Z","user":"56cc98fcb4cbcf0b004a6009","childrenPages":[]}

getFind Candidates Result


Path Params

request_id:
string
The ID of the request as returned from the Find Candidates endpoint

Query Params

connector_id:
string
The ID of your connector
The result will be of the form: [block:code] { "codes": [ { "code": "{\"candidate_ids\": [\"1\", \"2\"]}", "language": "json" } ] } [/block] The list of `candidate_ids` are RolePoint Connect id's for candidates found, which can be used in [get candidate](doc:get-candidate) requests, detailed below

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



The result will be of the form: [block:code] { "codes": [ { "code": "{\"candidate_ids\": [\"1\", \"2\"]}", "language": "json" } ] } [/block] The list of `candidate_ids` are RolePoint Connect id's for candidates found, which can be used in [get candidate](doc:get-candidate) requests, detailed below
{"_id":"56e1c2ce4241650e005b7c9f","body":"An asynchronous request to get the details of a candidate.\n[block:callout]\n{\n  \"type\": \"info\",\n  \"body\": \"This endpoint is asynchronous. See the [Asynchronous Requests](doc:asynchronous-requests) documentation for more details.\",\n  \"title\": \"Asynchronous Endpoint\"\n}\n[/block]","editedParams2":true,"excerpt":"Get a candidates details from the ATS using their ID","link_external":false,"updates":[],"title":"Get Candidate","__v":0,"category":"56d8457a9d27560b00a4cc17","githubsync":"","isReference":true,"link_url":"","slug":"get-candidate","sync_unique":"","version":"569e609aebbadc0d0079bed0","api":{"params":[{"type":"string","in":"query","_id":"56e1c2ce4241650e005b7ca1","default":"","desc":"The ID of your connector","name":"connector_id","ref":"","required":false},{"default":"","type":"string","name":"candidate_id","in":"path","_id":"56e1c2ce4241650e005b7ca0","ref":"","required":false,"desc":"The ID of the candidate, as returned by \"Find Candidate\" or \"Send Candidate\""}],"results":{"codes":[{"name":"","code":"{\"request_status_url\": \"https://api.rolepoint-connect.com/123/requests/456/status\"}","language":"json","status":200}]},"settings":"","url":"/candidate/:candidate_id","auth":"required","examples":{"codes":[{"language":"http","code":"GET /v1/123/candidate/2 HTTP/1.1\nHost: api.rolepoint-connect.com\nAccept: application/rolepoint.v2+json\nContent-Type: application/rolepoint.v2+json\nAuthorization: xxxxx\nX-RolePoint-Callback-Url: https://yourdomain.com/get-candidate-callback"},{"language":"python","code":"import json\nimport requests\n\nconnector_id = '123'\nusername = 'username'\npassword = 'password'\ncandidate_id = ''\n\nurl = \"https://api.rolepoint-connect.com/v1/{}/candidate/{}\".format(\n  connector_id, candidate_id\n)\n\nheaders = {\n  \"content-type\": \"application/rolepoint.v2+json\",\n  \"accept\": \"application/rolepoint.v2+json\",\n  'X-RolePoint-Callback-Url': 'https://example.com/find-candidates-callback'\n}\n\nresponse = requests.get(\n  url, headers=headers, auth=(username, password)\n)\n\nprint(response.text)"}]},"method":"get"},"editedParams":true,"hidden":false,"createdAt":"2016-03-10T18:54:06.103Z","order":4,"parentDoc":null,"project":"569e6099ebbadc0d0079becd","type":"get","user":"56cc98fcb4cbcf0b004a6009","childrenPages":[]}

getGet Candidate

Get a candidates details from the ATS using their ID

Path Params

candidate_id:
string
The ID of the candidate, as returned by "Find Candidate" or "Send Candidate"

Query Params

connector_id:
string
The ID of your connector
An asynchronous request to get the details of a candidate. [block:callout] { "type": "info", "body": "This endpoint is asynchronous. See the [Asynchronous Requests](doc:asynchronous-requests) documentation for more details.", "title": "Asynchronous Endpoint" } [/block]

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



An asynchronous request to get the details of a candidate. [block:callout] { "type": "info", "body": "This endpoint is asynchronous. See the [Asynchronous Requests](doc:asynchronous-requests) documentation for more details.", "title": "Asynchronous Endpoint" } [/block]
{"_id":"56e1c36936b3bb3400cd0b08","excerpt":"","isReference":true,"link_url":"","createdAt":"2016-03-10T18:56:41.703Z","githubsync":"","project":"569e6099ebbadc0d0079becd","api":{"url":"/get_candidate/:request_id/result","auth":"required","examples":{"codes":[{"language":"http","code":"GET /v1/123/get_candidate/f586c5aa-842d-4e49-bcca-876a11e82ede/result HTTP/1.1\nHost: api.rolepoint-connect.com\nAccept: application/rolepoint.v2+json\nAuthorization: xxxxx"},{"language":"python","code":"import json\nimport requests\n\nconnector_id = '123'\nusername = 'username'\npassword = 'password'\nrequest_id = ''\n\nurl = \"https://api.rolepoint-connect.com/v1/{}/get_candidate/{}/result\".format(\n  connector_id, request_id\n)\n\nresponse = requests.get(url, auth=(username, password))\n\nprint(response.text)"}]},"method":"get","params":[{"_id":"56e1c36936b3bb3400cd0b0a","default":"","desc":"The ID of your connector","name":"connector_id","ref":"","required":false,"type":"string","in":"query"},{"in":"path","_id":"56e1c36936b3bb3400cd0b09","default":"","desc":"The ID of the request that was returned from the Get Candidate endpoint.","name":"request_id","ref":"","required":false,"type":"string"}],"results":{"codes":[{"language":"json","status":200,"name":"","code":"{\n  \"candidate\": {\n    \"email\": \"test+candidate@test.com\",\n    \"first_name\": \"Test\",\n    \"last_name\": \"Candidate\",\n    \"last_updated\": \"\",\n    \"phone\": \"+447999 999 999\",\n    \"source\": \"RolePoint Careers\"\n  }\n}"}]},"settings":""},"body":"The form of the result of the Get Candidate task is dependent on the ATS and\nthe Connector Configuration. The only guaranteed fields are `first_name`,\n'last_name`, 'last_updated` and `email`.\n\nThe entirety of the possible response is as documented below, for a description of required/response_optional see [schema](#schema):\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"candidate\\\": {\\n    \\\"email\\\": required - <string>\\n    \\\"first_name\\\": required - <string>,\\n    \\\"last_name\\\": required - <string>,\\n    \\\"last_updated\\\": required - <string>,\\n    \\\"phone\\\": optional - <string>,\\n    \\\"referrer\\\": optional - <string>,\\n    \\\"source\\\": optional - <string>\\n  }\\n}\",\n      \"language\": \"python\"\n    }\n  ]\n}\n[/block]\nWhere:\n\n* `email` - The email of the candidate\n* `first_name` - The first name of the candidate\n* `last_name` - The last name of the candidate\n* `last_updated` - The last time that the candidate was updated, formatted in a\n    string according to [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\n* `phone` - The contact phone number of the candidate\n* `referrer` - The referrer that referred the candidate\n* `source` - The source that was in the session when the candidate was created","link_external":false,"order":5,"parentDoc":null,"sync_unique":"","title":"Get Candidate Result","editedParams":true,"editedParams2":true,"hidden":false,"type":"get","updates":[],"user":"56cc98fcb4cbcf0b004a6009","version":"569e609aebbadc0d0079bed0","__v":0,"category":"56d8457a9d27560b00a4cc17","slug":"get-candidate-result","childrenPages":[]}

getGet Candidate Result


Path Params

request_id:
string
The ID of the request that was returned from the Get Candidate endpoint.

Query Params

connector_id:
string
The ID of your connector
The form of the result of the Get Candidate task is dependent on the ATS and the Connector Configuration. The only guaranteed fields are `first_name`, 'last_name`, 'last_updated` and `email`. The entirety of the possible response is as documented below, for a description of required/response_optional see [schema](#schema): [block:code] { "codes": [ { "code": "{\n \"candidate\": {\n \"email\": required - <string>\n \"first_name\": required - <string>,\n \"last_name\": required - <string>,\n \"last_updated\": required - <string>,\n \"phone\": optional - <string>,\n \"referrer\": optional - <string>,\n \"source\": optional - <string>\n }\n}", "language": "python" } ] } [/block] Where: * `email` - The email of the candidate * `first_name` - The first name of the candidate * `last_name` - The last name of the candidate * `last_updated` - The last time that the candidate was updated, formatted in a string according to [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) * `phone` - The contact phone number of the candidate * `referrer` - The referrer that referred the candidate * `source` - The source that was in the session when the candidate was created

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



The form of the result of the Get Candidate task is dependent on the ATS and the Connector Configuration. The only guaranteed fields are `first_name`, 'last_name`, 'last_updated` and `email`. The entirety of the possible response is as documented below, for a description of required/response_optional see [schema](#schema): [block:code] { "codes": [ { "code": "{\n \"candidate\": {\n \"email\": required - <string>\n \"first_name\": required - <string>,\n \"last_name\": required - <string>,\n \"last_updated\": required - <string>,\n \"phone\": optional - <string>,\n \"referrer\": optional - <string>,\n \"source\": optional - <string>\n }\n}", "language": "python" } ] } [/block] Where: * `email` - The email of the candidate * `first_name` - The first name of the candidate * `last_name` - The last name of the candidate * `last_updated` - The last time that the candidate was updated, formatted in a string according to [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) * `phone` - The contact phone number of the candidate * `referrer` - The referrer that referred the candidate * `source` - The source that was in the session when the candidate was created
{"_id":"56e1647e7e3fc43600cad433","project":"569e6099ebbadc0d0079becd","title":"Async Request Status","__v":0,"createdAt":"2016-03-10T12:11:42.867Z","editedParams":true,"hidden":false,"isReference":true,"category":"56d8457a9d27560b00a4cc17","editedParams2":true,"githubsync":"","link_external":false,"type":"get","parentDoc":null,"slug":"get-async-request-status","user":"56cc98fcb4cbcf0b004a6009","body":"[block:callout]\n{\n  \"type\": \"warning\",\n  \"body\": \"We recommend using the callback functionality rather than polling Connect. Each request to Connect can map to one or more requests to the ATS, which could potentially take a while to process. By sending a callback, we reduce the need to make several needless connections over what could be an extended period of time.\",\n  \"title\": \"Polling not recommended\"\n}\n[/block]\nTo get the status of creation of an asynchronous request, you can query the\n`request_status_url` provided when the request was created.\n\nAs part of the response, we include an `X-Poll-Interval` header which specifies how long (in seconds) until you are allowed to make another request.\n\nFor example:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"GET /v1/123/requests/f586c5aa-842d-4e49-bcca-876a11e82ede/status HTTP/1.1\\nHost: api.rolepoint-connect.com\\nAccept: application/rolepoint.v2+json\\nAuthorization: xxxxx\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\nIf the request is still in progress, this will respond:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"HTTP/1.1 200 OK\\nStatus: 200 OK\\nContent-Type: application/rolepoint.v2+json\\n\\n{\\n  \\\"status\\\": \\\"in_progress\\\",\\n  \\\"result_info\\\": null,\\n  \\\"error_info\\\": null\\n}\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\nIf the request is finished, this will respond:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"HTTP/1.1 200 OK\\nStatus: 200 OK\\nContent-Type: application/rolepoint.v2+json\\n\\n{\\n  \\\"status\\\": \\\"complete\\\",\\n  \\\"result_info\\\": {\\n    \\\"url\\\": \\\"https://api.rolepoint-connect.com/\\\",\\n    \\\"ttl\\\": 123\\n  },\\n  \\\"error_info\\\": null\\n}\\n\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\n`result_info` contains 2 fields:\n\n* `url` - This is the URL you can query to get the result of the application\n  creation.\n* `ttl` - This is the time that the application result will remain available\n  for in seconds.\n\nA failed response will contain the following fields:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"HTTP/1.1 200 OK\\nStatus: 200 OK\\nContent-Type: application/rolepoint.v2+json\\n\\n{\\n  \\\"status\\\": \\\"failed\\\",\\n  \\\"result_info\\\": {\\n    \\\"url\\\": null,\\n    \\\"ttl\\\": 123\\n  },\\n  \\\"error_info\\\": {\\n    \\\"message\\\": \\\"Message describing the error that occured\\\",\\n    \\\"code\\\": 123\\n  }\\n}\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\n`error_info` contains 2 fields:\n\n* `message` - This is the error message relating to the reason the request\n    failed.\n* `code` - This is the error code relating to the reason the request failed.","excerpt":"Endpoint for getting the status of an asynchronous request","link_url":"","order":6,"api":{"auth":"required","examples":{"codes":[{"language":"http","code":"GET /v1/123/requests/f586c5aa-842d-4e49-bcca-876a11e82ede/status HTTP/1.1\nHost: api.rolepoint-connect.com\nAccept: application/rolepoint.v2+json\nAuthorization: xxxxx"},{"language":"python","code":"import json\nimport requests\n\nconnector_id = '123'\nusername = 'username'\npassword = 'password'\nrequest_id = ''\n\nurl = \"https://api.rolepoint-connect.com/v1/{}/requests/{}/status\".format(\n  connector_id, request_id\n)\n\nresponse = requests.get(url, auth=(username, password))\n\nprint(response.text)"}]},"method":"get","params":[{"name":"connector_id","ref":"","required":false,"type":"string","in":"query","_id":"56e1647e7e3fc43600cad435","default":"","desc":"The ID of your connector."},{"name":"request_id","in":"path","_id":"56e1647e7e3fc43600cad434","ref":"","required":false,"desc":"The ID of the asynchronous request as returned in the initial request.","default":"","type":"string"}],"results":{"codes":[{"name":"In progress","code":"{\n  \"status\": \"in_progress\",\n  \"result_info\": null,\n  \"error_info\": null\n}","language":"json","status":200},{"name":null,"code":"{\n  \"status\": \"complete\",\n  \"result_info\": {\n    \"url\": \"https://api.rolepoint-connect.com/\",\n    \"ttl\": 123\n  },\n  \"error_info\": null\n}","language":"json","status":200},{"language":"json","status":200,"name":"Failed","code":"{\n  \"status\": \"failed\",\n  \"result_info\": {\n    \"url\": null,\n    \"ttl\": 123\n  },\n  \"error_info\": {\n    \"message\": \"Message describing the error that occured\",\n    \"code\": 123\n  }\n}"}]},"settings":"","url":"/requests/:request_id/status"},"sync_unique":"","updates":[],"version":"569e609aebbadc0d0079bed0","childrenPages":[]}

getAsync Request Status

Endpoint for getting the status of an asynchronous request

Path Params

request_id:
string
The ID of the asynchronous request as returned in the initial request.

Query Params

connector_id:
string
The ID of your connector.
[block:callout] { "type": "warning", "body": "We recommend using the callback functionality rather than polling Connect. Each request to Connect can map to one or more requests to the ATS, which could potentially take a while to process. By sending a callback, we reduce the need to make several needless connections over what could be an extended period of time.", "title": "Polling not recommended" } [/block] To get the status of creation of an asynchronous request, you can query the `request_status_url` provided when the request was created. As part of the response, we include an `X-Poll-Interval` header which specifies how long (in seconds) until you are allowed to make another request. For example: [block:code] { "codes": [ { "code": "GET /v1/123/requests/f586c5aa-842d-4e49-bcca-876a11e82ede/status HTTP/1.1\nHost: api.rolepoint-connect.com\nAccept: application/rolepoint.v2+json\nAuthorization: xxxxx", "language": "http" } ] } [/block] If the request is still in progress, this will respond: [block:code] { "codes": [ { "code": "HTTP/1.1 200 OK\nStatus: 200 OK\nContent-Type: application/rolepoint.v2+json\n\n{\n \"status\": \"in_progress\",\n \"result_info\": null,\n \"error_info\": null\n}", "language": "http" } ] } [/block] If the request is finished, this will respond: [block:code] { "codes": [ { "code": "HTTP/1.1 200 OK\nStatus: 200 OK\nContent-Type: application/rolepoint.v2+json\n\n{\n \"status\": \"complete\",\n \"result_info\": {\n \"url\": \"https://api.rolepoint-connect.com/\",\n \"ttl\": 123\n },\n \"error_info\": null\n}\n", "language": "http" } ] } [/block] `result_info` contains 2 fields: * `url` - This is the URL you can query to get the result of the application creation. * `ttl` - This is the time that the application result will remain available for in seconds. A failed response will contain the following fields: [block:code] { "codes": [ { "code": "HTTP/1.1 200 OK\nStatus: 200 OK\nContent-Type: application/rolepoint.v2+json\n\n{\n \"status\": \"failed\",\n \"result_info\": {\n \"url\": null,\n \"ttl\": 123\n },\n \"error_info\": {\n \"message\": \"Message describing the error that occured\",\n \"code\": 123\n }\n}", "language": "http" } ] } [/block] `error_info` contains 2 fields: * `message` - This is the error message relating to the reason the request failed. * `code` - This is the error code relating to the reason the request failed.

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



[block:callout] { "type": "warning", "body": "We recommend using the callback functionality rather than polling Connect. Each request to Connect can map to one or more requests to the ATS, which could potentially take a while to process. By sending a callback, we reduce the need to make several needless connections over what could be an extended period of time.", "title": "Polling not recommended" } [/block] To get the status of creation of an asynchronous request, you can query the `request_status_url` provided when the request was created. As part of the response, we include an `X-Poll-Interval` header which specifies how long (in seconds) until you are allowed to make another request. For example: [block:code] { "codes": [ { "code": "GET /v1/123/requests/f586c5aa-842d-4e49-bcca-876a11e82ede/status HTTP/1.1\nHost: api.rolepoint-connect.com\nAccept: application/rolepoint.v2+json\nAuthorization: xxxxx", "language": "http" } ] } [/block] If the request is still in progress, this will respond: [block:code] { "codes": [ { "code": "HTTP/1.1 200 OK\nStatus: 200 OK\nContent-Type: application/rolepoint.v2+json\n\n{\n \"status\": \"in_progress\",\n \"result_info\": null,\n \"error_info\": null\n}", "language": "http" } ] } [/block] If the request is finished, this will respond: [block:code] { "codes": [ { "code": "HTTP/1.1 200 OK\nStatus: 200 OK\nContent-Type: application/rolepoint.v2+json\n\n{\n \"status\": \"complete\",\n \"result_info\": {\n \"url\": \"https://api.rolepoint-connect.com/\",\n \"ttl\": 123\n },\n \"error_info\": null\n}\n", "language": "http" } ] } [/block] `result_info` contains 2 fields: * `url` - This is the URL you can query to get the result of the application creation. * `ttl` - This is the time that the application result will remain available for in seconds. A failed response will contain the following fields: [block:code] { "codes": [ { "code": "HTTP/1.1 200 OK\nStatus: 200 OK\nContent-Type: application/rolepoint.v2+json\n\n{\n \"status\": \"failed\",\n \"result_info\": {\n \"url\": null,\n \"ttl\": 123\n },\n \"error_info\": {\n \"message\": \"Message describing the error that occured\",\n \"code\": 123\n }\n}", "language": "http" } ] } [/block] `error_info` contains 2 fields: * `message` - This is the error message relating to the reason the request failed. * `code` - This is the error code relating to the reason the request failed.
{"_id":"56df08b4b9d68f0e0073d7c2","api":{"auth":"required","params":[],"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"name":"","status":400,"language":"json","code":"{}"}]},"settings":"","url":""},"sync_unique":"","version":"569e609aebbadc0d0079bed0","parentDoc":null,"project":"569e6099ebbadc0d0079becd","category":"56df07cc0201330e0070f15b","createdAt":"2016-03-08T17:15:32.760Z","link_external":false,"link_url":"","order":0,"slug":"get-jobs-and-insert-candidates","title":"Get Jobs and Insert Candidate","type":"basic","updates":[],"__v":46,"excerpt":"","githubsync":"","hidden":false,"next":{"pages":[],"description":""},"user":"543d38fea10ab32000b3aa8f","body":"With Connect, it's simple to get job listings from the remote ATS then use those job details to insert candidate applications. \n\n## Getting Jobs \n\nJob listings are provided through Connect sending job details to a preconfigured [webhook](doc:webhooks). This is done periodically to ensure you always have the most up to date job postings from the ATS. First you need to setup an endpoint to receive the webhook events, as shown below.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"@app.route('random_webhook_url')\\ndef jobs_webhook_handler():\\n    for event in request.get_json(force=True):\\n        if event['event'] == 'job_add':\\n          # handle the job add event, for instance adding it to your database\\n            \\n\\t\\t# We return an empty response to Connect as it will retry callbacks otherwise.\\n    return '', 200\",\n      \"language\": \"python\"\n    }\n  ]\n}\n[/block]\nThis data can then be used to create an application form for current job postings. \n\n## Inserting Candidates\n\nWhen a candidate completes your job application form, we can now send their information to Connect with a simple `POST` request.\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"@app.route('/make_application', methods=['POST'])\\ndef make_application():\\n\\n    # Build our payload to include our candidate and the job they are applying\\n    # for.\\n    payload = {\\n      \\t'applications': [{'job_id': request.form['job_id']}],\\n      \\t'candidate': {\\n            'first_name': request.form['first_name'],\\n            'last_name': request.form['last_name'],\\n            'email': request.form['email']\\n        }\\n   \\t}\\n\\n    # We can choose to either include a callback header with our\\n    # request, or to poll until the application is complete. Here\\n    # we use the callback funtionality.\\n    headers = {\\n        'content-type': 'application/rolepoint.v2+json',\\n        'x-rolepoint-callback-url': url_for(\\n            'application_processed_callback', app_id=1, _external=True\\n        )\\n    }\\n    # Send the candidate to Connect for processing.\\n    requests.post(CONNECT_URL + '/candidate',\\n                  json=payload, auth=AUTH, headers=headers)\",\n      \"language\": \"python\"\n    }\n  ]\n}\n[/block]\nAs inserting candidates into Connect is an [asynchronous endpoint](doc:asynchronous-requests), we have passed a callback URL as part of our `POST` request. Once Connect has processed the candidate, it will send a request to this URL to notify us that the processing is complete.\n[block:callout]\n{\n  \"type\": \"info\",\n  \"body\": \"We recommend using the callback functionality rather than polling Connect. Each request to Connect can map to one or more requests to the ATS, which could take longer to process. By sending a callback we reduce the need to make several needless connections over an extended period of time. \\n\\nDon't worry, we'll let you know when it's done! :smile:\",\n  \"title\": \"Use Callbacks\"\n}\n[/block]\n## Candidate Application Complete Callback\n\nWe define this callback endpoint as below.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"@app.route('/application_processed_callback/<int:app_id>', methods=['POST'])\\ndef application_processed_callback(app_id):\\n    status = request.json['status']\\n    JOB_APPLICATIONS[app_id]['status'] = status\\n\\n    if status == 'complete':\\n        # The application has been processed and made it into the ATS.\\n        # As part of the response we are given a URL from where we can \\n        # request the details of the processed candidate.\\n        url = request.json['result_info']['url']\\n        # Now we request the final details of the processed candidate\\n        result = requests.get(url, auth=AUTH)\\n        json = result.json()\\n        # Save the processed candidate details \\n\\n    # We return an empty response to Connect as it will retry callbacks otherwise.\\n    return '', 200\",\n      \"language\": \"python\"\n    }\n  ]\n}\n[/block]\nThe candidate has now been inserted into the ATS.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Example Code\",\n  \"sidebar\": true\n}\n[/block]\n\n[block:textarea]\n{\n  \"text\": \"For the full example shown here, with instructions on how to run it locally in your desired programming language, please see the link below.\",\n  \"sidebar\": true\n}\n[/block]\n\n[block:embed]\n{\n  \"html\": false,\n  \"url\": \"https://github.com/rolepoint/connect-examples/tree/master/get-jobs-and-insert-candidates\",\n  \"title\": \"rolepoint/connect-examples\",\n  \"favicon\": \"https://assets-cdn.github.com/favicon.ico\",\n  \"image\": \"https://avatars3.githubusercontent.com/u/2790791?v=3&s=400\",\n  \"sidebar\": true\n}\n[/block]","isReference":false,"childrenPages":[]}

Get Jobs and Insert Candidate


With Connect, it's simple to get job listings from the remote ATS then use those job details to insert candidate applications. ## Getting Jobs Job listings are provided through Connect sending job details to a preconfigured [webhook](doc:webhooks). This is done periodically to ensure you always have the most up to date job postings from the ATS. First you need to setup an endpoint to receive the webhook events, as shown below. [block:code] { "codes": [ { "code": "@app.route('random_webhook_url')\ndef jobs_webhook_handler():\n for event in request.get_json(force=True):\n if event['event'] == 'job_add':\n # handle the job add event, for instance adding it to your database\n \n\t\t# We return an empty response to Connect as it will retry callbacks otherwise.\n return '', 200", "language": "python" } ] } [/block] This data can then be used to create an application form for current job postings. ## Inserting Candidates When a candidate completes your job application form, we can now send their information to Connect with a simple `POST` request. [block:code] { "codes": [ { "code": "@app.route('/make_application', methods=['POST'])\ndef make_application():\n\n # Build our payload to include our candidate and the job they are applying\n # for.\n payload = {\n \t'applications': [{'job_id': request.form['job_id']}],\n \t'candidate': {\n 'first_name': request.form['first_name'],\n 'last_name': request.form['last_name'],\n 'email': request.form['email']\n }\n \t}\n\n # We can choose to either include a callback header with our\n # request, or to poll until the application is complete. Here\n # we use the callback funtionality.\n headers = {\n 'content-type': 'application/rolepoint.v2+json',\n 'x-rolepoint-callback-url': url_for(\n 'application_processed_callback', app_id=1, _external=True\n )\n }\n # Send the candidate to Connect for processing.\n requests.post(CONNECT_URL + '/candidate',\n json=payload, auth=AUTH, headers=headers)", "language": "python" } ] } [/block] As inserting candidates into Connect is an [asynchronous endpoint](doc:asynchronous-requests), we have passed a callback URL as part of our `POST` request. Once Connect has processed the candidate, it will send a request to this URL to notify us that the processing is complete. [block:callout] { "type": "info", "body": "We recommend using the callback functionality rather than polling Connect. Each request to Connect can map to one or more requests to the ATS, which could take longer to process. By sending a callback we reduce the need to make several needless connections over an extended period of time. \n\nDon't worry, we'll let you know when it's done! :smile:", "title": "Use Callbacks" } [/block] ## Candidate Application Complete Callback We define this callback endpoint as below. [block:code] { "codes": [ { "code": "@app.route('/application_processed_callback/<int:app_id>', methods=['POST'])\ndef application_processed_callback(app_id):\n status = request.json['status']\n JOB_APPLICATIONS[app_id]['status'] = status\n\n if status == 'complete':\n # The application has been processed and made it into the ATS.\n # As part of the response we are given a URL from where we can \n # request the details of the processed candidate.\n url = request.json['result_info']['url']\n # Now we request the final details of the processed candidate\n result = requests.get(url, auth=AUTH)\n json = result.json()\n # Save the processed candidate details \n\n # We return an empty response to Connect as it will retry callbacks otherwise.\n return '', 200", "language": "python" } ] } [/block] The candidate has now been inserted into the ATS. [block:api-header] { "type": "basic", "title": "Example Code", "sidebar": true } [/block] [block:textarea] { "text": "For the full example shown here, with instructions on how to run it locally in your desired programming language, please see the link below.", "sidebar": true } [/block] [block:embed] { "html": false, "url": "https://github.com/rolepoint/connect-examples/tree/master/get-jobs-and-insert-candidates", "title": "rolepoint/connect-examples", "favicon": "https://assets-cdn.github.com/favicon.ico", "image": "https://avatars3.githubusercontent.com/u/2790791?v=3&s=400", "sidebar": true } [/block]
With Connect, it's simple to get job listings from the remote ATS then use those job details to insert candidate applications. ## Getting Jobs Job listings are provided through Connect sending job details to a preconfigured [webhook](doc:webhooks). This is done periodically to ensure you always have the most up to date job postings from the ATS. First you need to setup an endpoint to receive the webhook events, as shown below. [block:code] { "codes": [ { "code": "@app.route('random_webhook_url')\ndef jobs_webhook_handler():\n for event in request.get_json(force=True):\n if event['event'] == 'job_add':\n # handle the job add event, for instance adding it to your database\n \n\t\t# We return an empty response to Connect as it will retry callbacks otherwise.\n return '', 200", "language": "python" } ] } [/block] This data can then be used to create an application form for current job postings. ## Inserting Candidates When a candidate completes your job application form, we can now send their information to Connect with a simple `POST` request. [block:code] { "codes": [ { "code": "@app.route('/make_application', methods=['POST'])\ndef make_application():\n\n # Build our payload to include our candidate and the job they are applying\n # for.\n payload = {\n \t'applications': [{'job_id': request.form['job_id']}],\n \t'candidate': {\n 'first_name': request.form['first_name'],\n 'last_name': request.form['last_name'],\n 'email': request.form['email']\n }\n \t}\n\n # We can choose to either include a callback header with our\n # request, or to poll until the application is complete. Here\n # we use the callback funtionality.\n headers = {\n 'content-type': 'application/rolepoint.v2+json',\n 'x-rolepoint-callback-url': url_for(\n 'application_processed_callback', app_id=1, _external=True\n )\n }\n # Send the candidate to Connect for processing.\n requests.post(CONNECT_URL + '/candidate',\n json=payload, auth=AUTH, headers=headers)", "language": "python" } ] } [/block] As inserting candidates into Connect is an [asynchronous endpoint](doc:asynchronous-requests), we have passed a callback URL as part of our `POST` request. Once Connect has processed the candidate, it will send a request to this URL to notify us that the processing is complete. [block:callout] { "type": "info", "body": "We recommend using the callback functionality rather than polling Connect. Each request to Connect can map to one or more requests to the ATS, which could take longer to process. By sending a callback we reduce the need to make several needless connections over an extended period of time. \n\nDon't worry, we'll let you know when it's done! :smile:", "title": "Use Callbacks" } [/block] ## Candidate Application Complete Callback We define this callback endpoint as below. [block:code] { "codes": [ { "code": "@app.route('/application_processed_callback/<int:app_id>', methods=['POST'])\ndef application_processed_callback(app_id):\n status = request.json['status']\n JOB_APPLICATIONS[app_id]['status'] = status\n\n if status == 'complete':\n # The application has been processed and made it into the ATS.\n # As part of the response we are given a URL from where we can \n # request the details of the processed candidate.\n url = request.json['result_info']['url']\n # Now we request the final details of the processed candidate\n result = requests.get(url, auth=AUTH)\n json = result.json()\n # Save the processed candidate details \n\n # We return an empty response to Connect as it will retry callbacks otherwise.\n return '', 200", "language": "python" } ] } [/block] The candidate has now been inserted into the ATS. [block:api-header] { "type": "basic", "title": "Example Code", "sidebar": true } [/block] [block:textarea] { "text": "For the full example shown here, with instructions on how to run it locally in your desired programming language, please see the link below.", "sidebar": true } [/block] [block:embed] { "html": false, "url": "https://github.com/rolepoint/connect-examples/tree/master/get-jobs-and-insert-candidates", "title": "rolepoint/connect-examples", "favicon": "https://assets-cdn.github.com/favicon.ico", "image": "https://avatars3.githubusercontent.com/u/2790791?v=3&s=400", "sidebar": true } [/block]
{"_id":"56e5addb4594f71700fcccbb","createdAt":"2016-03-13T18:13:47.953Z","link_url":"","order":1,"slug":"find-candidates-and-retrieve-their-details","updates":[],"api":{"auth":"required","params":[],"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"code":"{}","name":"","status":400,"language":"json"}]},"settings":"","url":""},"category":"56df07cc0201330e0070f15b","hidden":false,"__v":19,"body":"Connect makes it easy to search for candidates in your ATS and retrieve their details. In this example, we show how to search for a candidate using their email address, then get the details of any candidates found.\n\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Use Callbacks\",\n  \"body\": \"Both searching for candidates and retrieving their details are [asynchronous endpoints](doc:asynchronous-requests). When using these, we recommend using the callback functionality rather than polling Connect. Each request to Connect can map to one or more requests to the ATS, which could take longer to process. By sending a callback, we reduce the need to make several needless connections over an extended period of time. \\n\\nDon't worry, we'll let you know when it's done! :smile:\"\n}\n[/block]\n## Searching for Candidates\n\nTo search for a candidate using Connect we need to issue a `POST` request to the [Find Candidates](doc:find-candidates) endpoint. As this is an [asynchronous endpoint](doc:asynchronous-requests) we recommend using the callback functionality of Connect.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"def search_connect_by_email(email, search_id):\\n  # First we need to build our filter in the format Connect expects\\n  query = {'filters': [{'operator': '==', 'field': 'email', 'value': email}]}\\n  \\n  # Next setup the headers, including a callback header so Connect\\n  # can notify you when it finishes processing.\\n  headers = {\\n    'content-type': 'application/rolepoint.v2+json',\\n    'x-rolepoint-callback-url': url_for(\\n      'search_complete_callback',\\n      search_id=search_id, _external=True\\n    )\\n  }\\n  \\n  # Finally issue a post request to Connect\\n  requests.post(\\n    CONNECT_URL + '/v1/{}/find_candidates'.format(CONFIG['connector_id']),\\n    json=query, auth=AUTH, headers=headers\\n  )\",\n      \"language\": \"python\"\n    }\n  ]\n}\n[/block]\nNext we need to setup an endpoint to process the callback from Connect.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"@app.route('/search_complete_callback/<int:search_id>', methods=['POST'])\\ndef search_complete_callback(search_id):\\n    \\\"\\\"\\\"\\n    An endpoint for handling Connect find_candidates callbacks.\\n    Here we update our Search with the status or the search, and the found\\n    candidate_ids.\\n    \\\"\\\"\\\"\\n    # We get the result of the search\\n    if request.json['status'] == 'complete':\\n        result = requests.get(request.json['result_info']['url'], auth=AUTH)\\n        candidate_ids = result.json()['candidate_ids']\\n        # We now have a list of strings which correspond to candidate ID's\\n        # in Connect. We can use these ID's to then query for the candidate\\n        # details, as shown below.\\n\\n    # Return an empty response to Connect as it will retry callbacks\\n    # otherwise.\\n    return '', 200\",\n      \"language\": \"python\"\n    }\n  ]\n}\n[/block]\n## Retrieving Candidate Details\n\nWe can use the candidate IDs found using the search shown above to then query Connect for the candidate details. This is done using the [Get Candidate](doc:get-candidate) endpoint. Once again, this is an asynchronous endpoint and we recommend using the callback functionality. The endpoint is a simple `GET` request, as shown below.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"def get_candidate(candidate_id):\\n\\t  # Setup headers, including a callback header so Connect\\n  \\t# can notify you when it finishes processing.\\n    headers = {\\n        'content-type': 'application/rolepoint.v2+json',\\n        'x-rolepoint-callback-url': url_for(\\n            'get_candidate_complete_callback',\\n            candidate_id=candidate_id, _external=True\\n        )\\n    }\\n\\n    url = '/v1/{}/candidate/{}'.format(CONFIG['connector_id'], candidate_id)\\n    requests.get(CONNECT_URL + url, auth=AUTH, headers=headers)\",\n      \"language\": \"python\"\n    }\n  ]\n}\n[/block]\nWe then need to setup a callback URL and retrieve the [final result](doc:get-candidate-result) of the `Get Candidate` query containing the candidates details. \n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"@app.route('/get_candidate_complete_callback/<int:candidate_id>', methods=['POST'])\\ndef get_candidate_complete_callback(candidate_id):\\n    # Get the result of the get_candidate call.\\n    if status = request.json['status'] == 'complete':\\n        result = requests.get(request.json['result_info']['url'], auth=AUTH)\\n        candidate_details = result.json()\\n        # You now have the candidate details.\\n\\n    # Return an empty response to Connect as it will retry callbacks\\n    # otherwise.\\n    return '', 200\",\n      \"language\": \"python\"\n    }\n  ]\n}\n[/block]\nWe have now retrieved the candidate details.\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Example Code\",\n  \"sidebar\": true\n}\n[/block]\n\n[block:textarea]\n{\n  \"text\": \"For the full example shown here, with instructions on how to run it locally in your desired programming language, please see the link below.\",\n  \"sidebar\": true\n}\n[/block]\n\n[block:embed]\n{\n  \"html\": false,\n  \"url\": \"https://github.com/rolepoint/connect-examples/tree/master/find-candidates-and-retrieve-their-details\",\n  \"title\": \"Find Candidates Example\",\n  \"favicon\": \"https://github.com/favicon.ico\",\n  \"sidebar\": true\n}\n[/block]","parentDoc":null,"project":"569e6099ebbadc0d0079becd","sync_unique":"","type":"basic","excerpt":"","githubsync":"","isReference":false,"link_external":false,"title":"Find Candidates and Retrieve Their Details","user":"543d38fea10ab32000b3aa8f","version":"569e609aebbadc0d0079bed0","childrenPages":[]}

Find Candidates and Retrieve Their Details


Connect makes it easy to search for candidates in your ATS and retrieve their details. In this example, we show how to search for a candidate using their email address, then get the details of any candidates found. [block:callout] { "type": "info", "title": "Use Callbacks", "body": "Both searching for candidates and retrieving their details are [asynchronous endpoints](doc:asynchronous-requests). When using these, we recommend using the callback functionality rather than polling Connect. Each request to Connect can map to one or more requests to the ATS, which could take longer to process. By sending a callback, we reduce the need to make several needless connections over an extended period of time. \n\nDon't worry, we'll let you know when it's done! :smile:" } [/block] ## Searching for Candidates To search for a candidate using Connect we need to issue a `POST` request to the [Find Candidates](doc:find-candidates) endpoint. As this is an [asynchronous endpoint](doc:asynchronous-requests) we recommend using the callback functionality of Connect. [block:code] { "codes": [ { "code": "def search_connect_by_email(email, search_id):\n # First we need to build our filter in the format Connect expects\n query = {'filters': [{'operator': '==', 'field': 'email', 'value': email}]}\n \n # Next setup the headers, including a callback header so Connect\n # can notify you when it finishes processing.\n headers = {\n 'content-type': 'application/rolepoint.v2+json',\n 'x-rolepoint-callback-url': url_for(\n 'search_complete_callback',\n search_id=search_id, _external=True\n )\n }\n \n # Finally issue a post request to Connect\n requests.post(\n CONNECT_URL + '/v1/{}/find_candidates'.format(CONFIG['connector_id']),\n json=query, auth=AUTH, headers=headers\n )", "language": "python" } ] } [/block] Next we need to setup an endpoint to process the callback from Connect. [block:code] { "codes": [ { "code": "@app.route('/search_complete_callback/<int:search_id>', methods=['POST'])\ndef search_complete_callback(search_id):\n \"\"\"\n An endpoint for handling Connect find_candidates callbacks.\n Here we update our Search with the status or the search, and the found\n candidate_ids.\n \"\"\"\n # We get the result of the search\n if request.json['status'] == 'complete':\n result = requests.get(request.json['result_info']['url'], auth=AUTH)\n candidate_ids = result.json()['candidate_ids']\n # We now have a list of strings which correspond to candidate ID's\n # in Connect. We can use these ID's to then query for the candidate\n # details, as shown below.\n\n # Return an empty response to Connect as it will retry callbacks\n # otherwise.\n return '', 200", "language": "python" } ] } [/block] ## Retrieving Candidate Details We can use the candidate IDs found using the search shown above to then query Connect for the candidate details. This is done using the [Get Candidate](doc:get-candidate) endpoint. Once again, this is an asynchronous endpoint and we recommend using the callback functionality. The endpoint is a simple `GET` request, as shown below. [block:code] { "codes": [ { "code": "def get_candidate(candidate_id):\n\t # Setup headers, including a callback header so Connect\n \t# can notify you when it finishes processing.\n headers = {\n 'content-type': 'application/rolepoint.v2+json',\n 'x-rolepoint-callback-url': url_for(\n 'get_candidate_complete_callback',\n candidate_id=candidate_id, _external=True\n )\n }\n\n url = '/v1/{}/candidate/{}'.format(CONFIG['connector_id'], candidate_id)\n requests.get(CONNECT_URL + url, auth=AUTH, headers=headers)", "language": "python" } ] } [/block] We then need to setup a callback URL and retrieve the [final result](doc:get-candidate-result) of the `Get Candidate` query containing the candidates details. [block:code] { "codes": [ { "code": "@app.route('/get_candidate_complete_callback/<int:candidate_id>', methods=['POST'])\ndef get_candidate_complete_callback(candidate_id):\n # Get the result of the get_candidate call.\n if status = request.json['status'] == 'complete':\n result = requests.get(request.json['result_info']['url'], auth=AUTH)\n candidate_details = result.json()\n # You now have the candidate details.\n\n # Return an empty response to Connect as it will retry callbacks\n # otherwise.\n return '', 200", "language": "python" } ] } [/block] We have now retrieved the candidate details. [block:api-header] { "type": "basic", "title": "Example Code", "sidebar": true } [/block] [block:textarea] { "text": "For the full example shown here, with instructions on how to run it locally in your desired programming language, please see the link below.", "sidebar": true } [/block] [block:embed] { "html": false, "url": "https://github.com/rolepoint/connect-examples/tree/master/find-candidates-and-retrieve-their-details", "title": "Find Candidates Example", "favicon": "https://github.com/favicon.ico", "sidebar": true } [/block]
Connect makes it easy to search for candidates in your ATS and retrieve their details. In this example, we show how to search for a candidate using their email address, then get the details of any candidates found. [block:callout] { "type": "info", "title": "Use Callbacks", "body": "Both searching for candidates and retrieving their details are [asynchronous endpoints](doc:asynchronous-requests). When using these, we recommend using the callback functionality rather than polling Connect. Each request to Connect can map to one or more requests to the ATS, which could take longer to process. By sending a callback, we reduce the need to make several needless connections over an extended period of time. \n\nDon't worry, we'll let you know when it's done! :smile:" } [/block] ## Searching for Candidates To search for a candidate using Connect we need to issue a `POST` request to the [Find Candidates](doc:find-candidates) endpoint. As this is an [asynchronous endpoint](doc:asynchronous-requests) we recommend using the callback functionality of Connect. [block:code] { "codes": [ { "code": "def search_connect_by_email(email, search_id):\n # First we need to build our filter in the format Connect expects\n query = {'filters': [{'operator': '==', 'field': 'email', 'value': email}]}\n \n # Next setup the headers, including a callback header so Connect\n # can notify you when it finishes processing.\n headers = {\n 'content-type': 'application/rolepoint.v2+json',\n 'x-rolepoint-callback-url': url_for(\n 'search_complete_callback',\n search_id=search_id, _external=True\n )\n }\n \n # Finally issue a post request to Connect\n requests.post(\n CONNECT_URL + '/v1/{}/find_candidates'.format(CONFIG['connector_id']),\n json=query, auth=AUTH, headers=headers\n )", "language": "python" } ] } [/block] Next we need to setup an endpoint to process the callback from Connect. [block:code] { "codes": [ { "code": "@app.route('/search_complete_callback/<int:search_id>', methods=['POST'])\ndef search_complete_callback(search_id):\n \"\"\"\n An endpoint for handling Connect find_candidates callbacks.\n Here we update our Search with the status or the search, and the found\n candidate_ids.\n \"\"\"\n # We get the result of the search\n if request.json['status'] == 'complete':\n result = requests.get(request.json['result_info']['url'], auth=AUTH)\n candidate_ids = result.json()['candidate_ids']\n # We now have a list of strings which correspond to candidate ID's\n # in Connect. We can use these ID's to then query for the candidate\n # details, as shown below.\n\n # Return an empty response to Connect as it will retry callbacks\n # otherwise.\n return '', 200", "language": "python" } ] } [/block] ## Retrieving Candidate Details We can use the candidate IDs found using the search shown above to then query Connect for the candidate details. This is done using the [Get Candidate](doc:get-candidate) endpoint. Once again, this is an asynchronous endpoint and we recommend using the callback functionality. The endpoint is a simple `GET` request, as shown below. [block:code] { "codes": [ { "code": "def get_candidate(candidate_id):\n\t # Setup headers, including a callback header so Connect\n \t# can notify you when it finishes processing.\n headers = {\n 'content-type': 'application/rolepoint.v2+json',\n 'x-rolepoint-callback-url': url_for(\n 'get_candidate_complete_callback',\n candidate_id=candidate_id, _external=True\n )\n }\n\n url = '/v1/{}/candidate/{}'.format(CONFIG['connector_id'], candidate_id)\n requests.get(CONNECT_URL + url, auth=AUTH, headers=headers)", "language": "python" } ] } [/block] We then need to setup a callback URL and retrieve the [final result](doc:get-candidate-result) of the `Get Candidate` query containing the candidates details. [block:code] { "codes": [ { "code": "@app.route('/get_candidate_complete_callback/<int:candidate_id>', methods=['POST'])\ndef get_candidate_complete_callback(candidate_id):\n # Get the result of the get_candidate call.\n if status = request.json['status'] == 'complete':\n result = requests.get(request.json['result_info']['url'], auth=AUTH)\n candidate_details = result.json()\n # You now have the candidate details.\n\n # Return an empty response to Connect as it will retry callbacks\n # otherwise.\n return '', 200", "language": "python" } ] } [/block] We have now retrieved the candidate details. [block:api-header] { "type": "basic", "title": "Example Code", "sidebar": true } [/block] [block:textarea] { "text": "For the full example shown here, with instructions on how to run it locally in your desired programming language, please see the link below.", "sidebar": true } [/block] [block:embed] { "html": false, "url": "https://github.com/rolepoint/connect-examples/tree/master/find-candidates-and-retrieve-their-details", "title": "Find Candidates Example", "favicon": "https://github.com/favicon.ico", "sidebar": true } [/block]
{"_id":"56e82082bfb2023600f61323","api":{"settings":"","url":"","auth":"required","params":[],"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]}},"parentDoc":null,"version":"569e609aebbadc0d0079bed0","link_url":"","title":"Insert Candidates and Track Status","__v":11,"body":"Connect makes it easy to insert candidates to your ATS, then get notifications whenever their status changes.\n\n## Inserting Candidates\n\nWhen a candidate completes your job application form, we can now send their information to Connect with a simple `POST` request.\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"@app.route('/make_application', methods=['POST'])\\ndef make_application():\\n\\n    # Build our payload to include our candidate and the job they are applying\\n    # for.\\n    payload = {\\n      \\t'applications': [{'job_id': request.form['job_id']}],\\n      \\t'candidate': {\\n            'first_name': request.form['first_name'],\\n            'last_name': request.form['last_name'],\\n            'email': request.form['email']\\n        }\\n   \\t}\\n\\n    # We can choose to either include a callback header with our\\n    # request, or to poll until the application is complete. Here\\n    # we use the callback funtionality.\\n    headers = {\\n        'content-type': 'application/rolepoint.v2+json',\\n        'x-rolepoint-callback-url': url_for(\\n            'application_processed_callback', app_id=1, _external=True\\n        )\\n    }\\n    # Send the candidate to Connect for processing.\\n    requests.post(CONNECT_URL + '/candidate',\\n                  json=payload, auth=AUTH, headers=headers)\",\n      \"language\": \"python\"\n    }\n  ]\n}\n[/block]\nAs inserting candidates into Connect is an [asynchronous endpoint](doc:asynchronous-requests), we have passed a callback URL as part of our `POST` request. Once Connect has processed the candidate, it will send a request to this URL to notify us that the processing is complete.\n[block:callout]\n{\n  \"type\": \"info\",\n  \"body\": \"We recommend using the callback functionality rather than polling Connect. Each request to Connect can map to one or more requests to the ATS, which could take longer to process. By sending a callback we reduce the need to make several needless connections over an extended period of time. \\n\\nDon't worry, we'll let you know when it's done! :smile:\",\n  \"title\": \"Use Callbacks\"\n}\n[/block]\n## Candidate Application Complete Callback\n\nWe define this callback endpoint as below.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"@app.route('/application_processed_callback/<int:app_id>', methods=['POST'])\\ndef application_processed_callback(app_id):\\n    status = request.json['status']\\n    JOB_APPLICATIONS[app_id]['status'] = status\\n\\n    if status == 'complete':\\n        # The application has been processed and made it into the ATS.\\n        # As part of the response we are given a URL from where we can \\n        # request the details of the processed candidate.\\n        url = request.json['result_info']['url']\\n        # Now we request the final details of the processed candidate\\n        result = requests.get(url, auth=AUTH)\\n        json = result.json()\\n        candidate_id = json['candidate_id']\\n        # Save the processed candidate details, paying special attention \\n        # to store the candidate_id, as this is what we use to track our \\n        # candidate status.\\n\\n    # We return an empty response to Connect as it will retry callbacks otherwise.\\n    return '', 200\",\n      \"language\": \"python\"\n    }\n  ]\n}\n[/block]\nThe candidate has now been inserted into the ATS, and we have the ID of the candidate so we can track their status.\n\n## Track Candidate Status\n\nTracking candidate status works through the Connect [webhook](doc:candidate-application-status-webhooks) functionality. Updates to candidate statuses are sent periodically to ensure you always have an up to date status for your candidates. All you need is an endpoint to receive these status events.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"@app.route('/webhook_url', methods=['POST'])\\ndef status_webhook_handler():\\n    for event in request.get_json(force=True):\\n        event_type = event['event']\\n        if event_type == 'candidate_status_update':\\n            candidate_id = event['data']['entity_id']\\n            # We can now update our candidate with the `candidate_id`\\n            # with the value of `event['data']['status']`.\",\n      \"language\": \"python\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Example Code\",\n  \"sidebar\": true\n}\n[/block]\n\n[block:textarea]\n{\n  \"text\": \"For the full example shown here, with instructions on how to run it locally in your desired programming language, please see the link below.\",\n  \"sidebar\": true\n}\n[/block]\n\n[block:embed]\n{\n  \"html\": false,\n  \"url\": \"https://github.com/rolepoint/connect-examples/tree/master/insert-candidate-and-track-status\",\n  \"title\": \"Track Status Example\",\n  \"favicon\": \"https://assets-cdn.github.com/favicon.ico\",\n  \"image\": \"https://avatars3.githubusercontent.com/u/2790791?v=3&s=400\",\n  \"sidebar\": true\n}\n[/block]","excerpt":"","githubsync":"","hidden":false,"sync_unique":"","user":"543d38fea10ab32000b3aa8f","category":"56df07cc0201330e0070f15b","isReference":false,"link_external":false,"order":2,"project":"569e6099ebbadc0d0079becd","slug":"insert-candidates-and-track-status","createdAt":"2016-03-15T14:47:30.237Z","type":"basic","updates":[],"childrenPages":[]}

Insert Candidates and Track Status


Connect makes it easy to insert candidates to your ATS, then get notifications whenever their status changes. ## Inserting Candidates When a candidate completes your job application form, we can now send their information to Connect with a simple `POST` request. [block:code] { "codes": [ { "code": "@app.route('/make_application', methods=['POST'])\ndef make_application():\n\n # Build our payload to include our candidate and the job they are applying\n # for.\n payload = {\n \t'applications': [{'job_id': request.form['job_id']}],\n \t'candidate': {\n 'first_name': request.form['first_name'],\n 'last_name': request.form['last_name'],\n 'email': request.form['email']\n }\n \t}\n\n # We can choose to either include a callback header with our\n # request, or to poll until the application is complete. Here\n # we use the callback funtionality.\n headers = {\n 'content-type': 'application/rolepoint.v2+json',\n 'x-rolepoint-callback-url': url_for(\n 'application_processed_callback', app_id=1, _external=True\n )\n }\n # Send the candidate to Connect for processing.\n requests.post(CONNECT_URL + '/candidate',\n json=payload, auth=AUTH, headers=headers)", "language": "python" } ] } [/block] As inserting candidates into Connect is an [asynchronous endpoint](doc:asynchronous-requests), we have passed a callback URL as part of our `POST` request. Once Connect has processed the candidate, it will send a request to this URL to notify us that the processing is complete. [block:callout] { "type": "info", "body": "We recommend using the callback functionality rather than polling Connect. Each request to Connect can map to one or more requests to the ATS, which could take longer to process. By sending a callback we reduce the need to make several needless connections over an extended period of time. \n\nDon't worry, we'll let you know when it's done! :smile:", "title": "Use Callbacks" } [/block] ## Candidate Application Complete Callback We define this callback endpoint as below. [block:code] { "codes": [ { "code": "@app.route('/application_processed_callback/<int:app_id>', methods=['POST'])\ndef application_processed_callback(app_id):\n status = request.json['status']\n JOB_APPLICATIONS[app_id]['status'] = status\n\n if status == 'complete':\n # The application has been processed and made it into the ATS.\n # As part of the response we are given a URL from where we can \n # request the details of the processed candidate.\n url = request.json['result_info']['url']\n # Now we request the final details of the processed candidate\n result = requests.get(url, auth=AUTH)\n json = result.json()\n candidate_id = json['candidate_id']\n # Save the processed candidate details, paying special attention \n # to store the candidate_id, as this is what we use to track our \n # candidate status.\n\n # We return an empty response to Connect as it will retry callbacks otherwise.\n return '', 200", "language": "python" } ] } [/block] The candidate has now been inserted into the ATS, and we have the ID of the candidate so we can track their status. ## Track Candidate Status Tracking candidate status works through the Connect [webhook](doc:candidate-application-status-webhooks) functionality. Updates to candidate statuses are sent periodically to ensure you always have an up to date status for your candidates. All you need is an endpoint to receive these status events. [block:code] { "codes": [ { "code": "@app.route('/webhook_url', methods=['POST'])\ndef status_webhook_handler():\n for event in request.get_json(force=True):\n event_type = event['event']\n if event_type == 'candidate_status_update':\n candidate_id = event['data']['entity_id']\n # We can now update our candidate with the `candidate_id`\n # with the value of `event['data']['status']`.", "language": "python" } ] } [/block] [block:api-header] { "type": "basic", "title": "Example Code", "sidebar": true } [/block] [block:textarea] { "text": "For the full example shown here, with instructions on how to run it locally in your desired programming language, please see the link below.", "sidebar": true } [/block] [block:embed] { "html": false, "url": "https://github.com/rolepoint/connect-examples/tree/master/insert-candidate-and-track-status", "title": "Track Status Example", "favicon": "https://assets-cdn.github.com/favicon.ico", "image": "https://avatars3.githubusercontent.com/u/2790791?v=3&s=400", "sidebar": true } [/block]
Connect makes it easy to insert candidates to your ATS, then get notifications whenever their status changes. ## Inserting Candidates When a candidate completes your job application form, we can now send their information to Connect with a simple `POST` request. [block:code] { "codes": [ { "code": "@app.route('/make_application', methods=['POST'])\ndef make_application():\n\n # Build our payload to include our candidate and the job they are applying\n # for.\n payload = {\n \t'applications': [{'job_id': request.form['job_id']}],\n \t'candidate': {\n 'first_name': request.form['first_name'],\n 'last_name': request.form['last_name'],\n 'email': request.form['email']\n }\n \t}\n\n # We can choose to either include a callback header with our\n # request, or to poll until the application is complete. Here\n # we use the callback funtionality.\n headers = {\n 'content-type': 'application/rolepoint.v2+json',\n 'x-rolepoint-callback-url': url_for(\n 'application_processed_callback', app_id=1, _external=True\n )\n }\n # Send the candidate to Connect for processing.\n requests.post(CONNECT_URL + '/candidate',\n json=payload, auth=AUTH, headers=headers)", "language": "python" } ] } [/block] As inserting candidates into Connect is an [asynchronous endpoint](doc:asynchronous-requests), we have passed a callback URL as part of our `POST` request. Once Connect has processed the candidate, it will send a request to this URL to notify us that the processing is complete. [block:callout] { "type": "info", "body": "We recommend using the callback functionality rather than polling Connect. Each request to Connect can map to one or more requests to the ATS, which could take longer to process. By sending a callback we reduce the need to make several needless connections over an extended period of time. \n\nDon't worry, we'll let you know when it's done! :smile:", "title": "Use Callbacks" } [/block] ## Candidate Application Complete Callback We define this callback endpoint as below. [block:code] { "codes": [ { "code": "@app.route('/application_processed_callback/<int:app_id>', methods=['POST'])\ndef application_processed_callback(app_id):\n status = request.json['status']\n JOB_APPLICATIONS[app_id]['status'] = status\n\n if status == 'complete':\n # The application has been processed and made it into the ATS.\n # As part of the response we are given a URL from where we can \n # request the details of the processed candidate.\n url = request.json['result_info']['url']\n # Now we request the final details of the processed candidate\n result = requests.get(url, auth=AUTH)\n json = result.json()\n candidate_id = json['candidate_id']\n # Save the processed candidate details, paying special attention \n # to store the candidate_id, as this is what we use to track our \n # candidate status.\n\n # We return an empty response to Connect as it will retry callbacks otherwise.\n return '', 200", "language": "python" } ] } [/block] The candidate has now been inserted into the ATS, and we have the ID of the candidate so we can track their status. ## Track Candidate Status Tracking candidate status works through the Connect [webhook](doc:candidate-application-status-webhooks) functionality. Updates to candidate statuses are sent periodically to ensure you always have an up to date status for your candidates. All you need is an endpoint to receive these status events. [block:code] { "codes": [ { "code": "@app.route('/webhook_url', methods=['POST'])\ndef status_webhook_handler():\n for event in request.get_json(force=True):\n event_type = event['event']\n if event_type == 'candidate_status_update':\n candidate_id = event['data']['entity_id']\n # We can now update our candidate with the `candidate_id`\n # with the value of `event['data']['status']`.", "language": "python" } ] } [/block] [block:api-header] { "type": "basic", "title": "Example Code", "sidebar": true } [/block] [block:textarea] { "text": "For the full example shown here, with instructions on how to run it locally in your desired programming language, please see the link below.", "sidebar": true } [/block] [block:embed] { "html": false, "url": "https://github.com/rolepoint/connect-examples/tree/master/insert-candidate-and-track-status", "title": "Track Status Example", "favicon": "https://assets-cdn.github.com/favicon.ico", "image": "https://avatars3.githubusercontent.com/u/2790791?v=3&s=400", "sidebar": true } [/block]
{"_id":"56e5cac6d1303329002ea76c","link_url":"","slug":"sandbox-connector","title":"Sandbox Connectors","category":"56df07cc0201330e0070f15b","githubsync":"","hidden":false,"isReference":false,"excerpt":"","order":3,"parentDoc":null,"project":"569e6099ebbadc0d0079becd","api":{"auth":"required","params":[],"results":{"codes":[{"name":"","status":200,"language":"json","code":"{}"},{"status":400,"language":"json","code":"{}","name":""}]},"settings":"","url":""},"body":"Sandbox Connectors allow you to use Connect as if you were integrating with an ATS, before you have the required credentials. They behave exactly as production Connectors – including [Rate Limits](doc:rate-limits) and [Billing limits](doc:billing-limits).\n\nCandidate and application results are stored in the sandbox (so you can query for them later) and there is a default set of jobs that can be sent as webhook events, all through the same services as you will use in production.\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"body\": \"Sandbox Connectors (including all the data you've created) will be deleted if they aren't used for 14 days.\"\n}\n[/block]\nYou'll need to create a sandbox connector before starting the example applications. \n\n### Creating a Sandbox Connector\n\nNo authorisation is required, though the endpoint is rate limited.\n\nThe only required parameter:\n* `email` - an email address for the creator of the sandbox. This address will receive updates on the connector and will of course never be given to anyone else.\n\nTo receive [webhooks](doc:webhooks) for your sandbox connector, you can optionally include a webhook_url parameter:\n* `webhook_url` - the webhook URL that [webhook events](doc:webhooks)  will be sent to\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X POST -H \\\"Content-Type: application/json\\\" -d '{\\n    \\\"email\\\": \\\"developer@rolepoint.com\\\",\\n    \\\"webhook_url\\\": \\\"<webhook_url>\\\"\\n}' \\\"https://api.rolepoint-connect.com/examples/sandbox-connector\\\"\",\n      \"language\": \"curl\"\n    },\n    {\n      \"code\": \"import requests\\n\\npayload = {\\n  'webhook_url': '<webhook_url>',\\n  'email':'developer@ro1epoint.com'\\n}\\n\\nresponse = requests.post(\\n  'https://api.rolepoint-connect.com/examples/sandbox-connector',\\n  json=payload\\n)\\n\\nprint(response.text)\",\n      \"language\": \"python\"\n    },\n    {\n      \"code\": \"require 'uri'\\nrequire 'net/http'\\nrequire 'json'\\n\\nurl = URI(\\\"https://api.rolepoint-connect.com/examples/sandbox-connector\\\")\\n\\nhttp = Net::HTTP.new(url.host, url.port)\\nhttp.use_ssl = true\\n\\npayload = {:email => \\\"developer@rolepoint.com\\\", :webhook_url => \\\"<webhook_url>\\\"}\\n\\nrequest = Net::HTTP::Post.new(url)\\nrequest[\\\"content-type\\\"] = 'application/json'\\nrequest.body = payload.to_json\\n\\nresponse = http.request(request)\\nputs response.read_body\",\n      \"language\": \"ruby\"\n    },\n    {\n      \"code\": \"invoke-restmethod -uri \\\"https://api.rolepoint-connect.com/examples/sandbox-connector\\\" -contenttype \\\"application/json\\\" -method Post -body '{\\n    \\\"email\\\": \\\"developer@rolepoint.com\\\",\\n    \\\"webhook_url\\\": \\\"<webhook_url>\\\"\\n}'\",\n      \"language\": \"shell\",\n      \"name\": \"PowerShell\"\n    }\n  ]\n}\n[/block]\nThe endpoint will respond with the `username`, `password` and `connector_id` of the connector, which are required to access it. You can now use the Connector for any of our documented [examples](doc:get-jobs-and-insert-applications) and [endpoints](doc:send-candidate).\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"connector_id\\\": \\\"4\\\",\\n  \\\"password\\\": \\\"TZtyELZhweVyaTLt\\\",\\n  \\\"username\\\": \\\"example_taleo_enterpise_SMNfyy\\\",\\n  \\\"email\\\": \\\"developer@ro1epoint.com\\\",\\n  \\\"webhook_url\\\": \\\"http://3b86a003.ngrok.io/webhook_url\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nIf there are too many requests for Sandbox Connectors, you'll see this message:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\\"errors\\\": \\\"There are currently too many example requests. Try again in 60 seconds\\\"}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]","createdAt":"2016-03-13T20:17:10.402Z","sync_unique":"","type":"basic","updates":[],"version":"569e609aebbadc0d0079bed0","__v":13,"link_external":false,"user":"56d846d5b20d260b0026570b","childrenPages":[]}

Sandbox Connectors


Sandbox Connectors allow you to use Connect as if you were integrating with an ATS, before you have the required credentials. They behave exactly as production Connectors – including [Rate Limits](doc:rate-limits) and [Billing limits](doc:billing-limits). Candidate and application results are stored in the sandbox (so you can query for them later) and there is a default set of jobs that can be sent as webhook events, all through the same services as you will use in production. [block:callout] { "type": "warning", "body": "Sandbox Connectors (including all the data you've created) will be deleted if they aren't used for 14 days." } [/block] You'll need to create a sandbox connector before starting the example applications. ### Creating a Sandbox Connector No authorisation is required, though the endpoint is rate limited. The only required parameter: * `email` - an email address for the creator of the sandbox. This address will receive updates on the connector and will of course never be given to anyone else. To receive [webhooks](doc:webhooks) for your sandbox connector, you can optionally include a webhook_url parameter: * `webhook_url` - the webhook URL that [webhook events](doc:webhooks) will be sent to [block:code] { "codes": [ { "code": "curl -X POST -H \"Content-Type: application/json\" -d '{\n \"email\": \"developer@rolepoint.com\",\n \"webhook_url\": \"<webhook_url>\"\n}' \"https://api.rolepoint-connect.com/examples/sandbox-connector\"", "language": "curl" }, { "code": "import requests\n\npayload = {\n 'webhook_url': '<webhook_url>',\n 'email':'developer@ro1epoint.com'\n}\n\nresponse = requests.post(\n 'https://api.rolepoint-connect.com/examples/sandbox-connector',\n json=payload\n)\n\nprint(response.text)", "language": "python" }, { "code": "require 'uri'\nrequire 'net/http'\nrequire 'json'\n\nurl = URI(\"https://api.rolepoint-connect.com/examples/sandbox-connector\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\n\npayload = {:email => \"developer@rolepoint.com\", :webhook_url => \"<webhook_url>\"}\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = payload.to_json\n\nresponse = http.request(request)\nputs response.read_body", "language": "ruby" }, { "code": "invoke-restmethod -uri \"https://api.rolepoint-connect.com/examples/sandbox-connector\" -contenttype \"application/json\" -method Post -body '{\n \"email\": \"developer@rolepoint.com\",\n \"webhook_url\": \"<webhook_url>\"\n}'", "language": "shell", "name": "PowerShell" } ] } [/block] The endpoint will respond with the `username`, `password` and `connector_id` of the connector, which are required to access it. You can now use the Connector for any of our documented [examples](doc:get-jobs-and-insert-applications) and [endpoints](doc:send-candidate). [block:code] { "codes": [ { "code": "{\n \"connector_id\": \"4\",\n \"password\": \"TZtyELZhweVyaTLt\",\n \"username\": \"example_taleo_enterpise_SMNfyy\",\n \"email\": \"developer@ro1epoint.com\",\n \"webhook_url\": \"http://3b86a003.ngrok.io/webhook_url\"\n}", "language": "json" } ] } [/block] If there are too many requests for Sandbox Connectors, you'll see this message: [block:code] { "codes": [ { "code": "{\"errors\": \"There are currently too many example requests. Try again in 60 seconds\"}", "language": "json" } ] } [/block]
Sandbox Connectors allow you to use Connect as if you were integrating with an ATS, before you have the required credentials. They behave exactly as production Connectors – including [Rate Limits](doc:rate-limits) and [Billing limits](doc:billing-limits). Candidate and application results are stored in the sandbox (so you can query for them later) and there is a default set of jobs that can be sent as webhook events, all through the same services as you will use in production. [block:callout] { "type": "warning", "body": "Sandbox Connectors (including all the data you've created) will be deleted if they aren't used for 14 days." } [/block] You'll need to create a sandbox connector before starting the example applications. ### Creating a Sandbox Connector No authorisation is required, though the endpoint is rate limited. The only required parameter: * `email` - an email address for the creator of the sandbox. This address will receive updates on the connector and will of course never be given to anyone else. To receive [webhooks](doc:webhooks) for your sandbox connector, you can optionally include a webhook_url parameter: * `webhook_url` - the webhook URL that [webhook events](doc:webhooks) will be sent to [block:code] { "codes": [ { "code": "curl -X POST -H \"Content-Type: application/json\" -d '{\n \"email\": \"developer@rolepoint.com\",\n \"webhook_url\": \"<webhook_url>\"\n}' \"https://api.rolepoint-connect.com/examples/sandbox-connector\"", "language": "curl" }, { "code": "import requests\n\npayload = {\n 'webhook_url': '<webhook_url>',\n 'email':'developer@ro1epoint.com'\n}\n\nresponse = requests.post(\n 'https://api.rolepoint-connect.com/examples/sandbox-connector',\n json=payload\n)\n\nprint(response.text)", "language": "python" }, { "code": "require 'uri'\nrequire 'net/http'\nrequire 'json'\n\nurl = URI(\"https://api.rolepoint-connect.com/examples/sandbox-connector\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\n\npayload = {:email => \"developer@rolepoint.com\", :webhook_url => \"<webhook_url>\"}\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = payload.to_json\n\nresponse = http.request(request)\nputs response.read_body", "language": "ruby" }, { "code": "invoke-restmethod -uri \"https://api.rolepoint-connect.com/examples/sandbox-connector\" -contenttype \"application/json\" -method Post -body '{\n \"email\": \"developer@rolepoint.com\",\n \"webhook_url\": \"<webhook_url>\"\n}'", "language": "shell", "name": "PowerShell" } ] } [/block] The endpoint will respond with the `username`, `password` and `connector_id` of the connector, which are required to access it. You can now use the Connector for any of our documented [examples](doc:get-jobs-and-insert-applications) and [endpoints](doc:send-candidate). [block:code] { "codes": [ { "code": "{\n \"connector_id\": \"4\",\n \"password\": \"TZtyELZhweVyaTLt\",\n \"username\": \"example_taleo_enterpise_SMNfyy\",\n \"email\": \"developer@ro1epoint.com\",\n \"webhook_url\": \"http://3b86a003.ngrok.io/webhook_url\"\n}", "language": "json" } ] } [/block] If there are too many requests for Sandbox Connectors, you'll see this message: [block:code] { "codes": [ { "code": "{\"errors\": \"There are currently too many example requests. Try again in 60 seconds\"}", "language": "json" } ] } [/block]
{"_id":"56df09ee0201330e0070f161","category":"56e43a6e7e2c0220000312db","isReference":true,"next":{"description":"","pages":[]},"project":"569e6099ebbadc0d0079becd","body":"By registering a webhook with RolePoint Connect, you can receive updates on various resources within an ATS.\n\nConnect uses webhooks to send updates on resources that change relatively infrequently.  Many APIs do not provide this functionality - to get updates on a job you would have to periodically make a request for that job.  The job may change infrequently, but you would still have to poll to ensure you have up to date information.  Connect handles this for you - you just need to handle the webhooks when they are sent.\n\nConnect currently sends webhooks on:\n\n- Job adds, deletes or updates.\n- Job updates completion.\n- Candidate status changes.\n- Job application status changes.\n\nNote: This features may not all be available for all ATS integrations.\n\n### Choosing a webhook URL.\n\nConnect webhooks do not currently support authentication, so it's recommended that your incoming webhook URL contain some sort of random element (e.g. a UUID) to help secure against people guessing your URL. Webhooks will **not** follow redirects.\n\n### Receiving updates from a webhook\n\nRolePoint Connect will receive regular updates of data from the ATS. It will batch these updates together into groups of no more than 100 and HTTP POST them to the registered webhook URL.  For example:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"POST /application/status\\nHost: webhooks.example.com\\nContent-Type: application/rolepoint.v1+json\\n\\n[\\n    {\\n      \\t\\\"event\\\": \\\"candidate_status_update\\\",\\n    \\t\\t\\\"event_time\\\": \\\"2015-05-12T11:44:20.559473\\\",\\n    \\t\\t\\\"data\\\": {\\n          \\t\\\"entity_id\\\": \\\"123\\\",\\n    \\t\\t\\t\\t\\\"status\\\": {\\n              \\t\\\"id\\\": 21, \\n              \\t\\\"value\\\": \\\"contacted\\\"\\n            }\\n        }\\n    },\\n    {\\n      \\t\\\"event\\\": \\\"application_status_update\\\",\\n    \\t\\t\\\"event_time\\\": \\\"2015-05-12T11:49:05.796921\\\",\\n    \\t\\t\\\"data\\\": {\\n          \\t\\\"entity_id\\\": \\\"456\\\",\\n    \\t\\t\\t\\t\\\"status\\\": {\\n              \\t\\\"id\\\": 22, \\n              \\t\\\"value\\\": \\\"hired\\\"\\n            }\\n        }\\n    }\\n]\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\nEach entry in the list should have the following fields:\n\n- `event` - Will indicate the type of webhook event. See the pages under [Event\n  Types](#section-event-types) below for details.\n- `event_time` - will indicate the time that the event occurred at.  This\n  should be in [ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601).\n- `data` - some event specific data.  See the pages under [Event\n  Types](#section-event-types) below.\n\n### Event Types\n\n- [Job events](doc:job-webhooks)\n- [Candidate & Application status updates](doc:candidate-application-status-webhooks)\n\n### Webhook notification timeouts & error handling\n\nIf your webhook endpoint returns a non-200 HTTP status code or takes longer than 30 seconds to reply, then we will retry sending the webhook after 10 seconds.  If that request fails, then we will try again after 20 seconds.  The time between retries will continue to double until the request is successful or 24 hours has passed.\n\n**All future status updates will be queued behind this one until it is either successful or we finish retrying.**\n\nWhen connect has retried for 24 hours without success, that request and all the webhook events contained within will be dropped.  Other queued status updates will not be affected, but any data contained in the dropped message will not be re-sent.\n\nYou should be careful not to perform any heavy processing in the webhook endpoint itself - if this is required, you should send it to a background processing task to avoid triggering our 30 second timeout.\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Multiple Webhooks for Same Event\",\n  \"body\": \"It is possible for the same Webhook to be sent multiple times, for example receiving a `job_add` event for the same job more than once. Ensure your system is configured to handle this possibility.\"\n}\n[/block]","link_external":false,"link_url":"","parentDoc":null,"sync_unique":"","title":"Webhooks","__v":16,"api":{"settings":"","url":"","auth":"required","params":[],"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"code":"{}","name":"","status":400,"language":"json"}]}},"createdAt":"2016-03-08T17:20:46.128Z","excerpt":"","hidden":false,"user":"543d38fea10ab32000b3aa8f","version":"569e609aebbadc0d0079bed0","githubsync":"","order":0,"slug":"webhooks","type":"basic","updates":[],"childrenPages":[]}

Webhooks


By registering a webhook with RolePoint Connect, you can receive updates on various resources within an ATS. Connect uses webhooks to send updates on resources that change relatively infrequently. Many APIs do not provide this functionality - to get updates on a job you would have to periodically make a request for that job. The job may change infrequently, but you would still have to poll to ensure you have up to date information. Connect handles this for you - you just need to handle the webhooks when they are sent. Connect currently sends webhooks on: - Job adds, deletes or updates. - Job updates completion. - Candidate status changes. - Job application status changes. Note: This features may not all be available for all ATS integrations. ### Choosing a webhook URL. Connect webhooks do not currently support authentication, so it's recommended that your incoming webhook URL contain some sort of random element (e.g. a UUID) to help secure against people guessing your URL. Webhooks will **not** follow redirects. ### Receiving updates from a webhook RolePoint Connect will receive regular updates of data from the ATS. It will batch these updates together into groups of no more than 100 and HTTP POST them to the registered webhook URL. For example: [block:code] { "codes": [ { "code": "POST /application/status\nHost: webhooks.example.com\nContent-Type: application/rolepoint.v1+json\n\n[\n {\n \t\"event\": \"candidate_status_update\",\n \t\t\"event_time\": \"2015-05-12T11:44:20.559473\",\n \t\t\"data\": {\n \t\"entity_id\": \"123\",\n \t\t\t\t\"status\": {\n \t\"id\": 21, \n \t\"value\": \"contacted\"\n }\n }\n },\n {\n \t\"event\": \"application_status_update\",\n \t\t\"event_time\": \"2015-05-12T11:49:05.796921\",\n \t\t\"data\": {\n \t\"entity_id\": \"456\",\n \t\t\t\t\"status\": {\n \t\"id\": 22, \n \t\"value\": \"hired\"\n }\n }\n }\n]", "language": "http" } ] } [/block] Each entry in the list should have the following fields: - `event` - Will indicate the type of webhook event. See the pages under [Event Types](#section-event-types) below for details. - `event_time` - will indicate the time that the event occurred at. This should be in [ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601). - `data` - some event specific data. See the pages under [Event Types](#section-event-types) below. ### Event Types - [Job events](doc:job-webhooks) - [Candidate & Application status updates](doc:candidate-application-status-webhooks) ### Webhook notification timeouts & error handling If your webhook endpoint returns a non-200 HTTP status code or takes longer than 30 seconds to reply, then we will retry sending the webhook after 10 seconds. If that request fails, then we will try again after 20 seconds. The time between retries will continue to double until the request is successful or 24 hours has passed. **All future status updates will be queued behind this one until it is either successful or we finish retrying.** When connect has retried for 24 hours without success, that request and all the webhook events contained within will be dropped. Other queued status updates will not be affected, but any data contained in the dropped message will not be re-sent. You should be careful not to perform any heavy processing in the webhook endpoint itself - if this is required, you should send it to a background processing task to avoid triggering our 30 second timeout. [block:callout] { "type": "warning", "title": "Multiple Webhooks for Same Event", "body": "It is possible for the same Webhook to be sent multiple times, for example receiving a `job_add` event for the same job more than once. Ensure your system is configured to handle this possibility." } [/block]
By registering a webhook with RolePoint Connect, you can receive updates on various resources within an ATS. Connect uses webhooks to send updates on resources that change relatively infrequently. Many APIs do not provide this functionality - to get updates on a job you would have to periodically make a request for that job. The job may change infrequently, but you would still have to poll to ensure you have up to date information. Connect handles this for you - you just need to handle the webhooks when they are sent. Connect currently sends webhooks on: - Job adds, deletes or updates. - Job updates completion. - Candidate status changes. - Job application status changes. Note: This features may not all be available for all ATS integrations. ### Choosing a webhook URL. Connect webhooks do not currently support authentication, so it's recommended that your incoming webhook URL contain some sort of random element (e.g. a UUID) to help secure against people guessing your URL. Webhooks will **not** follow redirects. ### Receiving updates from a webhook RolePoint Connect will receive regular updates of data from the ATS. It will batch these updates together into groups of no more than 100 and HTTP POST them to the registered webhook URL. For example: [block:code] { "codes": [ { "code": "POST /application/status\nHost: webhooks.example.com\nContent-Type: application/rolepoint.v1+json\n\n[\n {\n \t\"event\": \"candidate_status_update\",\n \t\t\"event_time\": \"2015-05-12T11:44:20.559473\",\n \t\t\"data\": {\n \t\"entity_id\": \"123\",\n \t\t\t\t\"status\": {\n \t\"id\": 21, \n \t\"value\": \"contacted\"\n }\n }\n },\n {\n \t\"event\": \"application_status_update\",\n \t\t\"event_time\": \"2015-05-12T11:49:05.796921\",\n \t\t\"data\": {\n \t\"entity_id\": \"456\",\n \t\t\t\t\"status\": {\n \t\"id\": 22, \n \t\"value\": \"hired\"\n }\n }\n }\n]", "language": "http" } ] } [/block] Each entry in the list should have the following fields: - `event` - Will indicate the type of webhook event. See the pages under [Event Types](#section-event-types) below for details. - `event_time` - will indicate the time that the event occurred at. This should be in [ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601). - `data` - some event specific data. See the pages under [Event Types](#section-event-types) below. ### Event Types - [Job events](doc:job-webhooks) - [Candidate & Application status updates](doc:candidate-application-status-webhooks) ### Webhook notification timeouts & error handling If your webhook endpoint returns a non-200 HTTP status code or takes longer than 30 seconds to reply, then we will retry sending the webhook after 10 seconds. If that request fails, then we will try again after 20 seconds. The time between retries will continue to double until the request is successful or 24 hours has passed. **All future status updates will be queued behind this one until it is either successful or we finish retrying.** When connect has retried for 24 hours without success, that request and all the webhook events contained within will be dropped. Other queued status updates will not be affected, but any data contained in the dropped message will not be re-sent. You should be careful not to perform any heavy processing in the webhook endpoint itself - if this is required, you should send it to a background processing task to avoid triggering our 30 second timeout. [block:callout] { "type": "warning", "title": "Multiple Webhooks for Same Event", "body": "It is possible for the same Webhook to be sent multiple times, for example receiving a `job_add` event for the same job more than once. Ensure your system is configured to handle this possibility." } [/block]
{"_id":"56e44ffdf0150e1700ce67f8","link_url":"","parentDoc":null,"sync_unique":"","type":"basic","updates":[],"user":"56d846d5b20d260b0026570b","api":{"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"settings":"","url":"","auth":"required","params":[]},"body":"RolePoint Connect can provide details of jobs that are contained within an ATS. This automatically happens for all ATSs with job support, provided your integration is setup with a webhook URL.  For more details on setting up a webhook URL, see the [Webhooks page](doc:webhooks).\n\nThere are four types of job related webhooks:\n\n- `job_add` - sent when connect finds an active job it has not encountered before.  When a connector is new, all current active jobs will be sent through as `job_add` events.\n- `job_update` - sent when the data for a job has changed in some way.\n- `job_remove` - sent when a job is no longer active, or has otherwise been deleted.\n- `job_updates_complete` - Sent when the process which updates the jobs for your connector has completed. Note that this _should_ usually arrive after the `job_add`, `job_update` and `job_remove` events, however this is not guaranteed. It will also be sent if we ran a process to update the jobs, but no changes occurred.\n\nThese values will be filled in the `event` field of any webhooks that come through.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"[\\n  {\\n    \\\"event\\\": \\\"job_add\\\",\\n    \\\"event_time\\\": \\\"2015-05-12T11:44:20.559473\\\",\\n    \\\"data\\\": {\\n      \\\"department_name\\\": \\\"Pet Management\\\",\\n      \\\"qualifications\\\": null,\\n      \\\"creation_date\\\": null,\\n      \\\"title\\\": \\\"Dog Butler\\\",\\n      \\\"status\\\": \\\"Sourcing\\\",\\n      \\\"location\\\": {\\n        \\\"country\\\": \\\"United States\\\",\\n        \\\"state\\\": \\\"California\\\",\\n        \\\"city\\\": \\\"Irvine\\\"\\n      },\\n      \\\"salary\\\": {\\n        \\\"upper\\\": null,\\n        \\\"lower\\\": null,\\n        \\\"currency\\\": \\\"USD\\\"\\n      },\\n      \\\"hiring_manager\\\": {\\n        \\\"last_name\\\": \\\"Bond\\\",\\n        \\\"first_name\\\": \\\"James\\\",\\n        \\\"email\\\": \\\"james@example.com\\\"\\n      },\\n      \\\"opening_date\\\": null,\\n      \\\"closing_date\\\": null,\\n      \\\"ats_id\\\": \\\"9384843\\\",\\n      \\\"description\\\": \\\"<p>Here at The Dog Butler, Inc. we are dedicated to educate every dog owner to make every dog the best dog they ever owned.  Offering customized training programs to train your dog for the world you live in, we are focused on results that work in your everyday life.</p>\\\",\\n      \\\"contract_type\\\": null\\n    }\\n  },\\n  {\\n    \\\"event\\\": \\\"job_update\\\",\\n    \\\"event_time\\\": \\\"2015-05-12T11:49:05.796921\\\",\\n    \\\"data\\\": {\\n      \\\"department_name\\\": \\\"Pet Management\\\",\\n      \\\"qualifications\\\": null,\\n      \\\"creation_date\\\": null,\\n      \\\"title\\\": \\\"Dog Butler\\\",\\n      \\\"status\\\": \\\"Sourcing\\\",\\n      \\\"location\\\": {\\n        \\\"country\\\": \\\"United States\\\",\\n        \\\"state\\\": \\\"California\\\",\\n        \\\"city\\\": \\\"Irvine\\\"\\n      },\\n      \\\"salary\\\": {\\n        \\\"upper\\\": null,\\n        \\\"lower\\\": null,\\n        \\\"currency\\\": \\\"USD\\\"\\n      },\\n      \\\"hiring_manager\\\": {\\n        \\\"last_name\\\": \\\"Bond\\\",\\n        \\\"first_name\\\": \\\"James\\\",\\n        \\\"email\\\": \\\"james@example.com\\\"\\n      },\\n      \\\"opening_date\\\": null,\\n      \\\"closing_date\\\": null,\\n      \\\"ats_id\\\": \\\"12345F\\\",\\n      \\\"description\\\": \\\"<p>Here at The Dog Butler, Inc. we are dedicated to educate every dog owner to make every dog the best dog they ever owned.  Offering customized training programs to train your dog for the world you live in, we are focused on results that work in your everyday life.</p>\\\",\\n      \\\"contract_type\\\": null\\n    }\\n  },\\n  {\\n    \\\"event\\\": \\\"job_remove\\\",\\n    \\\"event_time\\\": \\\"2015-05-12T11:53:08.128675\\\",\\n    \\\"data\\\": {\\n      \\\"ats_id\\\": \\\"123BR\\\"\\n    }\\n  },\\n  {\\n    \\\"event\\\": \\\"job_updates_complete\\\",\\n    \\\"event_time\\\": \\\"2015-05-12T11:53:10.128675\\\",\\n    \\\"data\\\": {}\\n  }\\n]\",\n      \"language\": \"json\"\n    }\n  ],\n  \"sidebar\": true\n}\n[/block]\n## Job Payloads\n\n### Add & Update Payloads\n\nThe `data` field for the `job_add` & `job_update` events will contain the compete JSON representation of the job.  Which fields this contains can vary slightly from ATS to ATS - an example payload for a taleo enterprise edition job is presented to the right.  Most other ATSs should follow the same format, though there may be slight variations in which fields are returned or precisely which format certain fields are presented in.\n\nThe `ats_id` field is always returned - this is the ID of the job in the ATS, and can be used to relate `job_add` events to their corresponding `job_update` & `job_remove` events, as well as being sent when [sending a candidate](doc:send-candidate).\n\nIt may be the case that the default job payload for an ATS doesn't contain a field that you are interested in - perhaps there's a custom field you're interested in or even just a bit of data we don't currently get.  Connects job fetching code is designed to be flexible - contact someone on the connect slack channel and we can add those fields to the payload for your connector.\n\n### Remove Payloads\n\nThe `data` field of a `job_remove` event will only ever contain the `ats_id` of that job.  This can be used to mark the job as deleted in your system.","createdAt":"2016-03-12T17:21:01.887Z","githubsync":"","link_external":false,"title":"Job Events","version":"569e609aebbadc0d0079bed0","category":"56e43a6e7e2c0220000312db","excerpt":"","hidden":false,"project":"569e6099ebbadc0d0079becd","__v":13,"isReference":true,"order":1,"slug":"job-webhooks","next":{"description":"","pages":[]},"childrenPages":[]}

Job Events


RolePoint Connect can provide details of jobs that are contained within an ATS. This automatically happens for all ATSs with job support, provided your integration is setup with a webhook URL. For more details on setting up a webhook URL, see the [Webhooks page](doc:webhooks). There are four types of job related webhooks: - `job_add` - sent when connect finds an active job it has not encountered before. When a connector is new, all current active jobs will be sent through as `job_add` events. - `job_update` - sent when the data for a job has changed in some way. - `job_remove` - sent when a job is no longer active, or has otherwise been deleted. - `job_updates_complete` - Sent when the process which updates the jobs for your connector has completed. Note that this _should_ usually arrive after the `job_add`, `job_update` and `job_remove` events, however this is not guaranteed. It will also be sent if we ran a process to update the jobs, but no changes occurred. These values will be filled in the `event` field of any webhooks that come through. [block:code] { "codes": [ { "code": "[\n {\n \"event\": \"job_add\",\n \"event_time\": \"2015-05-12T11:44:20.559473\",\n \"data\": {\n \"department_name\": \"Pet Management\",\n \"qualifications\": null,\n \"creation_date\": null,\n \"title\": \"Dog Butler\",\n \"status\": \"Sourcing\",\n \"location\": {\n \"country\": \"United States\",\n \"state\": \"California\",\n \"city\": \"Irvine\"\n },\n \"salary\": {\n \"upper\": null,\n \"lower\": null,\n \"currency\": \"USD\"\n },\n \"hiring_manager\": {\n \"last_name\": \"Bond\",\n \"first_name\": \"James\",\n \"email\": \"james@example.com\"\n },\n \"opening_date\": null,\n \"closing_date\": null,\n \"ats_id\": \"9384843\",\n \"description\": \"<p>Here at The Dog Butler, Inc. we are dedicated to educate every dog owner to make every dog the best dog they ever owned. Offering customized training programs to train your dog for the world you live in, we are focused on results that work in your everyday life.</p>\",\n \"contract_type\": null\n }\n },\n {\n \"event\": \"job_update\",\n \"event_time\": \"2015-05-12T11:49:05.796921\",\n \"data\": {\n \"department_name\": \"Pet Management\",\n \"qualifications\": null,\n \"creation_date\": null,\n \"title\": \"Dog Butler\",\n \"status\": \"Sourcing\",\n \"location\": {\n \"country\": \"United States\",\n \"state\": \"California\",\n \"city\": \"Irvine\"\n },\n \"salary\": {\n \"upper\": null,\n \"lower\": null,\n \"currency\": \"USD\"\n },\n \"hiring_manager\": {\n \"last_name\": \"Bond\",\n \"first_name\": \"James\",\n \"email\": \"james@example.com\"\n },\n \"opening_date\": null,\n \"closing_date\": null,\n \"ats_id\": \"12345F\",\n \"description\": \"<p>Here at The Dog Butler, Inc. we are dedicated to educate every dog owner to make every dog the best dog they ever owned. Offering customized training programs to train your dog for the world you live in, we are focused on results that work in your everyday life.</p>\",\n \"contract_type\": null\n }\n },\n {\n \"event\": \"job_remove\",\n \"event_time\": \"2015-05-12T11:53:08.128675\",\n \"data\": {\n \"ats_id\": \"123BR\"\n }\n },\n {\n \"event\": \"job_updates_complete\",\n \"event_time\": \"2015-05-12T11:53:10.128675\",\n \"data\": {}\n }\n]", "language": "json" } ], "sidebar": true } [/block] ## Job Payloads ### Add & Update Payloads The `data` field for the `job_add` & `job_update` events will contain the compete JSON representation of the job. Which fields this contains can vary slightly from ATS to ATS - an example payload for a taleo enterprise edition job is presented to the right. Most other ATSs should follow the same format, though there may be slight variations in which fields are returned or precisely which format certain fields are presented in. The `ats_id` field is always returned - this is the ID of the job in the ATS, and can be used to relate `job_add` events to their corresponding `job_update` & `job_remove` events, as well as being sent when [sending a candidate](doc:send-candidate). It may be the case that the default job payload for an ATS doesn't contain a field that you are interested in - perhaps there's a custom field you're interested in or even just a bit of data we don't currently get. Connects job fetching code is designed to be flexible - contact someone on the connect slack channel and we can add those fields to the payload for your connector. ### Remove Payloads The `data` field of a `job_remove` event will only ever contain the `ats_id` of that job. This can be used to mark the job as deleted in your system.
RolePoint Connect can provide details of jobs that are contained within an ATS. This automatically happens for all ATSs with job support, provided your integration is setup with a webhook URL. For more details on setting up a webhook URL, see the [Webhooks page](doc:webhooks). There are four types of job related webhooks: - `job_add` - sent when connect finds an active job it has not encountered before. When a connector is new, all current active jobs will be sent through as `job_add` events. - `job_update` - sent when the data for a job has changed in some way. - `job_remove` - sent when a job is no longer active, or has otherwise been deleted. - `job_updates_complete` - Sent when the process which updates the jobs for your connector has completed. Note that this _should_ usually arrive after the `job_add`, `job_update` and `job_remove` events, however this is not guaranteed. It will also be sent if we ran a process to update the jobs, but no changes occurred. These values will be filled in the `event` field of any webhooks that come through. [block:code] { "codes": [ { "code": "[\n {\n \"event\": \"job_add\",\n \"event_time\": \"2015-05-12T11:44:20.559473\",\n \"data\": {\n \"department_name\": \"Pet Management\",\n \"qualifications\": null,\n \"creation_date\": null,\n \"title\": \"Dog Butler\",\n \"status\": \"Sourcing\",\n \"location\": {\n \"country\": \"United States\",\n \"state\": \"California\",\n \"city\": \"Irvine\"\n },\n \"salary\": {\n \"upper\": null,\n \"lower\": null,\n \"currency\": \"USD\"\n },\n \"hiring_manager\": {\n \"last_name\": \"Bond\",\n \"first_name\": \"James\",\n \"email\": \"james@example.com\"\n },\n \"opening_date\": null,\n \"closing_date\": null,\n \"ats_id\": \"9384843\",\n \"description\": \"<p>Here at The Dog Butler, Inc. we are dedicated to educate every dog owner to make every dog the best dog they ever owned. Offering customized training programs to train your dog for the world you live in, we are focused on results that work in your everyday life.</p>\",\n \"contract_type\": null\n }\n },\n {\n \"event\": \"job_update\",\n \"event_time\": \"2015-05-12T11:49:05.796921\",\n \"data\": {\n \"department_name\": \"Pet Management\",\n \"qualifications\": null,\n \"creation_date\": null,\n \"title\": \"Dog Butler\",\n \"status\": \"Sourcing\",\n \"location\": {\n \"country\": \"United States\",\n \"state\": \"California\",\n \"city\": \"Irvine\"\n },\n \"salary\": {\n \"upper\": null,\n \"lower\": null,\n \"currency\": \"USD\"\n },\n \"hiring_manager\": {\n \"last_name\": \"Bond\",\n \"first_name\": \"James\",\n \"email\": \"james@example.com\"\n },\n \"opening_date\": null,\n \"closing_date\": null,\n \"ats_id\": \"12345F\",\n \"description\": \"<p>Here at The Dog Butler, Inc. we are dedicated to educate every dog owner to make every dog the best dog they ever owned. Offering customized training programs to train your dog for the world you live in, we are focused on results that work in your everyday life.</p>\",\n \"contract_type\": null\n }\n },\n {\n \"event\": \"job_remove\",\n \"event_time\": \"2015-05-12T11:53:08.128675\",\n \"data\": {\n \"ats_id\": \"123BR\"\n }\n },\n {\n \"event\": \"job_updates_complete\",\n \"event_time\": \"2015-05-12T11:53:10.128675\",\n \"data\": {}\n }\n]", "language": "json" } ], "sidebar": true } [/block] ## Job Payloads ### Add & Update Payloads The `data` field for the `job_add` & `job_update` events will contain the compete JSON representation of the job. Which fields this contains can vary slightly from ATS to ATS - an example payload for a taleo enterprise edition job is presented to the right. Most other ATSs should follow the same format, though there may be slight variations in which fields are returned or precisely which format certain fields are presented in. The `ats_id` field is always returned - this is the ID of the job in the ATS, and can be used to relate `job_add` events to their corresponding `job_update` & `job_remove` events, as well as being sent when [sending a candidate](doc:send-candidate). It may be the case that the default job payload for an ATS doesn't contain a field that you are interested in - perhaps there's a custom field you're interested in or even just a bit of data we don't currently get. Connects job fetching code is designed to be flexible - contact someone on the connect slack channel and we can add those fields to the payload for your connector. ### Remove Payloads The `data` field of a `job_remove` event will only ever contain the `ats_id` of that job. This can be used to mark the job as deleted in your system.
{"_id":"56e44fd5f0150e1700ce67f6","category":"56e43a6e7e2c0220000312db","excerpt":"","sync_unique":"","isReference":false,"parentDoc":null,"project":"569e6099ebbadc0d0079becd","title":"Candidate Status Events","updates":[],"hidden":false,"link_external":false,"link_url":"","order":2,"type":"basic","user":"56d846d5b20d260b0026570b","version":"569e609aebbadc0d0079bed0","__v":8,"api":{"params":[],"results":{"codes":[{"name":"","status":200,"language":"json","code":"{}"},{"language":"json","code":"{}","name":"","status":400}]},"settings":"","url":"","auth":"required"},"body":"RolePoint Connect can provide status details of applications and candidates that have been put into a supported remote ATS.  This automatically happens for any candidates that have been put into the ATS via RolePoint Connect, provided your integration is setup with a webhook URL.  For more details on setting up a webhook URL, see the [webhooks page](webhooks/).\n\nThe webhooks for candidate & application status come in two different webhook types:\n\n- `candidate_status_update`\n- `application_status_update`.\n\nThese values will be filled in the `event` field of any webhooks that come through.\n\nThe `data` parameters for these 2 webhook types are the same.  They will contain the following fields:\n\n- `entity_id` will contain the id of the application/candidate that the\n  update pertains to.\n- `status.id` will contain the ID of the status as returned by the ATS.\n- `status.value` will contain the text value of the status as returned by the\n  ATS.\n[block:callout]\n{\n  \"type\": \"info\",\n  \"body\": \"Depending on the ATS, either `status.id` or `status.value` may be returned as null.\"\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"[\\n    {\\n      \\t\\\"event\\\": \\\"candidate_status_update\\\",\\n    \\t\\t\\\"event_time\\\": \\\"2015-05-12T11:44:20.559473\\\",\\n    \\t\\t\\\"data\\\": {\\n          \\t\\\"entity_id\\\": \\\"123\\\",\\n    \\t\\t\\t\\t\\\"status\\\": {\\n              \\t\\\"id\\\": 21, \\n              \\t\\\"value\\\": \\\"contacted\\\"\\n            }\\n        }\\n    },\\n    {\\n      \\t\\\"event\\\": \\\"application_status_update\\\",\\n    \\t\\t\\\"event_time\\\": \\\"2015-05-12T11:49:05.796921\\\",\\n    \\t\\t\\\"data\\\": {\\n          \\t\\\"entity_id\\\": \\\"456\\\",\\n    \\t\\t\\t\\t\\\"status\\\": {\\n              \\t\\\"id\\\": 22, \\n              \\t\\\"value\\\": \\\"hired\\\"\\n            }\\n        }\\n    }\\n]\",\n      \"language\": \"json\"\n    }\n  ],\n  \"sidebar\": true\n}\n[/block]","createdAt":"2016-03-12T17:20:21.138Z","githubsync":"","slug":"candidate-application-status-webhooks","childrenPages":[]}

Candidate Status Events


RolePoint Connect can provide status details of applications and candidates that have been put into a supported remote ATS. This automatically happens for any candidates that have been put into the ATS via RolePoint Connect, provided your integration is setup with a webhook URL. For more details on setting up a webhook URL, see the [webhooks page](webhooks/). The webhooks for candidate & application status come in two different webhook types: - `candidate_status_update` - `application_status_update`. These values will be filled in the `event` field of any webhooks that come through. The `data` parameters for these 2 webhook types are the same. They will contain the following fields: - `entity_id` will contain the id of the application/candidate that the update pertains to. - `status.id` will contain the ID of the status as returned by the ATS. - `status.value` will contain the text value of the status as returned by the ATS. [block:callout] { "type": "info", "body": "Depending on the ATS, either `status.id` or `status.value` may be returned as null." } [/block] [block:code] { "codes": [ { "code": "[\n {\n \t\"event\": \"candidate_status_update\",\n \t\t\"event_time\": \"2015-05-12T11:44:20.559473\",\n \t\t\"data\": {\n \t\"entity_id\": \"123\",\n \t\t\t\t\"status\": {\n \t\"id\": 21, \n \t\"value\": \"contacted\"\n }\n }\n },\n {\n \t\"event\": \"application_status_update\",\n \t\t\"event_time\": \"2015-05-12T11:49:05.796921\",\n \t\t\"data\": {\n \t\"entity_id\": \"456\",\n \t\t\t\t\"status\": {\n \t\"id\": 22, \n \t\"value\": \"hired\"\n }\n }\n }\n]", "language": "json" } ], "sidebar": true } [/block]
RolePoint Connect can provide status details of applications and candidates that have been put into a supported remote ATS. This automatically happens for any candidates that have been put into the ATS via RolePoint Connect, provided your integration is setup with a webhook URL. For more details on setting up a webhook URL, see the [webhooks page](webhooks/). The webhooks for candidate & application status come in two different webhook types: - `candidate_status_update` - `application_status_update`. These values will be filled in the `event` field of any webhooks that come through. The `data` parameters for these 2 webhook types are the same. They will contain the following fields: - `entity_id` will contain the id of the application/candidate that the update pertains to. - `status.id` will contain the ID of the status as returned by the ATS. - `status.value` will contain the text value of the status as returned by the ATS. [block:callout] { "type": "info", "body": "Depending on the ATS, either `status.id` or `status.value` may be returned as null." } [/block] [block:code] { "codes": [ { "code": "[\n {\n \t\"event\": \"candidate_status_update\",\n \t\t\"event_time\": \"2015-05-12T11:44:20.559473\",\n \t\t\"data\": {\n \t\"entity_id\": \"123\",\n \t\t\t\t\"status\": {\n \t\"id\": 21, \n \t\"value\": \"contacted\"\n }\n }\n },\n {\n \t\"event\": \"application_status_update\",\n \t\t\"event_time\": \"2015-05-12T11:49:05.796921\",\n \t\t\"data\": {\n \t\"entity_id\": \"456\",\n \t\t\t\t\"status\": {\n \t\"id\": 22, \n \t\"value\": \"hired\"\n }\n }\n }\n]", "language": "json" } ], "sidebar": true } [/block]
{"_id":"56d83b8bb20d260b002656e0","__v":17,"api":{"settings":"","url":"","auth":"required","params":[],"results":{"codes":[{"code":"{}","name":"","status":200,"language":"json"},{"name":"","status":400,"language":"json","code":"{}"}]}},"body":"[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Attribute\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Required\",\n    \"0-0\": \"email\",\n    \"0-1\": \"string\",\n    \"0-2\": \"True\",\n    \"1-0\": \"first_name\",\n    \"2-0\": \"last_name\",\n    \"3-0\": \"phone\",\n    \"4-0\": \"cv_file\",\n    \"5-0\": \"cv_text\",\n    \"6-0\": \"cv_filename\",\n    \"7-0\": \"location\",\n    \"7-1\": \"[Location](doc:location)\",\n    \"8-0\": \"comment\",\n    \"8-1\": \"[Comment](doc:comment)\",\n    \"9-0\": \"social_profiles\",\n    \"9-1\": \"list<[Social Profile](doc:social-profile)>\",\n    \"10-0\": \"referrers\",\n    \"11-0\": \"employment_history\",\n    \"10-1\": \"list<[Referrer](doc:referrer)>\",\n    \"11-1\": \"list<[Employment History](doc:employment-history)>\",\n    \"12-0\": \"education_history\",\n    \"12-1\": \"list<[Education History](doc:education-history)>\",\n    \"13-0\": \"client_id\",\n    \"1-1\": \"string\",\n    \"2-1\": \"string\",\n    \"3-1\": \"string\",\n    \"4-1\": \"string\",\n    \"5-1\": \"string\",\n    \"6-1\": \"string\",\n    \"13-1\": \"string\",\n    \"h-3\": \"Description\",\n    \"0-3\": \"The email address of the candidate\",\n    \"1-2\": \"True\",\n    \"2-2\": \"True\",\n    \"3-2\": \"False\",\n    \"4-2\": \"False\",\n    \"5-2\": \"False\",\n    \"6-2\": \"False\",\n    \"7-2\": \"False\",\n    \"8-2\": \"False\",\n    \"9-2\": \"False\",\n    \"10-2\": \"False\",\n    \"11-2\": \"False\",\n    \"12-2\": \"False\",\n    \"13-2\": \"False\",\n    \"1-3\": \"The first name of the candidate\",\n    \"2-3\": \"The last name of the candidate\",\n    \"3-3\": \"The contact phone number of the candidate\",\n    \"4-3\": \"A base64 encoded copy of the candidates CV*\",\n    \"5-3\": \"A textual representation of the candidates CV*\",\n    \"6-3\": \"The name of the CV file being sent*\",\n    \"13-3\": \"An ID that you can specify that will be used to identify the candidate in future responses, for example webhook results\",\n    \"7-3\": \"The location the candidate resides in\",\n    \"8-3\": \"Any comment to include with the candidate.\"\n  },\n  \"cols\": 4,\n  \"rows\": 14\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Note\",\n  \"body\": \"One of `cv_file` or `cv_text`, and `cv_filename` must be supplied to\\nupload a CV.\\n\\n     (cv_file || cv_text) && cv_filename\"\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n    \\\"first_name\\\": \\\"The\\\",\\n    \\\"last_name\\\": \\\"Rock\\\",\\n    \\\"email\\\": \\\"test@test.com\\\",\\n    \\\"cv_file\\\": \\\"aGVsbG8=\\\",\\n    \\\"cv_filename\\\": \\\"hello.pdf\\\",\\n    \\\"location\\\": {\\n        \\\"country\\\": \\\"A Country\\\",\\n        \\\"address_lines\\\": [\\n            \\\"A Flat\\\",\\n            \\\"A Road\\\"\\n        ],\\n        \\\"city\\\": \\\"A Town\\\"\\n    },\\n    \\\"employment_history\\\": [\\n        {\\n            \\\"location\\\": \\\"London\\\",\\n            \\\"description\\\": \\\"Rule the serfs\\\",\\n            \\\"current_job\\\": true,\\n            \\\"job_title\\\": \\\"king\\\",\\n            \\\"end_date\\\": \\\"3000-01-01\\\",\\n            \\\"start_date\\\": \\\"1900-01-01\\\",\\n            \\\"employer_name\\\": \\\"RolePoint\\\"\\n        },\\n        {\\n            \\\"location\\\": \\\"London\\\",\\n            \\\"description\\\": \\\"Rule the serfs\\\",\\n            \\\"current_job\\\": false,\\n            \\\"job_title\\\": \\\"prince\\\",\\n            \\\"end_date\\\": \\\"3000-01-01\\\",\\n            \\\"start_date\\\": \\\"1900-01-01\\\",\\n            \\\"employer_name\\\": \\\"RolePoint\\\"\\n        }\\n    ],\\n    \\\"education_history\\\": [\\n        {\\n            \\\"location\\\": \\\"Not London\\\",\\n            \\\"course_name\\\": \\\"kingsmanship\\\",\\n            \\\"description\\\": \\\"Learnt to rule\\\",\\n            \\\"establishment_name\\\": \\\"Carl University\\\",\\n            \\\"end_date\\\": \\\"3000-01-01\\\",\\n            \\\"start_date\\\": \\\"1900-01-01\\\"\\n        },\\n        {\\n            \\\"location\\\": \\\"Not London\\\",\\n            \\\"course_name\\\": \\\"princing\\\",\\n            \\\"start_date\\\": \\\"1900-01-01\\\",\\n            \\\"end_date\\\": \\\"3000-01-01\\\",\\n            \\\"establishment_name\\\": \\\"Carl University\\\",\\n            \\\"description\\\": \\\"Learnt to rule\\\"\\n        }\\n    ],\\n    \\\"client_id\\\": \\\"123456786\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ],\n  \"sidebar\": true\n}\n[/block]","createdAt":"2016-03-03T13:26:35.539Z","isReference":true,"project":"569e6099ebbadc0d0079becd","order":0,"parentDoc":null,"sync_unique":"","excerpt":"","githubsync":"","title":"Candidate","type":"basic","user":"543d38fea10ab32000b3aa8f","version":"569e609aebbadc0d0079bed0","category":"56d837c93eb4dd0b00201b24","hidden":false,"link_external":false,"link_url":"","slug":"resources","updates":["585d5dec44b9a525008afdca","585d5dedfa2ea32f004ff42a"],"childrenPages":[]}

Candidate


[block:parameters] { "data": { "h-0": "Attribute", "h-1": "Type", "h-2": "Required", "0-0": "email", "0-1": "string", "0-2": "True", "1-0": "first_name", "2-0": "last_name", "3-0": "phone", "4-0": "cv_file", "5-0": "cv_text", "6-0": "cv_filename", "7-0": "location", "7-1": "[Location](doc:location)", "8-0": "comment", "8-1": "[Comment](doc:comment)", "9-0": "social_profiles", "9-1": "list<[Social Profile](doc:social-profile)>", "10-0": "referrers", "11-0": "employment_history", "10-1": "list<[Referrer](doc:referrer)>", "11-1": "list<[Employment History](doc:employment-history)>", "12-0": "education_history", "12-1": "list<[Education History](doc:education-history)>", "13-0": "client_id", "1-1": "string", "2-1": "string", "3-1": "string", "4-1": "string", "5-1": "string", "6-1": "string", "13-1": "string", "h-3": "Description", "0-3": "The email address of the candidate", "1-2": "True", "2-2": "True", "3-2": "False", "4-2": "False", "5-2": "False", "6-2": "False", "7-2": "False", "8-2": "False", "9-2": "False", "10-2": "False", "11-2": "False", "12-2": "False", "13-2": "False", "1-3": "The first name of the candidate", "2-3": "The last name of the candidate", "3-3": "The contact phone number of the candidate", "4-3": "A base64 encoded copy of the candidates CV*", "5-3": "A textual representation of the candidates CV*", "6-3": "The name of the CV file being sent*", "13-3": "An ID that you can specify that will be used to identify the candidate in future responses, for example webhook results", "7-3": "The location the candidate resides in", "8-3": "Any comment to include with the candidate." }, "cols": 4, "rows": 14 } [/block] [block:callout] { "type": "info", "title": "Note", "body": "One of `cv_file` or `cv_text`, and `cv_filename` must be supplied to\nupload a CV.\n\n (cv_file || cv_text) && cv_filename" } [/block] [block:code] { "codes": [ { "code": "{\n \"first_name\": \"The\",\n \"last_name\": \"Rock\",\n \"email\": \"test@test.com\",\n \"cv_file\": \"aGVsbG8=\",\n \"cv_filename\": \"hello.pdf\",\n \"location\": {\n \"country\": \"A Country\",\n \"address_lines\": [\n \"A Flat\",\n \"A Road\"\n ],\n \"city\": \"A Town\"\n },\n \"employment_history\": [\n {\n \"location\": \"London\",\n \"description\": \"Rule the serfs\",\n \"current_job\": true,\n \"job_title\": \"king\",\n \"end_date\": \"3000-01-01\",\n \"start_date\": \"1900-01-01\",\n \"employer_name\": \"RolePoint\"\n },\n {\n \"location\": \"London\",\n \"description\": \"Rule the serfs\",\n \"current_job\": false,\n \"job_title\": \"prince\",\n \"end_date\": \"3000-01-01\",\n \"start_date\": \"1900-01-01\",\n \"employer_name\": \"RolePoint\"\n }\n ],\n \"education_history\": [\n {\n \"location\": \"Not London\",\n \"course_name\": \"kingsmanship\",\n \"description\": \"Learnt to rule\",\n \"establishment_name\": \"Carl University\",\n \"end_date\": \"3000-01-01\",\n \"start_date\": \"1900-01-01\"\n },\n {\n \"location\": \"Not London\",\n \"course_name\": \"princing\",\n \"start_date\": \"1900-01-01\",\n \"end_date\": \"3000-01-01\",\n \"establishment_name\": \"Carl University\",\n \"description\": \"Learnt to rule\"\n }\n ],\n \"client_id\": \"123456786\"\n}", "language": "json" } ], "sidebar": true } [/block]
[block:parameters] { "data": { "h-0": "Attribute", "h-1": "Type", "h-2": "Required", "0-0": "email", "0-1": "string", "0-2": "True", "1-0": "first_name", "2-0": "last_name", "3-0": "phone", "4-0": "cv_file", "5-0": "cv_text", "6-0": "cv_filename", "7-0": "location", "7-1": "[Location](doc:location)", "8-0": "comment", "8-1": "[Comment](doc:comment)", "9-0": "social_profiles", "9-1": "list<[Social Profile](doc:social-profile)>", "10-0": "referrers", "11-0": "employment_history", "10-1": "list<[Referrer](doc:referrer)>", "11-1": "list<[Employment History](doc:employment-history)>", "12-0": "education_history", "12-1": "list<[Education History](doc:education-history)>", "13-0": "client_id", "1-1": "string", "2-1": "string", "3-1": "string", "4-1": "string", "5-1": "string", "6-1": "string", "13-1": "string", "h-3": "Description", "0-3": "The email address of the candidate", "1-2": "True", "2-2": "True", "3-2": "False", "4-2": "False", "5-2": "False", "6-2": "False", "7-2": "False", "8-2": "False", "9-2": "False", "10-2": "False", "11-2": "False", "12-2": "False", "13-2": "False", "1-3": "The first name of the candidate", "2-3": "The last name of the candidate", "3-3": "The contact phone number of the candidate", "4-3": "A base64 encoded copy of the candidates CV*", "5-3": "A textual representation of the candidates CV*", "6-3": "The name of the CV file being sent*", "13-3": "An ID that you can specify that will be used to identify the candidate in future responses, for example webhook results", "7-3": "The location the candidate resides in", "8-3": "Any comment to include with the candidate." }, "cols": 4, "rows": 14 } [/block] [block:callout] { "type": "info", "title": "Note", "body": "One of `cv_file` or `cv_text`, and `cv_filename` must be supplied to\nupload a CV.\n\n (cv_file || cv_text) && cv_filename" } [/block] [block:code] { "codes": [ { "code": "{\n \"first_name\": \"The\",\n \"last_name\": \"Rock\",\n \"email\": \"test@test.com\",\n \"cv_file\": \"aGVsbG8=\",\n \"cv_filename\": \"hello.pdf\",\n \"location\": {\n \"country\": \"A Country\",\n \"address_lines\": [\n \"A Flat\",\n \"A Road\"\n ],\n \"city\": \"A Town\"\n },\n \"employment_history\": [\n {\n \"location\": \"London\",\n \"description\": \"Rule the serfs\",\n \"current_job\": true,\n \"job_title\": \"king\",\n \"end_date\": \"3000-01-01\",\n \"start_date\": \"1900-01-01\",\n \"employer_name\": \"RolePoint\"\n },\n {\n \"location\": \"London\",\n \"description\": \"Rule the serfs\",\n \"current_job\": false,\n \"job_title\": \"prince\",\n \"end_date\": \"3000-01-01\",\n \"start_date\": \"1900-01-01\",\n \"employer_name\": \"RolePoint\"\n }\n ],\n \"education_history\": [\n {\n \"location\": \"Not London\",\n \"course_name\": \"kingsmanship\",\n \"description\": \"Learnt to rule\",\n \"establishment_name\": \"Carl University\",\n \"end_date\": \"3000-01-01\",\n \"start_date\": \"1900-01-01\"\n },\n {\n \"location\": \"Not London\",\n \"course_name\": \"princing\",\n \"start_date\": \"1900-01-01\",\n \"end_date\": \"3000-01-01\",\n \"establishment_name\": \"Carl University\",\n \"description\": \"Learnt to rule\"\n }\n ],\n \"client_id\": \"123456786\"\n}", "language": "json" } ], "sidebar": true } [/block]
{"_id":"56d83ec93eb4dd0b00201b31","body":"[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Attribute\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Required\",\n    \"h-3\": \"Description\",\n    \"0-0\": \"external_id\",\n    \"1-0\": \"address_lines\",\n    \"2-0\": \"city\",\n    \"3-0\": \"country\",\n    \"4-0\": \"country_code\",\n    \"5-0\": \"zipcode\",\n    \"0-1\": \"integer\",\n    \"1-1\": \"list<string>\",\n    \"2-1\": \"string\",\n    \"3-1\": \"string\",\n    \"4-1\": \"string\",\n    \"5-1\": \"string\",\n    \"0-2\": \"False\",\n    \"1-2\": \"False\",\n    \"2-2\": \"False\",\n    \"3-2\": \"False\",\n    \"4-2\": \"False\",\n    \"5-2\": \"False\",\n    \"0-3\": \"This is a field used by TEE to lookup a location\",\n    \"1-3\": \"This is a list of lines representing a users address, i.e. what you would usually split as Address Line 1, Address Line 2 would be sent through as a list here\",\n    \"2-3\": \"The city that the candidate currently resides in\",\n    \"3-3\": \"The country that the candidate currently resides in\",\n    \"4-3\": \"The country code that the candidate currently resides in as specified by [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\",\n    \"5-3\": \"The zipcode/postal code that the candidate currently resides in\"\n  },\n  \"cols\": 4,\n  \"rows\": 6\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"address_lines\\\": [\\n    \\\"A Flat\\\",\\n    \\\"A Road\\\"\\n  ],\\n  \\\"city\\\": \\\"A Town\\\",\\n  \\\"zipcode\\\": \\\"AB11 CDE\\\",\\n  \\\"country\\\": \\\"A Country\\\",\\n  \\\"country_code\\\": \\\"UK\\\",\\n  \\\"external_id\\\": \\\"123\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ],\n  \"sidebar\": true\n}\n[/block]","link_external":false,"githubsync":"","parentDoc":null,"sync_unique":"","title":"Location","__v":2,"api":{"auth":"required","params":[],"results":{"codes":[{"code":"{}","name":"","status":200,"language":"json"},{"status":400,"language":"json","code":"{}","name":""}]},"settings":"","url":""},"hidden":false,"order":1,"project":"569e6099ebbadc0d0079becd","updates":[],"user":"543d38fea10ab32000b3aa8f","version":"569e609aebbadc0d0079bed0","type":"basic","category":"56d837c93eb4dd0b00201b24","createdAt":"2016-03-03T13:40:25.858Z","excerpt":"","isReference":false,"link_url":"","slug":"location","childrenPages":[]}

Location


[block:parameters] { "data": { "h-0": "Attribute", "h-1": "Type", "h-2": "Required", "h-3": "Description", "0-0": "external_id", "1-0": "address_lines", "2-0": "city", "3-0": "country", "4-0": "country_code", "5-0": "zipcode", "0-1": "integer", "1-1": "list<string>", "2-1": "string", "3-1": "string", "4-1": "string", "5-1": "string", "0-2": "False", "1-2": "False", "2-2": "False", "3-2": "False", "4-2": "False", "5-2": "False", "0-3": "This is a field used by TEE to lookup a location", "1-3": "This is a list of lines representing a users address, i.e. what you would usually split as Address Line 1, Address Line 2 would be sent through as a list here", "2-3": "The city that the candidate currently resides in", "3-3": "The country that the candidate currently resides in", "4-3": "The country code that the candidate currently resides in as specified by [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)", "5-3": "The zipcode/postal code that the candidate currently resides in" }, "cols": 4, "rows": 6 } [/block] [block:code] { "codes": [ { "code": "{\n \"address_lines\": [\n \"A Flat\",\n \"A Road\"\n ],\n \"city\": \"A Town\",\n \"zipcode\": \"AB11 CDE\",\n \"country\": \"A Country\",\n \"country_code\": \"UK\",\n \"external_id\": \"123\"\n}", "language": "json" } ], "sidebar": true } [/block]
[block:parameters] { "data": { "h-0": "Attribute", "h-1": "Type", "h-2": "Required", "h-3": "Description", "0-0": "external_id", "1-0": "address_lines", "2-0": "city", "3-0": "country", "4-0": "country_code", "5-0": "zipcode", "0-1": "integer", "1-1": "list<string>", "2-1": "string", "3-1": "string", "4-1": "string", "5-1": "string", "0-2": "False", "1-2": "False", "2-2": "False", "3-2": "False", "4-2": "False", "5-2": "False", "0-3": "This is a field used by TEE to lookup a location", "1-3": "This is a list of lines representing a users address, i.e. what you would usually split as Address Line 1, Address Line 2 would be sent through as a list here", "2-3": "The city that the candidate currently resides in", "3-3": "The country that the candidate currently resides in", "4-3": "The country code that the candidate currently resides in as specified by [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)", "5-3": "The zipcode/postal code that the candidate currently resides in" }, "cols": 4, "rows": 6 } [/block] [block:code] { "codes": [ { "code": "{\n \"address_lines\": [\n \"A Flat\",\n \"A Road\"\n ],\n \"city\": \"A Town\",\n \"zipcode\": \"AB11 CDE\",\n \"country\": \"A Country\",\n \"country_code\": \"UK\",\n \"external_id\": \"123\"\n}", "language": "json" } ], "sidebar": true } [/block]
{"_id":"56d83f649d27560b00a4cc01","hidden":false,"link_url":"","parentDoc":null,"sync_unique":"","isReference":false,"link_external":false,"project":"569e6099ebbadc0d0079becd","slug":"comment","type":"basic","user":"543d38fea10ab32000b3aa8f","createdAt":"2016-03-03T13:43:00.782Z","githubsync":"","updates":[],"version":"569e609aebbadc0d0079bed0","__v":4,"api":{"auth":"required","params":[],"results":{"codes":[{"name":"","status":200,"language":"json","code":"{}"},{"language":"json","code":"{}","name":"","status":400}]},"settings":"","url":""},"body":"[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Attribute\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Required\",\n    \"h-3\": \"Description\",\n    \"0-0\": \"text\",\n    \"1-0\": \"subject\",\n    \"2-0\": \"city\",\n    \"3-0\": \"country\",\n    \"4-0\": \"country_code\",\n    \"5-0\": \"zipcode\",\n    \"0-1\": \"string\",\n    \"1-1\": \"string\",\n    \"2-1\": \"string\",\n    \"3-1\": \"string\",\n    \"4-1\": \"string\",\n    \"5-1\": \"string\",\n    \"0-2\": \"True\",\n    \"1-2\": \"False\",\n    \"2-2\": \"False\",\n    \"3-2\": \"False\",\n    \"4-2\": \"False\",\n    \"5-2\": \"False\",\n    \"0-3\": \"The text body of the comment\",\n    \"1-3\": \"The subject of the comment\",\n    \"2-3\": \"The city that the candidate currently resides in\",\n    \"3-3\": \"The country that the candidate currently resides in\",\n    \"4-3\": \"The country code that the candidate currently resides in as specified by [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\",\n    \"5-3\": \"The zipcode/postal code that the candidate currently resides in\"\n  },\n  \"cols\": 4,\n  \"rows\": 2\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"text\\\": \\\"A comment about the candidate/application\\\",\\n  \\\"subject\\\": \\\"Commenting about the candidate\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ],\n  \"sidebar\": true\n}\n[/block]","category":"56d837c93eb4dd0b00201b24","excerpt":"","order":2,"title":"Comment","childrenPages":[]}

Comment


[block:parameters] { "data": { "h-0": "Attribute", "h-1": "Type", "h-2": "Required", "h-3": "Description", "0-0": "text", "1-0": "subject", "2-0": "city", "3-0": "country", "4-0": "country_code", "5-0": "zipcode", "0-1": "string", "1-1": "string", "2-1": "string", "3-1": "string", "4-1": "string", "5-1": "string", "0-2": "True", "1-2": "False", "2-2": "False", "3-2": "False", "4-2": "False", "5-2": "False", "0-3": "The text body of the comment", "1-3": "The subject of the comment", "2-3": "The city that the candidate currently resides in", "3-3": "The country that the candidate currently resides in", "4-3": "The country code that the candidate currently resides in as specified by [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)", "5-3": "The zipcode/postal code that the candidate currently resides in" }, "cols": 4, "rows": 2 } [/block] [block:code] { "codes": [ { "code": "{\n \"text\": \"A comment about the candidate/application\",\n \"subject\": \"Commenting about the candidate\"\n}", "language": "json" } ], "sidebar": true } [/block]
[block:parameters] { "data": { "h-0": "Attribute", "h-1": "Type", "h-2": "Required", "h-3": "Description", "0-0": "text", "1-0": "subject", "2-0": "city", "3-0": "country", "4-0": "country_code", "5-0": "zipcode", "0-1": "string", "1-1": "string", "2-1": "string", "3-1": "string", "4-1": "string", "5-1": "string", "0-2": "True", "1-2": "False", "2-2": "False", "3-2": "False", "4-2": "False", "5-2": "False", "0-3": "The text body of the comment", "1-3": "The subject of the comment", "2-3": "The city that the candidate currently resides in", "3-3": "The country that the candidate currently resides in", "4-3": "The country code that the candidate currently resides in as specified by [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)", "5-3": "The zipcode/postal code that the candidate currently resides in" }, "cols": 4, "rows": 2 } [/block] [block:code] { "codes": [ { "code": "{\n \"text\": \"A comment about the candidate/application\",\n \"subject\": \"Commenting about the candidate\"\n}", "language": "json" } ], "sidebar": true } [/block]
{"_id":"56d83f9a9d27560b00a4cc04","project":"569e6099ebbadc0d0079becd","title":"Social Profile","user":"543d38fea10ab32000b3aa8f","isReference":false,"link_url":"","order":3,"sync_unique":"","version":"569e609aebbadc0d0079bed0","__v":3,"body":"[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Attribute\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Required\",\n    \"h-3\": \"Description\",\n    \"0-0\": \"url\",\n    \"1-0\": \"name\",\n    \"2-0\": \"city\",\n    \"3-0\": \"country\",\n    \"4-0\": \"country_code\",\n    \"5-0\": \"zipcode\",\n    \"0-1\": \"string\",\n    \"1-1\": \"string\",\n    \"2-1\": \"string\",\n    \"3-1\": \"string\",\n    \"4-1\": \"string\",\n    \"5-1\": \"string\",\n    \"0-2\": \"True\",\n    \"1-2\": \"False\",\n    \"2-2\": \"False\",\n    \"3-2\": \"False\",\n    \"4-2\": \"False\",\n    \"5-2\": \"False\",\n    \"0-3\": \"The URL link to the candidate profile on a social media site\",\n    \"1-3\": \"The name of the social media site\",\n    \"2-3\": \"The city that the candidate currently resides in\",\n    \"3-3\": \"The country that the candidate currently resides in\",\n    \"4-3\": \"The country code that the candidate currently resides in as specified by [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\",\n    \"5-3\": \"The zipcode/postal code that the candidate currently resides in\"\n  },\n  \"cols\": 4,\n  \"rows\": 2\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"name\\\": \\\"twitter\\\",\\n  \\\"url\\\": \\\"https://twitter.com/rolepoint\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ],\n  \"sidebar\": true\n}\n[/block]","createdAt":"2016-03-03T13:43:54.684Z","excerpt":"","githubsync":"","hidden":false,"slug":"social-profile","type":"basic","api":{"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"settings":"","url":"","auth":"required","params":[]},"category":"56d837c93eb4dd0b00201b24","updates":[],"link_external":false,"parentDoc":null,"childrenPages":[]}

Social Profile


[block:parameters] { "data": { "h-0": "Attribute", "h-1": "Type", "h-2": "Required", "h-3": "Description", "0-0": "url", "1-0": "name", "2-0": "city", "3-0": "country", "4-0": "country_code", "5-0": "zipcode", "0-1": "string", "1-1": "string", "2-1": "string", "3-1": "string", "4-1": "string", "5-1": "string", "0-2": "True", "1-2": "False", "2-2": "False", "3-2": "False", "4-2": "False", "5-2": "False", "0-3": "The URL link to the candidate profile on a social media site", "1-3": "The name of the social media site", "2-3": "The city that the candidate currently resides in", "3-3": "The country that the candidate currently resides in", "4-3": "The country code that the candidate currently resides in as specified by [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)", "5-3": "The zipcode/postal code that the candidate currently resides in" }, "cols": 4, "rows": 2 } [/block] [block:code] { "codes": [ { "code": "{\n \"name\": \"twitter\",\n \"url\": \"https://twitter.com/rolepoint\"\n}", "language": "json" } ], "sidebar": true } [/block]
[block:parameters] { "data": { "h-0": "Attribute", "h-1": "Type", "h-2": "Required", "h-3": "Description", "0-0": "url", "1-0": "name", "2-0": "city", "3-0": "country", "4-0": "country_code", "5-0": "zipcode", "0-1": "string", "1-1": "string", "2-1": "string", "3-1": "string", "4-1": "string", "5-1": "string", "0-2": "True", "1-2": "False", "2-2": "False", "3-2": "False", "4-2": "False", "5-2": "False", "0-3": "The URL link to the candidate profile on a social media site", "1-3": "The name of the social media site", "2-3": "The city that the candidate currently resides in", "3-3": "The country that the candidate currently resides in", "4-3": "The country code that the candidate currently resides in as specified by [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)", "5-3": "The zipcode/postal code that the candidate currently resides in" }, "cols": 4, "rows": 2 } [/block] [block:code] { "codes": [ { "code": "{\n \"name\": \"twitter\",\n \"url\": \"https://twitter.com/rolepoint\"\n}", "language": "json" } ], "sidebar": true } [/block]
{"_id":"56d83fca7a04df0b00ddf0e2","api":{"auth":"required","params":[],"results":{"codes":[{"language":"json","code":"{}","name":"","status":200},{"code":"{}","name":"","status":400,"language":"json"}]},"settings":"","url":""},"body":"This object is used to describe any referrers for an application. This would be\nused if a candidate was referred to a job by another person.\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Attribute\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Required\",\n    \"h-3\": \"Description\",\n    \"0-0\": \"email\",\n    \"1-0\": \"first_name\",\n    \"2-0\": \"last_name\",\n    \"3-0\": \"country\",\n    \"4-0\": \"country_code\",\n    \"5-0\": \"zipcode\",\n    \"0-1\": \"string\",\n    \"1-1\": \"string\",\n    \"2-1\": \"string\",\n    \"3-1\": \"string\",\n    \"4-1\": \"string\",\n    \"5-1\": \"string\",\n    \"0-2\": \"True\",\n    \"1-2\": \"True\",\n    \"2-2\": \"True\",\n    \"3-2\": \"False\",\n    \"4-2\": \"False\",\n    \"5-2\": \"False\",\n    \"0-3\": \"The email address of the referrer\",\n    \"1-3\": \"The first name of the referrer\",\n    \"2-3\": \"The last name of the referrer\",\n    \"3-3\": \"The country that the candidate currently resides in\",\n    \"4-3\": \"The country code that the candidate currently resides in as specified by [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\",\n    \"5-3\": \"The zipcode/postal code that the candidate currently resides in\"\n  },\n  \"cols\": 4,\n  \"rows\": 3\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"email\\\": \\\"referrer@example.com\\\",\\n  \\\"first_name\\\": \\\"Referrer\\\",\\n  \\\"last_name\\\": \\\"Referrerson\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ],\n  \"sidebar\": true\n}\n[/block]","excerpt":"","link_external":false,"parentDoc":null,"category":"56d837c93eb4dd0b00201b24","hidden":false,"isReference":false,"order":4,"__v":4,"updates":[],"createdAt":"2016-03-03T13:44:42.456Z","githubsync":"","link_url":"","project":"569e6099ebbadc0d0079becd","slug":"referrer","sync_unique":"","title":"Referrer","type":"basic","user":"543d38fea10ab32000b3aa8f","version":"569e609aebbadc0d0079bed0","childrenPages":[]}

Referrer


This object is used to describe any referrers for an application. This would be used if a candidate was referred to a job by another person. [block:parameters] { "data": { "h-0": "Attribute", "h-1": "Type", "h-2": "Required", "h-3": "Description", "0-0": "email", "1-0": "first_name", "2-0": "last_name", "3-0": "country", "4-0": "country_code", "5-0": "zipcode", "0-1": "string", "1-1": "string", "2-1": "string", "3-1": "string", "4-1": "string", "5-1": "string", "0-2": "True", "1-2": "True", "2-2": "True", "3-2": "False", "4-2": "False", "5-2": "False", "0-3": "The email address of the referrer", "1-3": "The first name of the referrer", "2-3": "The last name of the referrer", "3-3": "The country that the candidate currently resides in", "4-3": "The country code that the candidate currently resides in as specified by [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)", "5-3": "The zipcode/postal code that the candidate currently resides in" }, "cols": 4, "rows": 3 } [/block] [block:code] { "codes": [ { "code": "{\n \"email\": \"referrer@example.com\",\n \"first_name\": \"Referrer\",\n \"last_name\": \"Referrerson\"\n}", "language": "json" } ], "sidebar": true } [/block]
This object is used to describe any referrers for an application. This would be used if a candidate was referred to a job by another person. [block:parameters] { "data": { "h-0": "Attribute", "h-1": "Type", "h-2": "Required", "h-3": "Description", "0-0": "email", "1-0": "first_name", "2-0": "last_name", "3-0": "country", "4-0": "country_code", "5-0": "zipcode", "0-1": "string", "1-1": "string", "2-1": "string", "3-1": "string", "4-1": "string", "5-1": "string", "0-2": "True", "1-2": "True", "2-2": "True", "3-2": "False", "4-2": "False", "5-2": "False", "0-3": "The email address of the referrer", "1-3": "The first name of the referrer", "2-3": "The last name of the referrer", "3-3": "The country that the candidate currently resides in", "4-3": "The country code that the candidate currently resides in as specified by [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)", "5-3": "The zipcode/postal code that the candidate currently resides in" }, "cols": 4, "rows": 3 } [/block] [block:code] { "codes": [ { "code": "{\n \"email\": \"referrer@example.com\",\n \"first_name\": \"Referrer\",\n \"last_name\": \"Referrerson\"\n}", "language": "json" } ], "sidebar": true } [/block]
{"_id":"56d83fdfc83c5f0b00d2877f","hidden":false,"link_url":"","sync_unique":"","githubsync":"","parentDoc":null,"type":"basic","api":{"auth":"required","params":[],"results":{"codes":[{"name":"","status":200,"language":"json","code":"{}"},{"language":"json","code":"{}","name":"","status":400}]},"settings":"","url":""},"category":"56d837c93eb4dd0b00201b24","createdAt":"2016-03-03T13:45:03.695Z","link_external":false,"slug":"employment-history","updates":[],"user":"543d38fea10ab32000b3aa8f","__v":4,"version":"569e609aebbadc0d0079bed0","excerpt":"","isReference":false,"order":5,"project":"569e6099ebbadc0d0079becd","title":"Employment History","body":"[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Attribute\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Required\",\n    \"h-3\": \"Description\",\n    \"0-0\": \"employer_name\",\n    \"1-0\": \"job_title\",\n    \"2-0\": \"location\",\n    \"3-0\": \"description\",\n    \"4-0\": \"start_date\",\n    \"5-0\": \"end_date\",\n    \"0-1\": \"string\",\n    \"1-1\": \"string\",\n    \"2-1\": \"string\",\n    \"3-1\": \"string\",\n    \"4-1\": \"date\",\n    \"5-1\": \"date\",\n    \"0-2\": \"False\",\n    \"1-2\": \"False\",\n    \"2-2\": \"False\",\n    \"3-2\": \"False\",\n    \"4-2\": \"False\",\n    \"5-2\": \"False\",\n    \"0-3\": \"The name of the employer that the candidate was employed by\",\n    \"1-3\": \"The job title that the candidate held at the company\",\n    \"2-3\": \"The location that the company was based\",\n    \"3-3\": \"A description of the candidate's roles and responsibilities whilst at the company\",\n    \"4-3\": \"An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formatted date for when the candidate started their employment at the company\",\n    \"5-3\": \"An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formatted date for when the candidate ended their employment at the company\",\n    \"6-0\": \"current_job\",\n    \"6-1\": \"boolean\",\n    \"6-2\": \"False\",\n    \"6-3\": \"Whether the candidate is currently working for the company\"\n  },\n  \"cols\": 4,\n  \"rows\": 7\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"location\\\": \\\"London\\\",\\n  \\\"description\\\": \\\"Rule the Country\\\",\\n  \\\"current_job\\\": true,\\n  \\\"job_title\\\": \\\"queen\\\",\\n  \\\"end_date\\\": \\\"1901-22-01\\\",\\n  \\\"start_date\\\": \\\"1876-05-01\\\",\\n  \\\"employer_name\\\": \\\"Royal Family\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ],\n  \"sidebar\": true\n}\n[/block]","childrenPages":[]}

Employment History


[block:parameters] { "data": { "h-0": "Attribute", "h-1": "Type", "h-2": "Required", "h-3": "Description", "0-0": "employer_name", "1-0": "job_title", "2-0": "location", "3-0": "description", "4-0": "start_date", "5-0": "end_date", "0-1": "string", "1-1": "string", "2-1": "string", "3-1": "string", "4-1": "date", "5-1": "date", "0-2": "False", "1-2": "False", "2-2": "False", "3-2": "False", "4-2": "False", "5-2": "False", "0-3": "The name of the employer that the candidate was employed by", "1-3": "The job title that the candidate held at the company", "2-3": "The location that the company was based", "3-3": "A description of the candidate's roles and responsibilities whilst at the company", "4-3": "An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formatted date for when the candidate started their employment at the company", "5-3": "An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formatted date for when the candidate ended their employment at the company", "6-0": "current_job", "6-1": "boolean", "6-2": "False", "6-3": "Whether the candidate is currently working for the company" }, "cols": 4, "rows": 7 } [/block] [block:code] { "codes": [ { "code": "{\n \"location\": \"London\",\n \"description\": \"Rule the Country\",\n \"current_job\": true,\n \"job_title\": \"queen\",\n \"end_date\": \"1901-22-01\",\n \"start_date\": \"1876-05-01\",\n \"employer_name\": \"Royal Family\"\n}", "language": "json" } ], "sidebar": true } [/block]
[block:parameters] { "data": { "h-0": "Attribute", "h-1": "Type", "h-2": "Required", "h-3": "Description", "0-0": "employer_name", "1-0": "job_title", "2-0": "location", "3-0": "description", "4-0": "start_date", "5-0": "end_date", "0-1": "string", "1-1": "string", "2-1": "string", "3-1": "string", "4-1": "date", "5-1": "date", "0-2": "False", "1-2": "False", "2-2": "False", "3-2": "False", "4-2": "False", "5-2": "False", "0-3": "The name of the employer that the candidate was employed by", "1-3": "The job title that the candidate held at the company", "2-3": "The location that the company was based", "3-3": "A description of the candidate's roles and responsibilities whilst at the company", "4-3": "An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formatted date for when the candidate started their employment at the company", "5-3": "An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formatted date for when the candidate ended their employment at the company", "6-0": "current_job", "6-1": "boolean", "6-2": "False", "6-3": "Whether the candidate is currently working for the company" }, "cols": 4, "rows": 7 } [/block] [block:code] { "codes": [ { "code": "{\n \"location\": \"London\",\n \"description\": \"Rule the Country\",\n \"current_job\": true,\n \"job_title\": \"queen\",\n \"end_date\": \"1901-22-01\",\n \"start_date\": \"1876-05-01\",\n \"employer_name\": \"Royal Family\"\n}", "language": "json" } ], "sidebar": true } [/block]
{"_id":"56d841183eb4dd0b00201b39","link_external":false,"slug":"education-history","sync_unique":"","category":"56d837c93eb4dd0b00201b24","createdAt":"2016-03-03T13:50:16.361Z","githubsync":"","order":6,"project":"569e6099ebbadc0d0079becd","type":"basic","updates":[],"__v":2,"hidden":false,"isReference":false,"link_url":"","user":"543d38fea10ab32000b3aa8f","api":{"settings":"","url":"","auth":"required","params":[],"results":{"codes":[{"code":"{}","name":"","status":200,"language":"json"},{"status":400,"language":"json","code":"{}","name":""}]}},"body":"[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Attribute\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Required\",\n    \"h-3\": \"Description\",\n    \"0-0\": \"establishment_name\",\n    \"1-0\": \"course_name\",\n    \"2-0\": \"location\",\n    \"3-0\": \"description\",\n    \"4-0\": \"start_date\",\n    \"5-0\": \"end_date\",\n    \"0-1\": \"string\",\n    \"1-1\": \"string\",\n    \"2-1\": \"string\",\n    \"3-1\": \"string\",\n    \"4-1\": \"date\",\n    \"5-1\": \"date\",\n    \"0-2\": \"False\",\n    \"1-2\": \"False\",\n    \"2-2\": \"False\",\n    \"3-2\": \"False\",\n    \"4-2\": \"False\",\n    \"5-2\": \"False\",\n    \"0-3\": \"The name of the establishment that the candidate attended\",\n    \"1-3\": \"The name of the course undertaken by the candidate at the establishment\",\n    \"2-3\": \"An abbreviated notation of where the establishment was located.\",\n    \"3-3\": \"A description of what the course entailed at the establishment\",\n    \"4-3\": \"An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formatted date for when the candidate started their course at the establishment\",\n    \"5-3\": \"An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formatted date for when the candidate ended their course at the establishment\"\n  },\n  \"cols\": 4,\n  \"rows\": 6\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"location\\\": \\\"Newcastle Upon Tyne\\\",\\n  \\\"course_name\\\": \\\"Mathematics\\\",\\n  \\\"description\\\": \\\"Masters degreen in mathematics.\\\",\\n  \\\"establishment_name\\\": \\\"Newcastle University\\\",\\n  \\\"end_date\\\": \\\"2007-09-01\\\",\\n  \\\"start_date\\\": \\\"2011-06-01\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ],\n  \"sidebar\": true\n}\n[/block]","excerpt":"","parentDoc":null,"title":"Education History","version":"569e609aebbadc0d0079bed0","childrenPages":[]}

Education History


[block:parameters] { "data": { "h-0": "Attribute", "h-1": "Type", "h-2": "Required", "h-3": "Description", "0-0": "establishment_name", "1-0": "course_name", "2-0": "location", "3-0": "description", "4-0": "start_date", "5-0": "end_date", "0-1": "string", "1-1": "string", "2-1": "string", "3-1": "string", "4-1": "date", "5-1": "date", "0-2": "False", "1-2": "False", "2-2": "False", "3-2": "False", "4-2": "False", "5-2": "False", "0-3": "The name of the establishment that the candidate attended", "1-3": "The name of the course undertaken by the candidate at the establishment", "2-3": "An abbreviated notation of where the establishment was located.", "3-3": "A description of what the course entailed at the establishment", "4-3": "An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formatted date for when the candidate started their course at the establishment", "5-3": "An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formatted date for when the candidate ended their course at the establishment" }, "cols": 4, "rows": 6 } [/block] [block:code] { "codes": [ { "code": "{\n \"location\": \"Newcastle Upon Tyne\",\n \"course_name\": \"Mathematics\",\n \"description\": \"Masters degreen in mathematics.\",\n \"establishment_name\": \"Newcastle University\",\n \"end_date\": \"2007-09-01\",\n \"start_date\": \"2011-06-01\"\n}", "language": "json" } ], "sidebar": true } [/block]
[block:parameters] { "data": { "h-0": "Attribute", "h-1": "Type", "h-2": "Required", "h-3": "Description", "0-0": "establishment_name", "1-0": "course_name", "2-0": "location", "3-0": "description", "4-0": "start_date", "5-0": "end_date", "0-1": "string", "1-1": "string", "2-1": "string", "3-1": "string", "4-1": "date", "5-1": "date", "0-2": "False", "1-2": "False", "2-2": "False", "3-2": "False", "4-2": "False", "5-2": "False", "0-3": "The name of the establishment that the candidate attended", "1-3": "The name of the course undertaken by the candidate at the establishment", "2-3": "An abbreviated notation of where the establishment was located.", "3-3": "A description of what the course entailed at the establishment", "4-3": "An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formatted date for when the candidate started their course at the establishment", "5-3": "An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formatted date for when the candidate ended their course at the establishment" }, "cols": 4, "rows": 6 } [/block] [block:code] { "codes": [ { "code": "{\n \"location\": \"Newcastle Upon Tyne\",\n \"course_name\": \"Mathematics\",\n \"description\": \"Masters degreen in mathematics.\",\n \"establishment_name\": \"Newcastle University\",\n \"end_date\": \"2007-09-01\",\n \"start_date\": \"2011-06-01\"\n}", "language": "json" } ], "sidebar": true } [/block]
{"_id":"56dec7b49a586b200061c733","api":{"settings":"","results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"auth":"required","params":[],"url":""},"link_url":"","order":7,"type":"basic","body":"[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Attribute\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Required\",\n    \"0-0\": \"job_id\",\n    \"0-1\": \"string\",\n    \"0-2\": \"True\",\n    \"1-0\": \"client_id\",\n    \"2-0\": \"last_name\",\n    \"3-0\": \"phone\",\n    \"4-0\": \"cv_file\",\n    \"5-0\": \"cv_text\",\n    \"6-0\": \"cv_filename\",\n    \"7-0\": \"location\",\n    \"7-1\": \"[Location](doc:location)\",\n    \"8-0\": \"comment\",\n    \"8-1\": \"[Comment](doc:comment)\",\n    \"9-0\": \"social_profiles\",\n    \"9-1\": \"list<[Social Profile](doc:social-profile)>\",\n    \"10-0\": \"referrers\",\n    \"11-0\": \"employment_history\",\n    \"10-1\": \"list<[Referrer](doc:referrer)>\",\n    \"11-1\": \"list<[Employment History](doc:employment-history)>\",\n    \"12-0\": \"education_history\",\n    \"12-1\": \"list<[Education History](doc:education-history)>\",\n    \"13-0\": \"client_id\",\n    \"1-1\": \"string\",\n    \"2-1\": \"string\",\n    \"3-1\": \"string\",\n    \"4-1\": \"string\",\n    \"5-1\": \"string\",\n    \"6-1\": \"string\",\n    \"13-1\": \"string\",\n    \"h-3\": \"Description\",\n    \"0-3\": \"The ATS ID of the job the application is for.\",\n    \"1-2\": \"False\",\n    \"2-2\": \"True\",\n    \"3-2\": \"False\",\n    \"4-2\": \"False\",\n    \"5-2\": \"False\",\n    \"6-2\": \"False\",\n    \"7-2\": \"False\",\n    \"8-2\": \"False\",\n    \"9-2\": \"False\",\n    \"10-2\": \"False\",\n    \"11-2\": \"False\",\n    \"12-2\": \"False\",\n    \"13-2\": \"False\",\n    \"1-3\": \"An ID that you can specify that will be used to identify the candidate in future responses, for example webhook results.\",\n    \"2-3\": \"The last name of the candidate\",\n    \"3-3\": \"The contact phone number of the candidate\",\n    \"4-3\": \"A base64 encoded copy of the candidates CV*\",\n    \"5-3\": \"A textual representation of the candidates CV*\",\n    \"6-3\": \"The name of the CV file being sent*\",\n    \"13-3\": \"An ID that you can specify that will be used to identify the candidate in future responses, for example webhook results\",\n    \"7-3\": \"The location the candidate resides in\",\n    \"8-3\": \"Any comment to include with the candidate.\"\n  },\n  \"cols\": 4,\n  \"rows\": 2\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n    \\\"job_id\\\": \\\"ABC123\\\",\\n    \\\"client_id\\\": \\\"unique_identifier\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ],\n  \"sidebar\": true\n}\n[/block]","parentDoc":null,"project":"569e6099ebbadc0d0079becd","title":"Application","updates":[],"version":"569e609aebbadc0d0079bed0","category":"56d837c93eb4dd0b00201b24","createdAt":"2016-03-08T12:38:12.795Z","excerpt":"","isReference":false,"slug":"application","user":"543d38fea10ab32000b3aa8f","__v":0,"githubsync":"","hidden":false,"link_external":false,"sync_unique":"","childrenPages":[]}

Application


[block:parameters] { "data": { "h-0": "Attribute", "h-1": "Type", "h-2": "Required", "0-0": "job_id", "0-1": "string", "0-2": "True", "1-0": "client_id", "2-0": "last_name", "3-0": "phone", "4-0": "cv_file", "5-0": "cv_text", "6-0": "cv_filename", "7-0": "location", "7-1": "[Location](doc:location)", "8-0": "comment", "8-1": "[Comment](doc:comment)", "9-0": "social_profiles", "9-1": "list<[Social Profile](doc:social-profile)>", "10-0": "referrers", "11-0": "employment_history", "10-1": "list<[Referrer](doc:referrer)>", "11-1": "list<[Employment History](doc:employment-history)>", "12-0": "education_history", "12-1": "list<[Education History](doc:education-history)>", "13-0": "client_id", "1-1": "string", "2-1": "string", "3-1": "string", "4-1": "string", "5-1": "string", "6-1": "string", "13-1": "string", "h-3": "Description", "0-3": "The ATS ID of the job the application is for.", "1-2": "False", "2-2": "True", "3-2": "False", "4-2": "False", "5-2": "False", "6-2": "False", "7-2": "False", "8-2": "False", "9-2": "False", "10-2": "False", "11-2": "False", "12-2": "False", "13-2": "False", "1-3": "An ID that you can specify that will be used to identify the candidate in future responses, for example webhook results.", "2-3": "The last name of the candidate", "3-3": "The contact phone number of the candidate", "4-3": "A base64 encoded copy of the candidates CV*", "5-3": "A textual representation of the candidates CV*", "6-3": "The name of the CV file being sent*", "13-3": "An ID that you can specify that will be used to identify the candidate in future responses, for example webhook results", "7-3": "The location the candidate resides in", "8-3": "Any comment to include with the candidate." }, "cols": 4, "rows": 2 } [/block] [block:code] { "codes": [ { "code": "{\n \"job_id\": \"ABC123\",\n \"client_id\": \"unique_identifier\"\n}", "language": "json" } ], "sidebar": true } [/block]
[block:parameters] { "data": { "h-0": "Attribute", "h-1": "Type", "h-2": "Required", "0-0": "job_id", "0-1": "string", "0-2": "True", "1-0": "client_id", "2-0": "last_name", "3-0": "phone", "4-0": "cv_file", "5-0": "cv_text", "6-0": "cv_filename", "7-0": "location", "7-1": "[Location](doc:location)", "8-0": "comment", "8-1": "[Comment](doc:comment)", "9-0": "social_profiles", "9-1": "list<[Social Profile](doc:social-profile)>", "10-0": "referrers", "11-0": "employment_history", "10-1": "list<[Referrer](doc:referrer)>", "11-1": "list<[Employment History](doc:employment-history)>", "12-0": "education_history", "12-1": "list<[Education History](doc:education-history)>", "13-0": "client_id", "1-1": "string", "2-1": "string", "3-1": "string", "4-1": "string", "5-1": "string", "6-1": "string", "13-1": "string", "h-3": "Description", "0-3": "The ATS ID of the job the application is for.", "1-2": "False", "2-2": "True", "3-2": "False", "4-2": "False", "5-2": "False", "6-2": "False", "7-2": "False", "8-2": "False", "9-2": "False", "10-2": "False", "11-2": "False", "12-2": "False", "13-2": "False", "1-3": "An ID that you can specify that will be used to identify the candidate in future responses, for example webhook results.", "2-3": "The last name of the candidate", "3-3": "The contact phone number of the candidate", "4-3": "A base64 encoded copy of the candidates CV*", "5-3": "A textual representation of the candidates CV*", "6-3": "The name of the CV file being sent*", "13-3": "An ID that you can specify that will be used to identify the candidate in future responses, for example webhook results", "7-3": "The location the candidate resides in", "8-3": "Any comment to include with the candidate." }, "cols": 4, "rows": 2 } [/block] [block:code] { "codes": [ { "code": "{\n \"job_id\": \"ABC123\",\n \"client_id\": \"unique_identifier\"\n}", "language": "json" } ], "sidebar": true } [/block]
{"_id":"579a1c26c0c50c22008d6f85","order":0,"project":"569e6099ebbadc0d0079becd","slug":"sandbox-api-overview","sync_unique":"","createdAt":"2016-07-28T14:52:22.308Z","excerpt":"","githubsync":"","isReference":true,"parentDoc":null,"title":"Sandbox API Overview","type":"basic","__v":0,"hidden":false,"link_external":false,"link_url":"","updates":[],"version":"569e609aebbadc0d0079bed0","api":{"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"code":"{}","name":"","status":400,"language":"json"}]},"settings":"","auth":"required","params":[],"url":""},"category":"579a1b68b0898a290010a7f6","body":"The connect sandbox API provides some additional functionality for developing & testing sandbox connectors.\n\nIt is currently under development and should be considered experimental.  Changes may happen without much notice, and there might be bugs.","user":"56cc98fcb4cbcf0b004a6009","childrenPages":[]}

Sandbox API Overview


The connect sandbox API provides some additional functionality for developing & testing sandbox connectors. It is currently under development and should be considered experimental. Changes may happen without much notice, and there might be bugs.
The connect sandbox API provides some additional functionality for developing & testing sandbox connectors. It is currently under development and should be considered experimental. Changes may happen without much notice, and there might be bugs.
{"_id":"579a20ddfd9f3c0e008e4f1f","hidden":false,"isReference":true,"type":"post","user":"56cc98fcb4cbcf0b004a6009","api":{"url":"/sandbox/trigger/job_update","auth":"required","examples":{"codes":[]},"method":"post","params":[],"results":{"codes":[{"name":"","status":200,"language":"json","code":"{\n  \"status\": \"ok\",\n  \"request_id\": \"87d82a3f-4434-48a5-b211-dd77d685bd2a\"\n}"}]},"settings":""},"category":"579a1b68b0898a290010a7f6","githubsync":"","project":"569e6099ebbadc0d0079becd","title":"Trigger Job Update","createdAt":"2016-07-28T15:12:29.574Z","excerpt":"","link_url":"","parentDoc":null,"slug":"trigger-job-update","updates":[],"version":"569e609aebbadc0d0079bed0","__v":0,"body":"Hitting this endpoint will trigger a job update on the sandbox connector.  This will cause webhooks to be fired for any new, updated or deleted jobs.\n\nThe returned `request_id` can be used to query the status of the ongoing update.","link_external":false,"order":1,"sync_unique":"","childrenPages":[]}

postTrigger Job Update


Hitting this endpoint will trigger a job update on the sandbox connector. This will cause webhooks to be fired for any new, updated or deleted jobs. The returned `request_id` can be used to query the status of the ongoing update.

Definition

{{ api_url }}{{ page_api_url }}

Result Format



Hitting this endpoint will trigger a job update on the sandbox connector. This will cause webhooks to be fired for any new, updated or deleted jobs. The returned `request_id` can be used to query the status of the ongoing update.
{"_id":"57bde24a342bcf0e00d5b051","api":{"examples":{"codes":[]},"method":"post","params":[],"results":{"codes":[{"status":200,"language":"json","code":"{\n  \"status\": \"ok\",\n}","name":""}]},"settings":"","url":"/sandbox/trigger/candidate_update","auth":"required"},"githubsync":"","link_external":false,"parentDoc":null,"updates":[],"title":"Trigger Candidate Status Update","hidden":false,"isReference":true,"link_url":"","body":"Hitting this endpoint will trigger a candidate status update on the sandbox connector.  This will cause webhooks to be fired for any candidates that have changed status since the last update.","category":"579a1b68b0898a290010a7f6","createdAt":"2016-08-24T18:07:06.046Z","excerpt":"","order":2,"slug":"trigger-candidate-status-update","user":"56cc98fcb4cbcf0b004a6009","__v":0,"project":"569e6099ebbadc0d0079becd","sync_unique":"","type":"post","version":"569e609aebbadc0d0079bed0","childrenPages":[]}

postTrigger Candidate Status Update


Hitting this endpoint will trigger a candidate status update on the sandbox connector. This will cause webhooks to be fired for any candidates that have changed status since the last update.

Definition

{{ api_url }}{{ page_api_url }}

Result Format



Hitting this endpoint will trigger a candidate status update on the sandbox connector. This will cause webhooks to be fired for any candidates that have changed status since the last update.
{"_id":"579a227bd5decc2b00eefeef","order":3,"parentDoc":null,"project":"569e6099ebbadc0d0079becd","slug":"sandbox-async-request-status","type":"get","api":{"method":"get","params":[{"required":false,"desc":"The ID of your connector.","default":"","type":"string","name":"connector_id","_id":"56e1647e7e3fc43600cad435","ref":"","in":"query"},{"type":"string","name":"request_id","_id":"56e1647e7e3fc43600cad434","ref":"","in":"path","required":false,"desc":"The ID of the asynchronous request as returned in the initial request.","default":""}],"results":{"codes":[{"status":200,"language":"json","code":"{\n  \"status\": \"in_progress\",\n  \"result_info\": null,\n  \"error_info\": null\n}","name":"In progress"},{"language":"json","code":"{\n  \"status\": \"complete\",\n  \"result_info\": {\n    \"url\": 'https://api.rolepoint-connect.com/',\n    \"ttl\": 123\n  },\n  \"error_info\": null\n}","name":null,"status":200},{"name":"Failed","status":200,"language":"json","code":"{\n  \"status\": \"failed\",\n  \"result_info\": {\n    \"url\": 'https://api.rolepoint-connect.com/',\n    \"ttl\": 123\n  },\n  \"error_info\": {\n    \"message\": \"Message describing the error that occured\",\n    \"code\": 123\n  }\n}"}]},"settings":"","url":"/sandbox/request/:request_id/status","auth":"required","examples":{"codes":[{"language":"http","code":"GET /v1/123/requests/f586c5aa-842d-4e49-bcca-876a11e82ede/status HTTP/1.1\nHost: api.rolepoint-connect.com\nAccept: application/rolepoint.v2+json\nAuthorization: xxxxx"},{"language":"python","code":"import json\nimport requests\n\nconnector_id = '123'\nusername = 'username'\npassword = 'password'\nrequest_id = ''\n\nurl = \"https://api.rolepoint-connect.com/v1/{}/requests/{}/status\".format(\n  connector_id, request_id\n)\n\nresponse = requests.get(url, auth=(username, password))\n\nprint(response.text)"}]}},"isReference":true,"title":"Sandbox Async Request Status","category":"579a1b68b0898a290010a7f6","createdAt":"2016-07-28T15:19:23.528Z","excerpt":"Endpoint for getting the status of an asynchronous request","githubsync":"","hidden":false,"link_external":false,"link_url":"","updates":[],"__v":0,"body":"To get the status of creation of an asynchronous request, you can query the\n`request_status_url` provided when the request was created.\n\nAs part of the response, we include an `X-Poll-Interval` header which specifies how long (in seconds) until you are allowed to make another request.\n\nFor example:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"GET /v1/123/requests/f586c5aa-842d-4e49-bcca-876a11e82ede/status HTTP/1.1\\nHost: api.rolepoint-connect.com\\nAccept: application/rolepoint.v2+json\\nAuthorization: xxxxx\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\nIf the request is still in progress, this will respond:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"HTTP/1.1 200 OK\\nStatus: 200 OK\\nContent-Type: application/rolepoint.v2+json\\n\\n{\\n  \\\"status\\\": \\\"in_progress\\\",\\n  \\\"result_info\\\": null,\\n  \\\"error_info\\\": null\\n}\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\nIf the request is finished, this will respond:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"HTTP/1.1 200 OK\\nStatus: 200 OK\\nContent-Type: application/rolepoint.v2+json\\n\\n{\\n  \\\"status\\\": \\\"complete\\\",\\n  \\\"result_info\\\": {\\n    \\\"url\\\": \\\"https://api.rolepoint-connect.com/a_result/1234\\\",\\n    \\\"ttl\\\": 123\\n  },\\n  \\\"error_info\\\": null\\n}\\n\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\n`result_info` contains 2 fields:\n\n* `url` - This is the URL you can query to get the result of the operation.\n* `ttl` - This is the time that the application result will remain available\n  for in seconds.\n\nA failed response will contain the following fields:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"HTTP/1.1 200 OK\\nStatus: 200 OK\\nContent-Type: application/rolepoint.v2+json\\n\\n{\\n  \\\"status\\\": \\\"failed\\\",\\n  \\\"result_info\\\": {\\n    \\\"url\\\": null\\n    \\\"ttl\\\": 123\\n  },\\n  \\\"error_info\\\": {\\n    \\\"message\\\": \\\"Message describing the error that occured\\\",\\n    \\\"code\\\": 123\\n  }\\n}\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\n`error_info` contains 2 fields:\n\n* `message` - This is the error message relating to the reason the request\n    failed.\n* `code` - This is the error code relating to the reason the request failed.","user":"56cc98fcb4cbcf0b004a6009","version":"569e609aebbadc0d0079bed0","sync_unique":"","childrenPages":[]}

getSandbox Async Request Status

Endpoint for getting the status of an asynchronous request

Path Params

request_id:
string
The ID of the asynchronous request as returned in the initial request.

Query Params

connector_id:
string
The ID of your connector.
To get the status of creation of an asynchronous request, you can query the `request_status_url` provided when the request was created. As part of the response, we include an `X-Poll-Interval` header which specifies how long (in seconds) until you are allowed to make another request. For example: [block:code] { "codes": [ { "code": "GET /v1/123/requests/f586c5aa-842d-4e49-bcca-876a11e82ede/status HTTP/1.1\nHost: api.rolepoint-connect.com\nAccept: application/rolepoint.v2+json\nAuthorization: xxxxx", "language": "http" } ] } [/block] If the request is still in progress, this will respond: [block:code] { "codes": [ { "code": "HTTP/1.1 200 OK\nStatus: 200 OK\nContent-Type: application/rolepoint.v2+json\n\n{\n \"status\": \"in_progress\",\n \"result_info\": null,\n \"error_info\": null\n}", "language": "http" } ] } [/block] If the request is finished, this will respond: [block:code] { "codes": [ { "code": "HTTP/1.1 200 OK\nStatus: 200 OK\nContent-Type: application/rolepoint.v2+json\n\n{\n \"status\": \"complete\",\n \"result_info\": {\n \"url\": \"https://api.rolepoint-connect.com/a_result/1234\",\n \"ttl\": 123\n },\n \"error_info\": null\n}\n", "language": "http" } ] } [/block] `result_info` contains 2 fields: * `url` - This is the URL you can query to get the result of the operation. * `ttl` - This is the time that the application result will remain available for in seconds. A failed response will contain the following fields: [block:code] { "codes": [ { "code": "HTTP/1.1 200 OK\nStatus: 200 OK\nContent-Type: application/rolepoint.v2+json\n\n{\n \"status\": \"failed\",\n \"result_info\": {\n \"url\": null\n \"ttl\": 123\n },\n \"error_info\": {\n \"message\": \"Message describing the error that occured\",\n \"code\": 123\n }\n}", "language": "http" } ] } [/block] `error_info` contains 2 fields: * `message` - This is the error message relating to the reason the request failed. * `code` - This is the error code relating to the reason the request failed.

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



To get the status of creation of an asynchronous request, you can query the `request_status_url` provided when the request was created. As part of the response, we include an `X-Poll-Interval` header which specifies how long (in seconds) until you are allowed to make another request. For example: [block:code] { "codes": [ { "code": "GET /v1/123/requests/f586c5aa-842d-4e49-bcca-876a11e82ede/status HTTP/1.1\nHost: api.rolepoint-connect.com\nAccept: application/rolepoint.v2+json\nAuthorization: xxxxx", "language": "http" } ] } [/block] If the request is still in progress, this will respond: [block:code] { "codes": [ { "code": "HTTP/1.1 200 OK\nStatus: 200 OK\nContent-Type: application/rolepoint.v2+json\n\n{\n \"status\": \"in_progress\",\n \"result_info\": null,\n \"error_info\": null\n}", "language": "http" } ] } [/block] If the request is finished, this will respond: [block:code] { "codes": [ { "code": "HTTP/1.1 200 OK\nStatus: 200 OK\nContent-Type: application/rolepoint.v2+json\n\n{\n \"status\": \"complete\",\n \"result_info\": {\n \"url\": \"https://api.rolepoint-connect.com/a_result/1234\",\n \"ttl\": 123\n },\n \"error_info\": null\n}\n", "language": "http" } ] } [/block] `result_info` contains 2 fields: * `url` - This is the URL you can query to get the result of the operation. * `ttl` - This is the time that the application result will remain available for in seconds. A failed response will contain the following fields: [block:code] { "codes": [ { "code": "HTTP/1.1 200 OK\nStatus: 200 OK\nContent-Type: application/rolepoint.v2+json\n\n{\n \"status\": \"failed\",\n \"result_info\": {\n \"url\": null\n \"ttl\": 123\n },\n \"error_info\": {\n \"message\": \"Message describing the error that occured\",\n \"code\": 123\n }\n}", "language": "http" } ] } [/block] `error_info` contains 2 fields: * `message` - This is the error message relating to the reason the request failed. * `code` - This is the error code relating to the reason the request failed.
{"_id":"56f412e30f1f970e006e2484","githubsync":"","link_external":false,"project":"569e6099ebbadc0d0079becd","title":"Reseller API","type":"basic","updates":[],"user":"56d846d5b20d260b0026570b","__v":1,"body":"You can use your reseller API credentials to create [Connectors](doc:connectors) on demand to integrate with your customer's ATSs.\n\n## RolePoint Reseller API\n\nThe RolePoint Reseller API follows the conventions laid out in [jsonapi](http://jsonapi.org/).\n\n## Schema\n\nAll API access is over HTTPS, and accessed from the `api.rolepoint-connect.com/reseller` domain. All data is sent and received as JSON.\n\nOptional fields can be sent in as `null` or omitted.  Optional fields in responses will not be omitted - instead they will be returned as `null` or empty.\n\nAll timestamps are returned in ISO 8601 format:\n\n    YYYY-MM-DDTHH:MM:SSZ\n\n## Client Errors\n\nThere are six possible types of client errors on API calls:\n\n1. Sending a request with missing credentials will result in a `401 Unauthorized` response\n\n    ```\n    HTTP/1.1 401 Unauthorized\n    ```\n\n2. Sending a request with invalid or insufficient credentials will result in a `401 Unauthorized` response.\n\n    ```\n    HTTP/1.1 401 Unauthorized\n    ```\n\n3. Sending a request to an endpoint that does not exist will result in a `404 Not Found` response.\n\n    ```\n    HTTP/1.1 404 Not Found\n    ```\n\n4. Sending malformed JSON bodies will result in a `400 Bad Request` response.\n\n    ```\n    HTTP/1.1 400 Bad Request\n    ```\n\n5. Sending JSON bodies with missing fields or unexpected fields will result in a `422 Unprocessable Entity` response.\n\n    ```\n    HTTP/1.1 422 Unprocessable Entity\n    ```\n\n6. Sending a `PATCH` or `DELETE` request without a etag will result in a `428 Precondition Required` response.\n\n    ```\n    HTTP/1.1 428 Precondition Required\n    ```\n\n7. Sending a `PATCH` or `DELETE` request with an invalid etag will result in a `412 Precondition Failed` response.\n\n    ```\n    HTTP/1.1 412 Precondition Failed\n    ```\n\nIf endpoints have custom validation errors, they will be documented with the endpoint.\n\n## Other Errors\n\nIf an unexpected error occurs during an API call, the server will return a `500 Internal Server Error`\n\n    HTTP/1.1 500 Internal Server Error\n\nYou should assume that these requests failed and attempt them again later.\n\n## HTTP Redirects\n\nThe API uses HTTP redirection where appropriate.  Clients should assume that any request may result in a redirection.  Receiving an HTTP redirection is not an error and clients should follow that redirect.  Redirect responses will have a `Location` header field which contains the URI of the resource to which the client should repeat the requests.\n\nRedirection status codes will be used in accordance with the HTTP 1.1 spec.\n\n## Asynchronous Requests\n\nThe API has some endpoints that process requests asynchronously.  They will return a status URL that you can poll for status updates and success reports. They can also accept a `X-RolePoint-Callback-Url` HTTP header that we will post a status report back to upon completion.  The data POSTed and returned from the status endpoint will follow the same format.\n\nAs part of the response we include an “X-Poll-Interval” header which specifies how long (in seconds) until you are allowed to make another request.\n\nThe status report will be of the following format if the task has not yet completed:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"status\\\": \\\"in_progress\\\",\\n  \\\"result_info\\\": null,\\n  \\\"error_info\\\": null\\n} \",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nIf the task has completed the status report will be of the format:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"status\\\": \\\"complete\\\",\\n  \\\"result_info\\\": {\\n    \\\"url\\\": 'https://api.rolepoint-connect.com/',\\n    \\\"ttl\\\": 123\\n  },\\n  \\\"error_info\\\": null\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nWhere the `url` is dependent on the task, and the `ttl` refers to the time until the result expires.\n\nIf the task failed, the response will have the form:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"status\\\": \\\"failed\\\",\\n  \\\"result_info\\\": {\\n    \\\"url\\\": 'https://api.rolepoint-connect.com/',\\n    \\\"ttl\\\": 123\\n  },\\n  \\\"error_info\\\": {\\n    \\\"message\\\": \\\"Message describing the error that occured\\\",\\n    \\\"code\\\": 123\\n  }\\n    }\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nWhere the `code` is one of the defined (error codes)[#error-codes], and the `message` describes why the task failed.\n\n## Error Codes\n\n### 999 - General Purpose Error\n\nThis is a general purpose error code. This will be returned as a 'catch-all', so if there is an unexpected error this code would be returned, with a message indicating what went wrong.\n\n## Authentication\n\nYou should issue all requests with the API key you were issue with.\n\n    $ curl https://api.rolepoint-connect.com/reseller/<endpoint> -H \"Authorization: Bearer <my api key>\"\n\nRequests that require authentication may return a `404 Not Found` instead of a\n`401 Authorization Required` or `403 Forbidden` response to avoid leaking\nprivate URLs.\n\n## Rate Limits\n\nThe API has a rate limit of 30 requests per 30 seconds.\n\nYou can check the returned HTTP headers of any API request to see your current\nrate limit status:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -i https://api.rolepoint-connect.com/reseller/whatever\\n\\nHTTP/1.1 200 OK\\nStatus: 200 OK\\nX-RateLimit-Limit: 30\\nX-RateLimit-Remaining: 24\\nX-RateLimit_Reset: 1372700873\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\nThe headers tell you everything you need to know about your current rate limit status:\n\n* X-RateLimit-Limit - The maximum number of requests that the consumer is\n  permitted to make per hour.\n* X-RateLimit-Remaining - The number of requests remaining in the current rate\n  limit window.\n* X-RateLimit-Reset - The time at which the current rate limit window resets in\n  UTC epoch seconds.\n\nOnce you go over your rate limit you will receive an error response:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"HTTP/1.1 429 Too Many Requests\\nStatus: 429 Too Many Requests\\nX-RateLimit-Limit: 30\\nX-RateLimit-Remaining: 0\\nX-RateLimit-Reset: 1372700873\\n\\n{\\\"message\\\": \\\"Rate limit exceeded\\\", \\\"rate-limit-reset\\\": 1372700873}\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\n## Concurrency Control\n\nThe RolePoint Reseller API uses the HTTP `Etag` and `If-Match` headers for concurrency control. On creation and retrieval of a Connector, an `Etag` header will be sent as part of the response. This `Etag` will be updated every time a Connector is updated. \n\nIn order to update or delete a Connector, you must provide the current `Etag` in the `If-Match` request header. For this reason we recommend that before making any update or deletion requests, you first retrieve the current `Etag` of the Connector.","createdAt":"2016-03-24T16:16:35.559Z","sync_unique":"","api":{"auth":"required","params":[],"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"settings":"","url":""},"category":"56f40b08167d070e0091a609","excerpt":"Create Connectors on demand","link_url":"","slug":"reseller-api","hidden":false,"isReference":false,"order":0,"parentDoc":null,"version":"569e609aebbadc0d0079bed0","childrenPages":[]}

Reseller API

Create Connectors on demand

You can use your reseller API credentials to create [Connectors](doc:connectors) on demand to integrate with your customer's ATSs. ## RolePoint Reseller API The RolePoint Reseller API follows the conventions laid out in [jsonapi](http://jsonapi.org/). ## Schema All API access is over HTTPS, and accessed from the `api.rolepoint-connect.com/reseller` domain. All data is sent and received as JSON. Optional fields can be sent in as `null` or omitted. Optional fields in responses will not be omitted - instead they will be returned as `null` or empty. All timestamps are returned in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ ## Client Errors There are six possible types of client errors on API calls: 1. Sending a request with missing credentials will result in a `401 Unauthorized` response ``` HTTP/1.1 401 Unauthorized ``` 2. Sending a request with invalid or insufficient credentials will result in a `401 Unauthorized` response. ``` HTTP/1.1 401 Unauthorized ``` 3. Sending a request to an endpoint that does not exist will result in a `404 Not Found` response. ``` HTTP/1.1 404 Not Found ``` 4. Sending malformed JSON bodies will result in a `400 Bad Request` response. ``` HTTP/1.1 400 Bad Request ``` 5. Sending JSON bodies with missing fields or unexpected fields will result in a `422 Unprocessable Entity` response. ``` HTTP/1.1 422 Unprocessable Entity ``` 6. Sending a `PATCH` or `DELETE` request without a etag will result in a `428 Precondition Required` response. ``` HTTP/1.1 428 Precondition Required ``` 7. Sending a `PATCH` or `DELETE` request with an invalid etag will result in a `412 Precondition Failed` response. ``` HTTP/1.1 412 Precondition Failed ``` If endpoints have custom validation errors, they will be documented with the endpoint. ## Other Errors If an unexpected error occurs during an API call, the server will return a `500 Internal Server Error` HTTP/1.1 500 Internal Server Error You should assume that these requests failed and attempt them again later. ## HTTP Redirects The API uses HTTP redirection where appropriate. Clients should assume that any request may result in a redirection. Receiving an HTTP redirection is not an error and clients should follow that redirect. Redirect responses will have a `Location` header field which contains the URI of the resource to which the client should repeat the requests. Redirection status codes will be used in accordance with the HTTP 1.1 spec. ## Asynchronous Requests The API has some endpoints that process requests asynchronously. They will return a status URL that you can poll for status updates and success reports. They can also accept a `X-RolePoint-Callback-Url` HTTP header that we will post a status report back to upon completion. The data POSTed and returned from the status endpoint will follow the same format. As part of the response we include an “X-Poll-Interval” header which specifies how long (in seconds) until you are allowed to make another request. The status report will be of the following format if the task has not yet completed: [block:code] { "codes": [ { "code": "{\n \"status\": \"in_progress\",\n \"result_info\": null,\n \"error_info\": null\n} ", "language": "json" } ] } [/block] If the task has completed the status report will be of the format: [block:code] { "codes": [ { "code": "{\n \"status\": \"complete\",\n \"result_info\": {\n \"url\": 'https://api.rolepoint-connect.com/',\n \"ttl\": 123\n },\n \"error_info\": null\n}", "language": "json" } ] } [/block] Where the `url` is dependent on the task, and the `ttl` refers to the time until the result expires. If the task failed, the response will have the form: [block:code] { "codes": [ { "code": "{\n \"status\": \"failed\",\n \"result_info\": {\n \"url\": 'https://api.rolepoint-connect.com/',\n \"ttl\": 123\n },\n \"error_info\": {\n \"message\": \"Message describing the error that occured\",\n \"code\": 123\n }\n }", "language": "json" } ] } [/block] Where the `code` is one of the defined (error codes)[#error-codes], and the `message` describes why the task failed. ## Error Codes ### 999 - General Purpose Error This is a general purpose error code. This will be returned as a 'catch-all', so if there is an unexpected error this code would be returned, with a message indicating what went wrong. ## Authentication You should issue all requests with the API key you were issue with. $ curl https://api.rolepoint-connect.com/reseller/<endpoint> -H "Authorization: Bearer <my api key>" Requests that require authentication may return a `404 Not Found` instead of a `401 Authorization Required` or `403 Forbidden` response to avoid leaking private URLs. ## Rate Limits The API has a rate limit of 30 requests per 30 seconds. You can check the returned HTTP headers of any API request to see your current rate limit status: [block:code] { "codes": [ { "code": "curl -i https://api.rolepoint-connect.com/reseller/whatever\n\nHTTP/1.1 200 OK\nStatus: 200 OK\nX-RateLimit-Limit: 30\nX-RateLimit-Remaining: 24\nX-RateLimit_Reset: 1372700873", "language": "curl" } ] } [/block] The headers tell you everything you need to know about your current rate limit status: * X-RateLimit-Limit - The maximum number of requests that the consumer is permitted to make per hour. * X-RateLimit-Remaining - The number of requests remaining in the current rate limit window. * X-RateLimit-Reset - The time at which the current rate limit window resets in UTC epoch seconds. Once you go over your rate limit you will receive an error response: [block:code] { "codes": [ { "code": "HTTP/1.1 429 Too Many Requests\nStatus: 429 Too Many Requests\nX-RateLimit-Limit: 30\nX-RateLimit-Remaining: 0\nX-RateLimit-Reset: 1372700873\n\n{\"message\": \"Rate limit exceeded\", \"rate-limit-reset\": 1372700873}", "language": "http" } ] } [/block] ## Concurrency Control The RolePoint Reseller API uses the HTTP `Etag` and `If-Match` headers for concurrency control. On creation and retrieval of a Connector, an `Etag` header will be sent as part of the response. This `Etag` will be updated every time a Connector is updated. In order to update or delete a Connector, you must provide the current `Etag` in the `If-Match` request header. For this reason we recommend that before making any update or deletion requests, you first retrieve the current `Etag` of the Connector.
You can use your reseller API credentials to create [Connectors](doc:connectors) on demand to integrate with your customer's ATSs. ## RolePoint Reseller API The RolePoint Reseller API follows the conventions laid out in [jsonapi](http://jsonapi.org/). ## Schema All API access is over HTTPS, and accessed from the `api.rolepoint-connect.com/reseller` domain. All data is sent and received as JSON. Optional fields can be sent in as `null` or omitted. Optional fields in responses will not be omitted - instead they will be returned as `null` or empty. All timestamps are returned in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ ## Client Errors There are six possible types of client errors on API calls: 1. Sending a request with missing credentials will result in a `401 Unauthorized` response ``` HTTP/1.1 401 Unauthorized ``` 2. Sending a request with invalid or insufficient credentials will result in a `401 Unauthorized` response. ``` HTTP/1.1 401 Unauthorized ``` 3. Sending a request to an endpoint that does not exist will result in a `404 Not Found` response. ``` HTTP/1.1 404 Not Found ``` 4. Sending malformed JSON bodies will result in a `400 Bad Request` response. ``` HTTP/1.1 400 Bad Request ``` 5. Sending JSON bodies with missing fields or unexpected fields will result in a `422 Unprocessable Entity` response. ``` HTTP/1.1 422 Unprocessable Entity ``` 6. Sending a `PATCH` or `DELETE` request without a etag will result in a `428 Precondition Required` response. ``` HTTP/1.1 428 Precondition Required ``` 7. Sending a `PATCH` or `DELETE` request with an invalid etag will result in a `412 Precondition Failed` response. ``` HTTP/1.1 412 Precondition Failed ``` If endpoints have custom validation errors, they will be documented with the endpoint. ## Other Errors If an unexpected error occurs during an API call, the server will return a `500 Internal Server Error` HTTP/1.1 500 Internal Server Error You should assume that these requests failed and attempt them again later. ## HTTP Redirects The API uses HTTP redirection where appropriate. Clients should assume that any request may result in a redirection. Receiving an HTTP redirection is not an error and clients should follow that redirect. Redirect responses will have a `Location` header field which contains the URI of the resource to which the client should repeat the requests. Redirection status codes will be used in accordance with the HTTP 1.1 spec. ## Asynchronous Requests The API has some endpoints that process requests asynchronously. They will return a status URL that you can poll for status updates and success reports. They can also accept a `X-RolePoint-Callback-Url` HTTP header that we will post a status report back to upon completion. The data POSTed and returned from the status endpoint will follow the same format. As part of the response we include an “X-Poll-Interval” header which specifies how long (in seconds) until you are allowed to make another request. The status report will be of the following format if the task has not yet completed: [block:code] { "codes": [ { "code": "{\n \"status\": \"in_progress\",\n \"result_info\": null,\n \"error_info\": null\n} ", "language": "json" } ] } [/block] If the task has completed the status report will be of the format: [block:code] { "codes": [ { "code": "{\n \"status\": \"complete\",\n \"result_info\": {\n \"url\": 'https://api.rolepoint-connect.com/',\n \"ttl\": 123\n },\n \"error_info\": null\n}", "language": "json" } ] } [/block] Where the `url` is dependent on the task, and the `ttl` refers to the time until the result expires. If the task failed, the response will have the form: [block:code] { "codes": [ { "code": "{\n \"status\": \"failed\",\n \"result_info\": {\n \"url\": 'https://api.rolepoint-connect.com/',\n \"ttl\": 123\n },\n \"error_info\": {\n \"message\": \"Message describing the error that occured\",\n \"code\": 123\n }\n }", "language": "json" } ] } [/block] Where the `code` is one of the defined (error codes)[#error-codes], and the `message` describes why the task failed. ## Error Codes ### 999 - General Purpose Error This is a general purpose error code. This will be returned as a 'catch-all', so if there is an unexpected error this code would be returned, with a message indicating what went wrong. ## Authentication You should issue all requests with the API key you were issue with. $ curl https://api.rolepoint-connect.com/reseller/<endpoint> -H "Authorization: Bearer <my api key>" Requests that require authentication may return a `404 Not Found` instead of a `401 Authorization Required` or `403 Forbidden` response to avoid leaking private URLs. ## Rate Limits The API has a rate limit of 30 requests per 30 seconds. You can check the returned HTTP headers of any API request to see your current rate limit status: [block:code] { "codes": [ { "code": "curl -i https://api.rolepoint-connect.com/reseller/whatever\n\nHTTP/1.1 200 OK\nStatus: 200 OK\nX-RateLimit-Limit: 30\nX-RateLimit-Remaining: 24\nX-RateLimit_Reset: 1372700873", "language": "curl" } ] } [/block] The headers tell you everything you need to know about your current rate limit status: * X-RateLimit-Limit - The maximum number of requests that the consumer is permitted to make per hour. * X-RateLimit-Remaining - The number of requests remaining in the current rate limit window. * X-RateLimit-Reset - The time at which the current rate limit window resets in UTC epoch seconds. Once you go over your rate limit you will receive an error response: [block:code] { "codes": [ { "code": "HTTP/1.1 429 Too Many Requests\nStatus: 429 Too Many Requests\nX-RateLimit-Limit: 30\nX-RateLimit-Remaining: 0\nX-RateLimit-Reset: 1372700873\n\n{\"message\": \"Rate limit exceeded\", \"rate-limit-reset\": 1372700873}", "language": "http" } ] } [/block] ## Concurrency Control The RolePoint Reseller API uses the HTTP `Etag` and `If-Match` headers for concurrency control. On creation and retrieval of a Connector, an `Etag` header will be sent as part of the response. This `Etag` will be updated every time a Connector is updated. In order to update or delete a Connector, you must provide the current `Etag` in the `If-Match` request header. For this reason we recommend that before making any update or deletion requests, you first retrieve the current `Etag` of the Connector.
{"_id":"56f414677ea0091700f63a81","project":"569e6099ebbadc0d0079becd","slug":"connectors","title":"Connectors","updates":[],"body":"# Creating Connectors\n\nTo create a Connector you must issue a `POST` request to the following endpoint:\n\n    POST /<Reseller ID>/connector/\n\nThis endpoint accepts the following parameters:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Required\",\n    \"0-0\": \"username\",\n    \"0-1\": \"string\",\n    \"0-2\": \"The username that will be used to authenticate with the connector API.\",\n    \"0-3\": \"Yes\",\n    \"1-0\": \"password\",\n    \"1-1\": \"string\",\n    \"1-2\": \"The password that will be used to authenticate with the connector API.\",\n    \"1-3\": \"Yes\",\n    \"2-0\": \"email\",\n    \"2-1\": \"string\",\n    \"2-2\": \"The email address to which any correspondence relating to the Connector should be sent.\",\n    \"2-3\": \"Yes\",\n    \"3-0\": \"webhook_url\",\n    \"3-1\": \"string\",\n    \"3-2\": \"A URL to which webhooks will be sent. For more information see the [Webhooks documentation](doc:webhooks)\",\n    \"3-3\": \"No\",\n    \"4-0\": \"active\",\n    \"4-1\": \"boolean\",\n    \"4-2\": \"Whether the integration should currently be activated. If False no requests will be issued to the ATS on behalf of this Connector.\",\n    \"4-3\": \"No (defaults to True)\",\n    \"5-0\": \"integration_module\",\n    \"5-1\": \"string\",\n    \"5-2\": \"The type of integration to create. For more details see [Connector Parameters](doc:parameters)\",\n    \"5-3\": \"Yes\",\n    \"6-0\": \"parameters\",\n    \"6-1\": \"object\",\n    \"6-2\": \"The parameters for the ATS, for more information see [Connector Parameters](doc:parameters)\",\n    \"6-3\": \"Yes\"\n  },\n  \"cols\": 4,\n  \"rows\": 7\n}\n[/block]\nFor example, using taleo_enterprise as the `integration_module`, and a Reseller with the ID `0e70283e-a048-4996-8015-a4087d0e64c8`, we issue the following request:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"POST /reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector HTTP/1.1\\nAuthorization: Bearer b8153fe3647b65cdd197f4374d306c43116c3c8174dabebafc94220e9d1cd26b\\nContent-Type: application/json\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\nWith this body:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"data\\\": {\\n    \\\"type\\\": \\\"connector\\\",\\n    \\\"attributes\\\": {\\n      \\\"username\\\": \\\"myusername\\\",\\n      \\\"password\\\": \\\"password\\\",\\n      \\\"email\\\": \\\"test@test.com\\\",\\n      \\\"integration_module\\\": \\\"taleo_enterprise\\\",\\n      \\\"parameters\\\": {\\n        \\\"url\\\": \\\"https://test.taleo.net\\\",\\n        \\\"username\\\": \\\"myatsusername\\\",\\n        \\\"password\\\": \\\"somepassword\\\"\\n      }\\n    }\\n  }\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nWhich will create a Connector which is linked to the specified Reseller. \n\nA successful response will be `HTTP/1.1 201 Created` with a Content-Type of `application/vnd.api+json`, and this body:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"links\\\": {\\n    \\\"self\\\":  \\\"https://api.rolepoint.com/reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12\\\"\\n  },\\n  \\\"data\\\": {\\n    \\\"type\\\": \\\"connector\\\",\\n    \\\"id\\\": \\\"12\\\",\\n    \\\"attributes\\\": {\\n      \\\"active\\\": true,\\n      \\\"email\\\": \\\"test@test.com\\\",\\n      \\\"integration_module\\\": \\\"taleo_enterprise\\\",\\n      \\\"parameters\\\": {\\n        \\\"url\\\": \\\"https://test.taleo.net\\\",\\n        \\\"username\\\": \\\"myatsusername\\\"\\n      },\\n      \\\"username\\\": \\\"myusername\\\",\\n      \\\"webhook_url\\\": null\\n    }\\n  }\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n# Retrieving a Connector\n\nTo retrieve a Connector you must issue a `GET` request to the following endpoint:\n\n    GET /<Reseller ID>/connector/<Connector ID>\n\nEach Connector has an associated Etag which will be returned as a header. This Etag will change with every update to the Connector, and is used for concurrency control. For more information see [Concurrency Control](#section-concurrency-control).\n\nFor example:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"GET /reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12 HTTP/1.1\\nAuthorization: Bearer b8153fe3647b65cdd197f4374d306c43116c3c8174dabebafc94220e9d1cd26b\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\nWould receive a `HTTP/1.1 200 OK` response with a Content-Type of `application/vnd.api+json`, and this body:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"links\\\": {\\n    \\\"self\\\": \\\"https://api.rolepoint.com/reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12\\\"\\n  },\\n  \\\"data\\\": {\\n    \\\"id\\\": \\\"12\\\",\\n    \\\"type\\\": \\\"connector\\\",\\n    \\\"attributes\\\": {\\n      \\\"active\\\": true,\\n      \\\"email\\\": \\\"test@test.com\\\",\\n      \\\"integration_module\\\": \\\"taleo_enterprise\\\",\\n      \\\"parameters\\\": {\\n        \\\"url\\\": \\\"https://test.taleo.net\\\",\\n        \\\"username\\\": \\\"myatsusername\\\"\\n      },\\n      \\\"username\\\": \\\"myusername\\\",\\n      \\\"webhook_url\\\": null\\n    }\\n  }\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n`GET` requests can also be issued with an `If-Match` header, if the `If-Match` header given matches the current `Etag` of the Connector, we return a `304 Not Modified` response. For example:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"GET /reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12 HTTP/1.1\\nAuthorization: Bearer b8153fe3647b65cdd197f4374d306c43116c3c8174dabebafc94220e9d1cd26b\\nIf-Match: 57940a61-b939-4528-8935-5defba65a36f\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\nWould receive a response of:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"HTTP/1.1 304 Not Modified\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\n# Retrieving Many Connectors\n\nTo retrieve many of your Connectors you must issue a `GET` request to the following endpoint:\n\n    GET /<Reseller ID>/connector/\n\nThis endpoint is paginated, with a default page size of 10, and a maximum page size of 20. You can specify the size of the page you wish to retrieve through the `page[size]` query parameter. You can also specify the page number to retrieve using the `page[number]` query parameter. For example, to retrieve 2 items from the 2nd page of results:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"GET /reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/?page[size]=2&page[number]=2 HTTP/1.1\\nAuthorization: Bearer b8153fe3647b65cdd197f4374d306c43116c3c8174dabebafc94220e9d1cd26b\\nContent-Type: application/json\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\nWhich would return a result like:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"data\\\": [\\n    {\\n      \\\"attributes\\\": {\\n        \\\"active\\\": true,\\n        \\\"email\\\": \\\"test3@test.com\\\",\\n        \\\"integration_module\\\": \\\"taleo_enterprise\\\",\\n        \\\"parameters\\\": {\\n          \\\"url\\\": \\\"https://test.taleo.net\\\",\\n          \\\"username\\\": \\\"myatsusername3\\\"\\n        },\\n        \\\"username\\\": \\\"myusername3\\\",\\n        \\\"webhook_url\\\": null\\n      },\\n      \\\"id\\\": \\\"3\\\",\\n      \\\"type\\\": \\\"connector\\\"\\n    },\\n    {\\n      \\\"attributes\\\": {\\n        \\\"active\\\": true,\\n        \\\"email\\\": \\\"test4@test.com\\\",\\n        \\\"integration_module\\\": \\\"taleo_enterprise\\\",\\n        \\\"parameters\\\": {\\n          \\\"url\\\": \\\"https://test.taleo.net\\\",\\n          \\\"username\\\": \\\"myatsusername4\\\"\\n        },\\n        \\\"username\\\": \\\"myusername\\\",\\n        \\\"webhook_url\\\": null\\n      },\\n      \\\"id\\\": \\\"4\\\",\\n      \\\"type\\\": \\\"connector\\\"\\n    }\\n  ],\\n  \\\"links\\\": {\\n    \\\"first\\\": \\\"https://api.rolepoint.com/reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/?page[number]=1&page[size]=2\\\",\\n    \\\"last\\\": \\\"https://api.rolepoint.com/reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/?page[number]=3&page[size]=2\\\",\\n    \\\"next\\\": \\\"https://api.rolepoint.com/reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/?page[number]=3&page[size]=2\\\",\\n    \\\"prev\\\": \\\"https://api.rolepoint.com/reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/?page[number]=1&page[size]=2\\\",\\n    \\\"self\\\": \\\"https://api.rolepoint.com/reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/?page[number]=2&page[size]=2\\\"\\n  },\\n  \\\"meta\\\": {\\\"total_count\\\": 5}\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nThe `links` parameter contains links which can be used for navigating paginated results.\n\n# Updating a Connector\n\nTo update a Connector you must issue a `PATCH` request to the following endpoint:\n\n    PATCH <Reseller ID>/connector/<Connector ID>\n\nYou must also provide the current Etag of the Connector as an `If-Match` header, you can get this Etag by issuing a `GET` request for the Connector you wish to update.\n\nThe parameters you are able to update for a Connector are:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"0-0\": \"username\",\n    \"0-1\": \"string\",\n    \"0-2\": \"The username that will be used to authenticate with the connector API.\",\n    \"1-0\": \"password\",\n    \"1-2\": \"The password that will be used to authenticate with the connector API.\",\n    \"1-1\": \"string\",\n    \"2-0\": \"email\",\n    \"2-1\": \"string\",\n    \"2-2\": \"The email address to which any correspondence relating to the Connector should be sent.\",\n    \"3-0\": \"webhook_url\",\n    \"3-1\": \"string\",\n    \"3-2\": \"A URL to which webhooks will be sent. For more information see the [Webhooks documentation](doc:webhooks)\",\n    \"4-0\": \"active\",\n    \"4-1\": \"boolean\",\n    \"4-2\": \"Whether the integration should currently be activated. If False no requests will be issued to the ATS on behalf of this Connector.\",\n    \"5-0\": \"parameters\",\n    \"5-1\": \"object\",\n    \"5-2\": \"The parameters for the ATS, for more information see [Connector Parameters](doc:parameters)\"\n  },\n  \"cols\": 3,\n  \"rows\": 6\n}\n[/block]\nA basic example of updating is:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"PATCH /reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12 HTTP/1.1\\nAuthorization: Bearer b8153fe3647b65cdd197f4374d306c43116c3c8174dabebafc94220e9d1cd26b\\nContent-Type: application/json\\nIf-Match: 57940a61-b939-4528-8935-5defba65a36f\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\nWith the body:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"data\\\": {\\n    \\\"type\\\": \\\"connector\\\",\\n    \\\"id\\\": \\\"12\\\", \\n    \\\"attributes\\\": {\\n      \\\"active\\\": False,\\n      \\\"email\\\": \\\"test2@test.com\\\"\\n    }\\n  }\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nWhich would receive a `HTTP/1.1 200 OK` response with a Content-Type of `application/vnd.api+json` and this body:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"links\\\": {\\n    \\\"self\\\": \\\"https://api.rolepoint.com/reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12\\\"\\n  },\\n  \\\"data\\\": {\\n    \\\"type\\\": \\\"connector\\\",\\n    \\\"id\\\": \\\"12\\\",\\n    \\\"attributes\\\": {\\n      \\\"active\\\": False,\\n      \\\"email\\\": \\\"test2@test.com\\\",\\n      \\\"integration_module\\\": \\\"taleo_enterprise\\\",\\n      \\\"parameters\\\": {\\n        \\\"url\\\": \\\"https://test.taleo.net\\\",\\n        \\\"username\\\": \\\"myatsusername\\\"\\n      },\\n      \\\"username\\\": \\\"myusername\\\",\\n      \\\"webhook_url\\\": None\\n    }\\n  }\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nA more detailed example, to show updating the url field for Taleo Enterprise - for security reasons we require `password` when updating `url`:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"PATCH /reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12 HTTP/1.1\\nAuthorization: Bearer b8153fe3647b65cdd197f4374d306c43116c3c8174dabebafc94220e9d1cd26b\\nContent-Type: application/json\\nIf-Match: 03be1a6c-ea08-40cb-a668-d9b3fdab5ced\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\nWith body:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"data\\\": {\\n    \\\"attributes\\\": {\\n      \\\"parameters\\\": {\\n        \\\"password\\\": \\\"password\\\",\\n        \\\"url\\\": \\\"https://new-url.taleo.net\\\"\\n      }\\n    },\\n    \\\"id\\\": \\\"12\\\",\\n    \\\"type\\\": \\\"connector\\\"\\n  }\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nWhich would receive a `HTTP/1.1 200 OK` response with a Content-Type of `application/vnd.api+json` and body:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"links\\\": {\\n    \\\"self\\\": \\\"https://api.rolepoint.com/reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12\\\"\\n  },\\n  \\\"data\\\": {\\n    \\\"type\\\": \\\"connector\\\",\\n    \\\"id\\\": \\\"12\\\",\\n    \\\"attributes\\\": {\\n      \\\"active\\\": True,\\n      \\\"email\\\": \\\"test@test.com\\\",\\n      \\\"integration_module\\\": \\\"taleo_enterprise\\\",\\n      \\\"parameters\\\": {\\n        \\\"url\\\": \\\"https://new-url.taleo.net\\\",\\n        \\\"username\\\": \\\"myatsusername\\\"\\n      },\\n      \\\"username\\\": \\\"myusername\\\",\\n      \\\"webhook_url\\\": None\\n    }\\n  }\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n# Deleting a Connector\n\nTo delete a Connector, a `DELETE` request must be issued to the following endpoint:\n\n    DELETE <Reseller ID>/connector/<Connector ID>\n\nYou must also provide the current Etag of the Connector as an `If-Match` header, you can get this Etag by issuing a `GET` request for the Connector you wish to delete.\n\nFor example:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"DELETE /reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12 HTTP/1.1\\nAuthorization: Bearer b8153fe3647b65cdd197f4374d306c43116c3c8174dabebafc94220e9d1cd26b\\nContent-Type: application/json\\nIf-Match: da38344d-6da2-43c4-bd54-fd20fa9c0dc3\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\nWhich would receive a response of:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"HTTP/1.1 204 Deleted\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\n# Ensuring a Connector is working\n\nWe provide a `ping` endpoint in order to ensure a Connector is running. This is an asynchronous endpoint. The `ping` url looks like:\n\n    GET <Reseller ID>/connector/<Connector ID>/ping\n\nThe process we would follow to check the status of a Connector would be as follows:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"GET /reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12/ping HTTP/1.1\\nAuthorization: Bearer b8153fe3647b65cdd197f4374d306c43116c3c8174dabebafc94220e9d1cd26b\\nX-RolePoint-Callback-Url: https://www.yourdomain.com/callback-endpoint\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\nWhich would receive a `HTTP/1.1 200 OK` response with a Content-Type of `application/vnd.api+json` and body:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  'request_status_url': 'https://api.rolepoint.com/reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12/d3ee4bcf-cd6b-4c83-b76a-cc96646fe958/status'\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nTo get the eventual result of the `ping`, you can either poll the `request_status_url` or provide a callback URL as noted in the [Asynchronous Requests](doc:asynchronous-requests). We recommend the use of callbacks.\n\nThe result will be of the form:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\\"success\\\": true}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nWhere the boolean value of the `success` key indicates whether the Connector is working.","category":"56f40b08167d070e0091a609","link_external":false,"order":1,"user":"56d846d5b20d260b0026570b","version":"569e609aebbadc0d0079bed0","api":{"results":{"codes":[{"language":"json","code":"{}","name":"","status":200},{"code":"{}","name":"","status":400,"language":"json"}]},"settings":"","url":"","auth":"required","params":[]},"githubsync":"","isReference":false,"type":"basic","createdAt":"2016-03-24T16:23:03.899Z","link_url":"","parentDoc":null,"sync_unique":"","__v":7,"excerpt":"CRUD your connectors","hidden":false,"childrenPages":[]}

Connectors

CRUD your connectors

# Creating Connectors To create a Connector you must issue a `POST` request to the following endpoint: POST /<Reseller ID>/connector/ This endpoint accepts the following parameters: [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Required", "0-0": "username", "0-1": "string", "0-2": "The username that will be used to authenticate with the connector API.", "0-3": "Yes", "1-0": "password", "1-1": "string", "1-2": "The password that will be used to authenticate with the connector API.", "1-3": "Yes", "2-0": "email", "2-1": "string", "2-2": "The email address to which any correspondence relating to the Connector should be sent.", "2-3": "Yes", "3-0": "webhook_url", "3-1": "string", "3-2": "A URL to which webhooks will be sent. For more information see the [Webhooks documentation](doc:webhooks)", "3-3": "No", "4-0": "active", "4-1": "boolean", "4-2": "Whether the integration should currently be activated. If False no requests will be issued to the ATS on behalf of this Connector.", "4-3": "No (defaults to True)", "5-0": "integration_module", "5-1": "string", "5-2": "The type of integration to create. For more details see [Connector Parameters](doc:parameters)", "5-3": "Yes", "6-0": "parameters", "6-1": "object", "6-2": "The parameters for the ATS, for more information see [Connector Parameters](doc:parameters)", "6-3": "Yes" }, "cols": 4, "rows": 7 } [/block] For example, using taleo_enterprise as the `integration_module`, and a Reseller with the ID `0e70283e-a048-4996-8015-a4087d0e64c8`, we issue the following request: [block:code] { "codes": [ { "code": "POST /reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector HTTP/1.1\nAuthorization: Bearer b8153fe3647b65cdd197f4374d306c43116c3c8174dabebafc94220e9d1cd26b\nContent-Type: application/json", "language": "http" } ] } [/block] With this body: [block:code] { "codes": [ { "code": "{\n \"data\": {\n \"type\": \"connector\",\n \"attributes\": {\n \"username\": \"myusername\",\n \"password\": \"password\",\n \"email\": \"test@test.com\",\n \"integration_module\": \"taleo_enterprise\",\n \"parameters\": {\n \"url\": \"https://test.taleo.net\",\n \"username\": \"myatsusername\",\n \"password\": \"somepassword\"\n }\n }\n }\n}", "language": "json" } ] } [/block] Which will create a Connector which is linked to the specified Reseller. A successful response will be `HTTP/1.1 201 Created` with a Content-Type of `application/vnd.api+json`, and this body: [block:code] { "codes": [ { "code": "{\n \"links\": {\n \"self\": \"https://api.rolepoint.com/reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12\"\n },\n \"data\": {\n \"type\": \"connector\",\n \"id\": \"12\",\n \"attributes\": {\n \"active\": true,\n \"email\": \"test@test.com\",\n \"integration_module\": \"taleo_enterprise\",\n \"parameters\": {\n \"url\": \"https://test.taleo.net\",\n \"username\": \"myatsusername\"\n },\n \"username\": \"myusername\",\n \"webhook_url\": null\n }\n }\n}", "language": "json" } ] } [/block] # Retrieving a Connector To retrieve a Connector you must issue a `GET` request to the following endpoint: GET /<Reseller ID>/connector/<Connector ID> Each Connector has an associated Etag which will be returned as a header. This Etag will change with every update to the Connector, and is used for concurrency control. For more information see [Concurrency Control](#section-concurrency-control). For example: [block:code] { "codes": [ { "code": "GET /reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12 HTTP/1.1\nAuthorization: Bearer b8153fe3647b65cdd197f4374d306c43116c3c8174dabebafc94220e9d1cd26b", "language": "http" } ] } [/block] Would receive a `HTTP/1.1 200 OK` response with a Content-Type of `application/vnd.api+json`, and this body: [block:code] { "codes": [ { "code": "{\n \"links\": {\n \"self\": \"https://api.rolepoint.com/reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12\"\n },\n \"data\": {\n \"id\": \"12\",\n \"type\": \"connector\",\n \"attributes\": {\n \"active\": true,\n \"email\": \"test@test.com\",\n \"integration_module\": \"taleo_enterprise\",\n \"parameters\": {\n \"url\": \"https://test.taleo.net\",\n \"username\": \"myatsusername\"\n },\n \"username\": \"myusername\",\n \"webhook_url\": null\n }\n }\n}", "language": "json" } ] } [/block] `GET` requests can also be issued with an `If-Match` header, if the `If-Match` header given matches the current `Etag` of the Connector, we return a `304 Not Modified` response. For example: [block:code] { "codes": [ { "code": "GET /reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12 HTTP/1.1\nAuthorization: Bearer b8153fe3647b65cdd197f4374d306c43116c3c8174dabebafc94220e9d1cd26b\nIf-Match: 57940a61-b939-4528-8935-5defba65a36f", "language": "http" } ] } [/block] Would receive a response of: [block:code] { "codes": [ { "code": "HTTP/1.1 304 Not Modified", "language": "http" } ] } [/block] # Retrieving Many Connectors To retrieve many of your Connectors you must issue a `GET` request to the following endpoint: GET /<Reseller ID>/connector/ This endpoint is paginated, with a default page size of 10, and a maximum page size of 20. You can specify the size of the page you wish to retrieve through the `page[size]` query parameter. You can also specify the page number to retrieve using the `page[number]` query parameter. For example, to retrieve 2 items from the 2nd page of results: [block:code] { "codes": [ { "code": "GET /reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/?page[size]=2&page[number]=2 HTTP/1.1\nAuthorization: Bearer b8153fe3647b65cdd197f4374d306c43116c3c8174dabebafc94220e9d1cd26b\nContent-Type: application/json", "language": "http" } ] } [/block] Which would return a result like: [block:code] { "codes": [ { "code": "{\n \"data\": [\n {\n \"attributes\": {\n \"active\": true,\n \"email\": \"test3@test.com\",\n \"integration_module\": \"taleo_enterprise\",\n \"parameters\": {\n \"url\": \"https://test.taleo.net\",\n \"username\": \"myatsusername3\"\n },\n \"username\": \"myusername3\",\n \"webhook_url\": null\n },\n \"id\": \"3\",\n \"type\": \"connector\"\n },\n {\n \"attributes\": {\n \"active\": true,\n \"email\": \"test4@test.com\",\n \"integration_module\": \"taleo_enterprise\",\n \"parameters\": {\n \"url\": \"https://test.taleo.net\",\n \"username\": \"myatsusername4\"\n },\n \"username\": \"myusername\",\n \"webhook_url\": null\n },\n \"id\": \"4\",\n \"type\": \"connector\"\n }\n ],\n \"links\": {\n \"first\": \"https://api.rolepoint.com/reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/?page[number]=1&page[size]=2\",\n \"last\": \"https://api.rolepoint.com/reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/?page[number]=3&page[size]=2\",\n \"next\": \"https://api.rolepoint.com/reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/?page[number]=3&page[size]=2\",\n \"prev\": \"https://api.rolepoint.com/reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/?page[number]=1&page[size]=2\",\n \"self\": \"https://api.rolepoint.com/reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/?page[number]=2&page[size]=2\"\n },\n \"meta\": {\"total_count\": 5}\n}", "language": "json" } ] } [/block] The `links` parameter contains links which can be used for navigating paginated results. # Updating a Connector To update a Connector you must issue a `PATCH` request to the following endpoint: PATCH <Reseller ID>/connector/<Connector ID> You must also provide the current Etag of the Connector as an `If-Match` header, you can get this Etag by issuing a `GET` request for the Connector you wish to update. The parameters you are able to update for a Connector are: [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "0-0": "username", "0-1": "string", "0-2": "The username that will be used to authenticate with the connector API.", "1-0": "password", "1-2": "The password that will be used to authenticate with the connector API.", "1-1": "string", "2-0": "email", "2-1": "string", "2-2": "The email address to which any correspondence relating to the Connector should be sent.", "3-0": "webhook_url", "3-1": "string", "3-2": "A URL to which webhooks will be sent. For more information see the [Webhooks documentation](doc:webhooks)", "4-0": "active", "4-1": "boolean", "4-2": "Whether the integration should currently be activated. If False no requests will be issued to the ATS on behalf of this Connector.", "5-0": "parameters", "5-1": "object", "5-2": "The parameters for the ATS, for more information see [Connector Parameters](doc:parameters)" }, "cols": 3, "rows": 6 } [/block] A basic example of updating is: [block:code] { "codes": [ { "code": "PATCH /reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12 HTTP/1.1\nAuthorization: Bearer b8153fe3647b65cdd197f4374d306c43116c3c8174dabebafc94220e9d1cd26b\nContent-Type: application/json\nIf-Match: 57940a61-b939-4528-8935-5defba65a36f", "language": "http" } ] } [/block] With the body: [block:code] { "codes": [ { "code": "{\n \"data\": {\n \"type\": \"connector\",\n \"id\": \"12\", \n \"attributes\": {\n \"active\": False,\n \"email\": \"test2@test.com\"\n }\n }\n}", "language": "json" } ] } [/block] Which would receive a `HTTP/1.1 200 OK` response with a Content-Type of `application/vnd.api+json` and this body: [block:code] { "codes": [ { "code": "{\n \"links\": {\n \"self\": \"https://api.rolepoint.com/reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12\"\n },\n \"data\": {\n \"type\": \"connector\",\n \"id\": \"12\",\n \"attributes\": {\n \"active\": False,\n \"email\": \"test2@test.com\",\n \"integration_module\": \"taleo_enterprise\",\n \"parameters\": {\n \"url\": \"https://test.taleo.net\",\n \"username\": \"myatsusername\"\n },\n \"username\": \"myusername\",\n \"webhook_url\": None\n }\n }\n}", "language": "json" } ] } [/block] A more detailed example, to show updating the url field for Taleo Enterprise - for security reasons we require `password` when updating `url`: [block:code] { "codes": [ { "code": "PATCH /reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12 HTTP/1.1\nAuthorization: Bearer b8153fe3647b65cdd197f4374d306c43116c3c8174dabebafc94220e9d1cd26b\nContent-Type: application/json\nIf-Match: 03be1a6c-ea08-40cb-a668-d9b3fdab5ced", "language": "http" } ] } [/block] With body: [block:code] { "codes": [ { "code": "{\n \"data\": {\n \"attributes\": {\n \"parameters\": {\n \"password\": \"password\",\n \"url\": \"https://new-url.taleo.net\"\n }\n },\n \"id\": \"12\",\n \"type\": \"connector\"\n }\n}", "language": "json" } ] } [/block] Which would receive a `HTTP/1.1 200 OK` response with a Content-Type of `application/vnd.api+json` and body: [block:code] { "codes": [ { "code": "{\n \"links\": {\n \"self\": \"https://api.rolepoint.com/reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12\"\n },\n \"data\": {\n \"type\": \"connector\",\n \"id\": \"12\",\n \"attributes\": {\n \"active\": True,\n \"email\": \"test@test.com\",\n \"integration_module\": \"taleo_enterprise\",\n \"parameters\": {\n \"url\": \"https://new-url.taleo.net\",\n \"username\": \"myatsusername\"\n },\n \"username\": \"myusername\",\n \"webhook_url\": None\n }\n }\n}", "language": "json" } ] } [/block] # Deleting a Connector To delete a Connector, a `DELETE` request must be issued to the following endpoint: DELETE <Reseller ID>/connector/<Connector ID> You must also provide the current Etag of the Connector as an `If-Match` header, you can get this Etag by issuing a `GET` request for the Connector you wish to delete. For example: [block:code] { "codes": [ { "code": "DELETE /reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12 HTTP/1.1\nAuthorization: Bearer b8153fe3647b65cdd197f4374d306c43116c3c8174dabebafc94220e9d1cd26b\nContent-Type: application/json\nIf-Match: da38344d-6da2-43c4-bd54-fd20fa9c0dc3", "language": "http" } ] } [/block] Which would receive a response of: [block:code] { "codes": [ { "code": "HTTP/1.1 204 Deleted", "language": "http" } ] } [/block] # Ensuring a Connector is working We provide a `ping` endpoint in order to ensure a Connector is running. This is an asynchronous endpoint. The `ping` url looks like: GET <Reseller ID>/connector/<Connector ID>/ping The process we would follow to check the status of a Connector would be as follows: [block:code] { "codes": [ { "code": "GET /reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12/ping HTTP/1.1\nAuthorization: Bearer b8153fe3647b65cdd197f4374d306c43116c3c8174dabebafc94220e9d1cd26b\nX-RolePoint-Callback-Url: https://www.yourdomain.com/callback-endpoint", "language": "http" } ] } [/block] Which would receive a `HTTP/1.1 200 OK` response with a Content-Type of `application/vnd.api+json` and body: [block:code] { "codes": [ { "code": "{\n 'request_status_url': 'https://api.rolepoint.com/reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12/d3ee4bcf-cd6b-4c83-b76a-cc96646fe958/status'\n}", "language": "json" } ] } [/block] To get the eventual result of the `ping`, you can either poll the `request_status_url` or provide a callback URL as noted in the [Asynchronous Requests](doc:asynchronous-requests). We recommend the use of callbacks. The result will be of the form: [block:code] { "codes": [ { "code": "{\"success\": true}", "language": "json" } ] } [/block] Where the boolean value of the `success` key indicates whether the Connector is working.
# Creating Connectors To create a Connector you must issue a `POST` request to the following endpoint: POST /<Reseller ID>/connector/ This endpoint accepts the following parameters: [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Required", "0-0": "username", "0-1": "string", "0-2": "The username that will be used to authenticate with the connector API.", "0-3": "Yes", "1-0": "password", "1-1": "string", "1-2": "The password that will be used to authenticate with the connector API.", "1-3": "Yes", "2-0": "email", "2-1": "string", "2-2": "The email address to which any correspondence relating to the Connector should be sent.", "2-3": "Yes", "3-0": "webhook_url", "3-1": "string", "3-2": "A URL to which webhooks will be sent. For more information see the [Webhooks documentation](doc:webhooks)", "3-3": "No", "4-0": "active", "4-1": "boolean", "4-2": "Whether the integration should currently be activated. If False no requests will be issued to the ATS on behalf of this Connector.", "4-3": "No (defaults to True)", "5-0": "integration_module", "5-1": "string", "5-2": "The type of integration to create. For more details see [Connector Parameters](doc:parameters)", "5-3": "Yes", "6-0": "parameters", "6-1": "object", "6-2": "The parameters for the ATS, for more information see [Connector Parameters](doc:parameters)", "6-3": "Yes" }, "cols": 4, "rows": 7 } [/block] For example, using taleo_enterprise as the `integration_module`, and a Reseller with the ID `0e70283e-a048-4996-8015-a4087d0e64c8`, we issue the following request: [block:code] { "codes": [ { "code": "POST /reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector HTTP/1.1\nAuthorization: Bearer b8153fe3647b65cdd197f4374d306c43116c3c8174dabebafc94220e9d1cd26b\nContent-Type: application/json", "language": "http" } ] } [/block] With this body: [block:code] { "codes": [ { "code": "{\n \"data\": {\n \"type\": \"connector\",\n \"attributes\": {\n \"username\": \"myusername\",\n \"password\": \"password\",\n \"email\": \"test@test.com\",\n \"integration_module\": \"taleo_enterprise\",\n \"parameters\": {\n \"url\": \"https://test.taleo.net\",\n \"username\": \"myatsusername\",\n \"password\": \"somepassword\"\n }\n }\n }\n}", "language": "json" } ] } [/block] Which will create a Connector which is linked to the specified Reseller. A successful response will be `HTTP/1.1 201 Created` with a Content-Type of `application/vnd.api+json`, and this body: [block:code] { "codes": [ { "code": "{\n \"links\": {\n \"self\": \"https://api.rolepoint.com/reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12\"\n },\n \"data\": {\n \"type\": \"connector\",\n \"id\": \"12\",\n \"attributes\": {\n \"active\": true,\n \"email\": \"test@test.com\",\n \"integration_module\": \"taleo_enterprise\",\n \"parameters\": {\n \"url\": \"https://test.taleo.net\",\n \"username\": \"myatsusername\"\n },\n \"username\": \"myusername\",\n \"webhook_url\": null\n }\n }\n}", "language": "json" } ] } [/block] # Retrieving a Connector To retrieve a Connector you must issue a `GET` request to the following endpoint: GET /<Reseller ID>/connector/<Connector ID> Each Connector has an associated Etag which will be returned as a header. This Etag will change with every update to the Connector, and is used for concurrency control. For more information see [Concurrency Control](#section-concurrency-control). For example: [block:code] { "codes": [ { "code": "GET /reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12 HTTP/1.1\nAuthorization: Bearer b8153fe3647b65cdd197f4374d306c43116c3c8174dabebafc94220e9d1cd26b", "language": "http" } ] } [/block] Would receive a `HTTP/1.1 200 OK` response with a Content-Type of `application/vnd.api+json`, and this body: [block:code] { "codes": [ { "code": "{\n \"links\": {\n \"self\": \"https://api.rolepoint.com/reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12\"\n },\n \"data\": {\n \"id\": \"12\",\n \"type\": \"connector\",\n \"attributes\": {\n \"active\": true,\n \"email\": \"test@test.com\",\n \"integration_module\": \"taleo_enterprise\",\n \"parameters\": {\n \"url\": \"https://test.taleo.net\",\n \"username\": \"myatsusername\"\n },\n \"username\": \"myusername\",\n \"webhook_url\": null\n }\n }\n}", "language": "json" } ] } [/block] `GET` requests can also be issued with an `If-Match` header, if the `If-Match` header given matches the current `Etag` of the Connector, we return a `304 Not Modified` response. For example: [block:code] { "codes": [ { "code": "GET /reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12 HTTP/1.1\nAuthorization: Bearer b8153fe3647b65cdd197f4374d306c43116c3c8174dabebafc94220e9d1cd26b\nIf-Match: 57940a61-b939-4528-8935-5defba65a36f", "language": "http" } ] } [/block] Would receive a response of: [block:code] { "codes": [ { "code": "HTTP/1.1 304 Not Modified", "language": "http" } ] } [/block] # Retrieving Many Connectors To retrieve many of your Connectors you must issue a `GET` request to the following endpoint: GET /<Reseller ID>/connector/ This endpoint is paginated, with a default page size of 10, and a maximum page size of 20. You can specify the size of the page you wish to retrieve through the `page[size]` query parameter. You can also specify the page number to retrieve using the `page[number]` query parameter. For example, to retrieve 2 items from the 2nd page of results: [block:code] { "codes": [ { "code": "GET /reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/?page[size]=2&page[number]=2 HTTP/1.1\nAuthorization: Bearer b8153fe3647b65cdd197f4374d306c43116c3c8174dabebafc94220e9d1cd26b\nContent-Type: application/json", "language": "http" } ] } [/block] Which would return a result like: [block:code] { "codes": [ { "code": "{\n \"data\": [\n {\n \"attributes\": {\n \"active\": true,\n \"email\": \"test3@test.com\",\n \"integration_module\": \"taleo_enterprise\",\n \"parameters\": {\n \"url\": \"https://test.taleo.net\",\n \"username\": \"myatsusername3\"\n },\n \"username\": \"myusername3\",\n \"webhook_url\": null\n },\n \"id\": \"3\",\n \"type\": \"connector\"\n },\n {\n \"attributes\": {\n \"active\": true,\n \"email\": \"test4@test.com\",\n \"integration_module\": \"taleo_enterprise\",\n \"parameters\": {\n \"url\": \"https://test.taleo.net\",\n \"username\": \"myatsusername4\"\n },\n \"username\": \"myusername\",\n \"webhook_url\": null\n },\n \"id\": \"4\",\n \"type\": \"connector\"\n }\n ],\n \"links\": {\n \"first\": \"https://api.rolepoint.com/reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/?page[number]=1&page[size]=2\",\n \"last\": \"https://api.rolepoint.com/reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/?page[number]=3&page[size]=2\",\n \"next\": \"https://api.rolepoint.com/reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/?page[number]=3&page[size]=2\",\n \"prev\": \"https://api.rolepoint.com/reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/?page[number]=1&page[size]=2\",\n \"self\": \"https://api.rolepoint.com/reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/?page[number]=2&page[size]=2\"\n },\n \"meta\": {\"total_count\": 5}\n}", "language": "json" } ] } [/block] The `links` parameter contains links which can be used for navigating paginated results. # Updating a Connector To update a Connector you must issue a `PATCH` request to the following endpoint: PATCH <Reseller ID>/connector/<Connector ID> You must also provide the current Etag of the Connector as an `If-Match` header, you can get this Etag by issuing a `GET` request for the Connector you wish to update. The parameters you are able to update for a Connector are: [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "0-0": "username", "0-1": "string", "0-2": "The username that will be used to authenticate with the connector API.", "1-0": "password", "1-2": "The password that will be used to authenticate with the connector API.", "1-1": "string", "2-0": "email", "2-1": "string", "2-2": "The email address to which any correspondence relating to the Connector should be sent.", "3-0": "webhook_url", "3-1": "string", "3-2": "A URL to which webhooks will be sent. For more information see the [Webhooks documentation](doc:webhooks)", "4-0": "active", "4-1": "boolean", "4-2": "Whether the integration should currently be activated. If False no requests will be issued to the ATS on behalf of this Connector.", "5-0": "parameters", "5-1": "object", "5-2": "The parameters for the ATS, for more information see [Connector Parameters](doc:parameters)" }, "cols": 3, "rows": 6 } [/block] A basic example of updating is: [block:code] { "codes": [ { "code": "PATCH /reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12 HTTP/1.1\nAuthorization: Bearer b8153fe3647b65cdd197f4374d306c43116c3c8174dabebafc94220e9d1cd26b\nContent-Type: application/json\nIf-Match: 57940a61-b939-4528-8935-5defba65a36f", "language": "http" } ] } [/block] With the body: [block:code] { "codes": [ { "code": "{\n \"data\": {\n \"type\": \"connector\",\n \"id\": \"12\", \n \"attributes\": {\n \"active\": False,\n \"email\": \"test2@test.com\"\n }\n }\n}", "language": "json" } ] } [/block] Which would receive a `HTTP/1.1 200 OK` response with a Content-Type of `application/vnd.api+json` and this body: [block:code] { "codes": [ { "code": "{\n \"links\": {\n \"self\": \"https://api.rolepoint.com/reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12\"\n },\n \"data\": {\n \"type\": \"connector\",\n \"id\": \"12\",\n \"attributes\": {\n \"active\": False,\n \"email\": \"test2@test.com\",\n \"integration_module\": \"taleo_enterprise\",\n \"parameters\": {\n \"url\": \"https://test.taleo.net\",\n \"username\": \"myatsusername\"\n },\n \"username\": \"myusername\",\n \"webhook_url\": None\n }\n }\n}", "language": "json" } ] } [/block] A more detailed example, to show updating the url field for Taleo Enterprise - for security reasons we require `password` when updating `url`: [block:code] { "codes": [ { "code": "PATCH /reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12 HTTP/1.1\nAuthorization: Bearer b8153fe3647b65cdd197f4374d306c43116c3c8174dabebafc94220e9d1cd26b\nContent-Type: application/json\nIf-Match: 03be1a6c-ea08-40cb-a668-d9b3fdab5ced", "language": "http" } ] } [/block] With body: [block:code] { "codes": [ { "code": "{\n \"data\": {\n \"attributes\": {\n \"parameters\": {\n \"password\": \"password\",\n \"url\": \"https://new-url.taleo.net\"\n }\n },\n \"id\": \"12\",\n \"type\": \"connector\"\n }\n}", "language": "json" } ] } [/block] Which would receive a `HTTP/1.1 200 OK` response with a Content-Type of `application/vnd.api+json` and body: [block:code] { "codes": [ { "code": "{\n \"links\": {\n \"self\": \"https://api.rolepoint.com/reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12\"\n },\n \"data\": {\n \"type\": \"connector\",\n \"id\": \"12\",\n \"attributes\": {\n \"active\": True,\n \"email\": \"test@test.com\",\n \"integration_module\": \"taleo_enterprise\",\n \"parameters\": {\n \"url\": \"https://new-url.taleo.net\",\n \"username\": \"myatsusername\"\n },\n \"username\": \"myusername\",\n \"webhook_url\": None\n }\n }\n}", "language": "json" } ] } [/block] # Deleting a Connector To delete a Connector, a `DELETE` request must be issued to the following endpoint: DELETE <Reseller ID>/connector/<Connector ID> You must also provide the current Etag of the Connector as an `If-Match` header, you can get this Etag by issuing a `GET` request for the Connector you wish to delete. For example: [block:code] { "codes": [ { "code": "DELETE /reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12 HTTP/1.1\nAuthorization: Bearer b8153fe3647b65cdd197f4374d306c43116c3c8174dabebafc94220e9d1cd26b\nContent-Type: application/json\nIf-Match: da38344d-6da2-43c4-bd54-fd20fa9c0dc3", "language": "http" } ] } [/block] Which would receive a response of: [block:code] { "codes": [ { "code": "HTTP/1.1 204 Deleted", "language": "http" } ] } [/block] # Ensuring a Connector is working We provide a `ping` endpoint in order to ensure a Connector is running. This is an asynchronous endpoint. The `ping` url looks like: GET <Reseller ID>/connector/<Connector ID>/ping The process we would follow to check the status of a Connector would be as follows: [block:code] { "codes": [ { "code": "GET /reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12/ping HTTP/1.1\nAuthorization: Bearer b8153fe3647b65cdd197f4374d306c43116c3c8174dabebafc94220e9d1cd26b\nX-RolePoint-Callback-Url: https://www.yourdomain.com/callback-endpoint", "language": "http" } ] } [/block] Which would receive a `HTTP/1.1 200 OK` response with a Content-Type of `application/vnd.api+json` and body: [block:code] { "codes": [ { "code": "{\n 'request_status_url': 'https://api.rolepoint.com/reseller/0e70283e-a048-4996-8015-a4087d0e64c8/connector/12/d3ee4bcf-cd6b-4c83-b76a-cc96646fe958/status'\n}", "language": "json" } ] } [/block] To get the eventual result of the `ping`, you can either poll the `request_status_url` or provide a callback URL as noted in the [Asynchronous Requests](doc:asynchronous-requests). We recommend the use of callbacks. The result will be of the form: [block:code] { "codes": [ { "code": "{\"success\": true}", "language": "json" } ] } [/block] Where the boolean value of the `success` key indicates whether the Connector is working.
{"_id":"56f413d33d35720e00ba97b3","project":"569e6099ebbadc0d0079becd","sync_unique":"","title":"Connector Parameters","type":"basic","api":{"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"name":"","status":400,"language":"json","code":"{}"}]},"settings":"","url":"","auth":"required","params":[]},"body":"The parameters described here are those which are used for authentication/interaction with an ATS. We secure these credentials in a secret store. They are secured alongside a single URL. The credentials will only be sent to that URL.\n\nEach ATS has different parameters which are necessary to authticate/interact with it, below we list the allowed combinations of `integration_module` to `parameters`.\n\n# Taleo Enterprise\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"integration_module\\\": \\\"taleo_enterprise\\\",\\n\\\"parameters\\\": {\\n  \\\"url\\\": \\\"https://test.taleo.net\\\",\\n  \\\"username\\\": \\\"myusername\\\",\\n  \\\"password\\\": \\\"mypassword\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n## Allowed fields on create\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"0-0\": \"username\",\n    \"0-1\": \"string\",\n    \"0-2\": \"The username for the Taleo Enterprise instance.\",\n    \"1-0\": \"password\",\n    \"1-1\": \"string\",\n    \"1-2\": \"The password for the Taleo Enterprise instance.\",\n    \"2-0\": \"url\",\n    \"2-1\": \"string\",\n    \"2-2\": \"The URL for the Taleo Enterprise instance. Must be of the form: `https://<subdomain>.taleo.net`.\"\n  },\n  \"cols\": 3,\n  \"rows\": 3\n}\n[/block]\n## Allowed fields on update\n\nThe same as for create.\n\nWhen updating the `url` field you *must* also provide the `password`, even if it is unchanged.\n\n# Taleo Business\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"integration_module\\\": \\\"taleo_business\\\",\\n\\\"parameters\\\": {\\n  \\\"company_code\\\": \\\"mycompanycode\\\",\\n  \\\"username\\\": \\\"myusername\\\",\\n  \\\"password\\\": \\\"mypassword\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"0-0\": \"username\",\n    \"0-1\": \"string\",\n    \"0-2\": \"The username for the Taleo Business instance.\",\n    \"1-0\": \"password\",\n    \"1-1\": \"string\",\n    \"1-2\": \"The password for the Taleo Business instance.\",\n    \"2-0\": \"company_code\",\n    \"2-1\": \"string\",\n    \"2-2\": \"The Company Code in Taleo Business.\"\n  },\n  \"cols\": 3,\n  \"rows\": 3\n}\n[/block]\n## Allowed fields on update\n\nThe same as for create.\n\n# iCIMS\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"integration_module\\\": \\\"icims\\\",\\n\\\"parameters\\\": {\\n  \\\"company_code\\\": 1234,\\n  \\\"person_folder\\\": \\\"C45678\\\",\\n  \\\"username\\\": \\\"myusername\\\",\\n  \\\"password\\\": \\\"mypassword\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"0-0\": \"company_code\",\n    \"1-0\": \"person_folder\",\n    \"2-0\": \"username\",\n    \"3-0\": \"password\",\n    \"0-1\": \"int\",\n    \"0-2\": \"iCIMS customer ID\",\n    \"1-1\": \"string\",\n    \"1-2\": \"Default iCIMS folder ID to add new candidates to\",\n    \"2-1\": \"string\",\n    \"2-2\": \"iCIMS username\",\n    \"3-1\": \"string\",\n    \"3-2\": \"iCIMS password\"\n  },\n  \"cols\": 3,\n  \"rows\": 4\n}\n[/block]\n## Allowed fields on update\n\nThe same as for create.\n\n# Lumesse TalentLink\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"integration_module\\\": \\\"lumesse\\\",\\n\\\"parameters\\\": {\\n  \\\"username\\\": \\\"myusername\\\",\\n  \\\"password\\\": \\\"mypassword\\\",\\n  \\\"api_key\\\": \\\"myapikey\\\",\\n  \\\"company_code\\\": \\\"mycompanycode\\\",\\n  \\\"job_channel_id\\\": 99\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"username\",\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"0-1\": \"string\",\n    \"0-2\": \"TalentLink Username. Should be of the format `CompanyName:username:BO`\",\n    \"1-0\": \"password\",\n    \"1-1\": \"string\",\n    \"1-2\": \"TalentLink Password.\",\n    \"2-0\": \"api_key\",\n    \"2-1\": \"string\",\n    \"2-2\": \"The TalentLink posting API key.\",\n    \"3-0\": \"company_code\",\n    \"3-1\": \"string\",\n    \"3-2\": \"The TalentLink HRIS API key.\",\n    \"4-0\": \"job_channel_id\",\n    \"4-1\": \"int\",\n    \"4-2\": \"(optional) - Only needs to be provided if job scraping is enabled. The ID of the Channel in Lumesse from which to pull Jobs.\"\n  },\n  \"cols\": 3,\n  \"rows\": 5\n}\n[/block]\n## Allowed fields on update\n\nThe same as for create.\n\n# Greenhouse\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"integration_module\\\": \\\"greenhouse\\\",\\n\\\"parameters\\\": {\\n  \\\"username\\\": \\\"user@example.com\\\",\\n  \\\"company_code\\\": \\\"test_company\\\",\\n  \\\"partner_api_password\\\": \\\"an_api_key\\\",\\n  \\\"harvest_api_password\\\": \\\"an_api_key\\\",\\n  \\\"candidate_sync_method\\\": \\\"partner\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n## Allowed fields on create\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"0-0\": \"username\",\n    \"0-1\": \"string\",\n    \"0-2\": \"If you are using the \\\"harvest\\\" candidate sync method, this should be the ID of your greenhouse user. \\n\\nIf you are using the \\\"partner\\\" candidate sync method, this should be the email address of your greenhouse user.\",\n    \"1-0\": \"company_code\",\n    \"1-1\": \"string\",\n    \"1-2\": \"The token for your companies greenhouse job board.\",\n    \"2-0\": \"partner_api_password\",\n    \"2-1\": \"string\",\n    \"2-2\": \"An API key for the greenhouse partner API.\",\n    \"3-0\": \"harvest_api_password\",\n    \"3-1\": \"string\",\n    \"3-2\": \"An API key for the greenhouse harvest API.\",\n    \"4-0\": \"candidate_sync_method\",\n    \"4-1\": \"string\",\n    \"4-2\": \"Which API to use to sync candidates and retrieve statuses. This can be either \\\"partner\\\" or \\\"harvest\\\".\"\n  },\n  \"cols\": 3,\n  \"rows\": 5\n}\n[/block]\n## Allowed fields on update\n\nThe same as for create.","category":"56f40b08167d070e0091a609","user":"56d846d5b20d260b0026570b","githubsync":"","parentDoc":null,"version":"569e609aebbadc0d0079bed0","hidden":false,"link_external":false,"slug":"parameters","link_url":"","next":{"pages":[],"description":""},"order":2,"updates":[],"__v":5,"createdAt":"2016-03-24T16:20:35.235Z","excerpt":"ATS parameters for creating Connectors","isReference":true,"childrenPages":[]}

Connector Parameters

ATS parameters for creating Connectors

The parameters described here are those which are used for authentication/interaction with an ATS. We secure these credentials in a secret store. They are secured alongside a single URL. The credentials will only be sent to that URL. Each ATS has different parameters which are necessary to authticate/interact with it, below we list the allowed combinations of `integration_module` to `parameters`. # Taleo Enterprise [block:code] { "codes": [ { "code": "\"integration_module\": \"taleo_enterprise\",\n\"parameters\": {\n \"url\": \"https://test.taleo.net\",\n \"username\": \"myusername\",\n \"password\": \"mypassword\"\n}", "language": "json" } ] } [/block] ## Allowed fields on create [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "0-0": "username", "0-1": "string", "0-2": "The username for the Taleo Enterprise instance.", "1-0": "password", "1-1": "string", "1-2": "The password for the Taleo Enterprise instance.", "2-0": "url", "2-1": "string", "2-2": "The URL for the Taleo Enterprise instance. Must be of the form: `https://<subdomain>.taleo.net`." }, "cols": 3, "rows": 3 } [/block] ## Allowed fields on update The same as for create. When updating the `url` field you *must* also provide the `password`, even if it is unchanged. # Taleo Business [block:code] { "codes": [ { "code": "\"integration_module\": \"taleo_business\",\n\"parameters\": {\n \"company_code\": \"mycompanycode\",\n \"username\": \"myusername\",\n \"password\": \"mypassword\"\n}", "language": "json" } ] } [/block] [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "0-0": "username", "0-1": "string", "0-2": "The username for the Taleo Business instance.", "1-0": "password", "1-1": "string", "1-2": "The password for the Taleo Business instance.", "2-0": "company_code", "2-1": "string", "2-2": "The Company Code in Taleo Business." }, "cols": 3, "rows": 3 } [/block] ## Allowed fields on update The same as for create. # iCIMS [block:code] { "codes": [ { "code": "\"integration_module\": \"icims\",\n\"parameters\": {\n \"company_code\": 1234,\n \"person_folder\": \"C45678\",\n \"username\": \"myusername\",\n \"password\": \"mypassword\"\n}", "language": "json" } ] } [/block] [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "0-0": "company_code", "1-0": "person_folder", "2-0": "username", "3-0": "password", "0-1": "int", "0-2": "iCIMS customer ID", "1-1": "string", "1-2": "Default iCIMS folder ID to add new candidates to", "2-1": "string", "2-2": "iCIMS username", "3-1": "string", "3-2": "iCIMS password" }, "cols": 3, "rows": 4 } [/block] ## Allowed fields on update The same as for create. # Lumesse TalentLink [block:code] { "codes": [ { "code": "\"integration_module\": \"lumesse\",\n\"parameters\": {\n \"username\": \"myusername\",\n \"password\": \"mypassword\",\n \"api_key\": \"myapikey\",\n \"company_code\": \"mycompanycode\",\n \"job_channel_id\": 99\n}", "language": "json" } ] } [/block] [block:parameters] { "data": { "0-0": "username", "h-0": "Name", "h-1": "Type", "h-2": "Description", "0-1": "string", "0-2": "TalentLink Username. Should be of the format `CompanyName:username:BO`", "1-0": "password", "1-1": "string", "1-2": "TalentLink Password.", "2-0": "api_key", "2-1": "string", "2-2": "The TalentLink posting API key.", "3-0": "company_code", "3-1": "string", "3-2": "The TalentLink HRIS API key.", "4-0": "job_channel_id", "4-1": "int", "4-2": "(optional) - Only needs to be provided if job scraping is enabled. The ID of the Channel in Lumesse from which to pull Jobs." }, "cols": 3, "rows": 5 } [/block] ## Allowed fields on update The same as for create. # Greenhouse [block:code] { "codes": [ { "code": "\"integration_module\": \"greenhouse\",\n\"parameters\": {\n \"username\": \"user@example.com\",\n \"company_code\": \"test_company\",\n \"partner_api_password\": \"an_api_key\",\n \"harvest_api_password\": \"an_api_key\",\n \"candidate_sync_method\": \"partner\"\n}", "language": "json" } ] } [/block] ## Allowed fields on create [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "0-0": "username", "0-1": "string", "0-2": "If you are using the \"harvest\" candidate sync method, this should be the ID of your greenhouse user. \n\nIf you are using the \"partner\" candidate sync method, this should be the email address of your greenhouse user.", "1-0": "company_code", "1-1": "string", "1-2": "The token for your companies greenhouse job board.", "2-0": "partner_api_password", "2-1": "string", "2-2": "An API key for the greenhouse partner API.", "3-0": "harvest_api_password", "3-1": "string", "3-2": "An API key for the greenhouse harvest API.", "4-0": "candidate_sync_method", "4-1": "string", "4-2": "Which API to use to sync candidates and retrieve statuses. This can be either \"partner\" or \"harvest\"." }, "cols": 3, "rows": 5 } [/block] ## Allowed fields on update The same as for create.
The parameters described here are those which are used for authentication/interaction with an ATS. We secure these credentials in a secret store. They are secured alongside a single URL. The credentials will only be sent to that URL. Each ATS has different parameters which are necessary to authticate/interact with it, below we list the allowed combinations of `integration_module` to `parameters`. # Taleo Enterprise [block:code] { "codes": [ { "code": "\"integration_module\": \"taleo_enterprise\",\n\"parameters\": {\n \"url\": \"https://test.taleo.net\",\n \"username\": \"myusername\",\n \"password\": \"mypassword\"\n}", "language": "json" } ] } [/block] ## Allowed fields on create [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "0-0": "username", "0-1": "string", "0-2": "The username for the Taleo Enterprise instance.", "1-0": "password", "1-1": "string", "1-2": "The password for the Taleo Enterprise instance.", "2-0": "url", "2-1": "string", "2-2": "The URL for the Taleo Enterprise instance. Must be of the form: `https://<subdomain>.taleo.net`." }, "cols": 3, "rows": 3 } [/block] ## Allowed fields on update The same as for create. When updating the `url` field you *must* also provide the `password`, even if it is unchanged. # Taleo Business [block:code] { "codes": [ { "code": "\"integration_module\": \"taleo_business\",\n\"parameters\": {\n \"company_code\": \"mycompanycode\",\n \"username\": \"myusername\",\n \"password\": \"mypassword\"\n}", "language": "json" } ] } [/block] [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "0-0": "username", "0-1": "string", "0-2": "The username for the Taleo Business instance.", "1-0": "password", "1-1": "string", "1-2": "The password for the Taleo Business instance.", "2-0": "company_code", "2-1": "string", "2-2": "The Company Code in Taleo Business." }, "cols": 3, "rows": 3 } [/block] ## Allowed fields on update The same as for create. # iCIMS [block:code] { "codes": [ { "code": "\"integration_module\": \"icims\",\n\"parameters\": {\n \"company_code\": 1234,\n \"person_folder\": \"C45678\",\n \"username\": \"myusername\",\n \"password\": \"mypassword\"\n}", "language": "json" } ] } [/block] [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "0-0": "company_code", "1-0": "person_folder", "2-0": "username", "3-0": "password", "0-1": "int", "0-2": "iCIMS customer ID", "1-1": "string", "1-2": "Default iCIMS folder ID to add new candidates to", "2-1": "string", "2-2": "iCIMS username", "3-1": "string", "3-2": "iCIMS password" }, "cols": 3, "rows": 4 } [/block] ## Allowed fields on update The same as for create. # Lumesse TalentLink [block:code] { "codes": [ { "code": "\"integration_module\": \"lumesse\",\n\"parameters\": {\n \"username\": \"myusername\",\n \"password\": \"mypassword\",\n \"api_key\": \"myapikey\",\n \"company_code\": \"mycompanycode\",\n \"job_channel_id\": 99\n}", "language": "json" } ] } [/block] [block:parameters] { "data": { "0-0": "username", "h-0": "Name", "h-1": "Type", "h-2": "Description", "0-1": "string", "0-2": "TalentLink Username. Should be of the format `CompanyName:username:BO`", "1-0": "password", "1-1": "string", "1-2": "TalentLink Password.", "2-0": "api_key", "2-1": "string", "2-2": "The TalentLink posting API key.", "3-0": "company_code", "3-1": "string", "3-2": "The TalentLink HRIS API key.", "4-0": "job_channel_id", "4-1": "int", "4-2": "(optional) - Only needs to be provided if job scraping is enabled. The ID of the Channel in Lumesse from which to pull Jobs." }, "cols": 3, "rows": 5 } [/block] ## Allowed fields on update The same as for create. # Greenhouse [block:code] { "codes": [ { "code": "\"integration_module\": \"greenhouse\",\n\"parameters\": {\n \"username\": \"user@example.com\",\n \"company_code\": \"test_company\",\n \"partner_api_password\": \"an_api_key\",\n \"harvest_api_password\": \"an_api_key\",\n \"candidate_sync_method\": \"partner\"\n}", "language": "json" } ] } [/block] ## Allowed fields on create [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "0-0": "username", "0-1": "string", "0-2": "If you are using the \"harvest\" candidate sync method, this should be the ID of your greenhouse user. \n\nIf you are using the \"partner\" candidate sync method, this should be the email address of your greenhouse user.", "1-0": "company_code", "1-1": "string", "1-2": "The token for your companies greenhouse job board.", "2-0": "partner_api_password", "2-1": "string", "2-2": "An API key for the greenhouse partner API.", "3-0": "harvest_api_password", "3-1": "string", "3-2": "An API key for the greenhouse harvest API.", "4-0": "candidate_sync_method", "4-1": "string", "4-2": "Which API to use to sync candidates and retrieve statuses. This can be either \"partner\" or \"harvest\"." }, "cols": 3, "rows": 5 } [/block] ## Allowed fields on update The same as for create.
{"_id":"5799ff71d5decc2b00eefed0","slug":"connector-webhooks","user":"56cc98fcb4cbcf0b004a6009","body":"The reseller API allows you to activate & deactivate [Webhooks](doc:webhooks) for a connector.  By default, job & candidate status webhooks are deactivated.  This allows you to control when webhooks will start being sent to your application, avoiding any potential race conditions between connector creation and receiving some initial webhooks.  It also allows you to only select which webhooks you are interested in receiving.\n\n# Activating Webhooks For A Connector\n\nTo activate webhooks can send a POST request to the webhook endpoint.  The URL for webhooks looks like:\n\n    POST <Reseller ID>/connector/<Connector ID>/webhook\n\nFor example, to activate job webhooks for the connector `1518` with reseller `32994ffb-286c-4c7f-91ff-0dd023d7b94d` you could make the following request:\n\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"POST /reseller/32994ffb-286c-4c7f-91ff-0dd023d7b94d/connector/1518/webhook HTTP/1.1\\nAuthorization: Bearer abcd\\nContent-Type: application/vnd.api+json\\n\\n{\\n  \\\"data\\\": {\\n    \\\"attributes\\\": {\\n      \\\"active\\\": True,\\n      \\\"webhook_type\\\": \\\"jobs\\\"\\n    },\\n    \\\"type\\\": \\\"webhook\\\"\\n  }\\n}\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\nWhere `webhook_type` is one of:\n\n- `jobs` which controls `job_add`, `job_remove` and `job_update` events.\n- `candidate_status` which controls the `candidate_status_update` and `application_status_update` events.\n\n# Checking Webhook Status For A Connector\n\nTo list all the webhooks for a connector you should send a GET request to:\n\n    GET <Reseller ID>/connector/<Connector ID>/webhook\n\nFor example, to get all webhooks for connector `1518` and reseller `32994ffb-286c-4c7f-91ff-0dd023d7b94d` we could make this request:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"GET /reseller/32994ffb-286c-4c7f-91ff-0dd023d7b94d/connector/1518/webhook/1 HTTP/1.1\\nAuthorization: Bearer abcd\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\nWhich will respond with some JSON, like this:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"data\\\": {\\n    \\\"attributes\\\": {\\n      \\\"active\\\": true,\\n      \\\"webhook_type\\\": \\\"jobs\\\"\\n    },\\n    \\\"id\\\": \\\"1\\\",\\n    \\\"meta\\\": {\\n      \\\"etag\\\": \\\"e56b209f-4fd0-4597-b842-df6a17490e92\\\"\\n    },\\n    \\\"type\\\": \\\"webhook\\\"\\n  },\\n  \\\"links\\\": {\\n    \\\"self\\\": \\\"https://api.rolepoint-connect.com/reseller/32994ffb-286c-4c7f-91ff-0dd023d7b94d/connector/1518/webhook/1\\\"\\n  }\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nAny webhooks listed as `active: true` are currently active, and any missing webhooks or those listed as `active: false` are currently inactive.\n\n# Deactivating Webhooks For A Connector\n\nTo deactivate webhooks for a connector you should delete the webhook record you created.  This can be done by sending an HTTP delete to a webhook.\n\n    DELETE <Reseller ID>/connector/<Connector ID>/webhook/<Webhook ID>\n    \nFor example, to delete the webhook in the GET example above you could send the following request:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"DELETE /reseller/32994ffb-286c-4c7f-91ff-0dd023d7b94d/connector/1518/webhook/1 HTTP/1.1\\nAuthorization: Bearer 1234\\nIf-Match: e56b209f-4fd0-4597-b842-df6a17490e92\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\nIf the delete is succesful, this will return a `204 No Content` with an empty body.","createdAt":"2016-07-28T12:49:53.311Z","isReference":false,"project":"569e6099ebbadc0d0079becd","type":"basic","version":"569e609aebbadc0d0079bed0","order":3,"sync_unique":"","title":"Connector Webhooks","githubsync":"","link_external":false,"link_url":"","parentDoc":null,"hidden":false,"updates":[],"__v":0,"api":{"results":{"codes":[{"name":"","status":200,"language":"json","code":"{}"},{"status":400,"language":"json","code":"{}","name":""}]},"settings":"","auth":"required","params":[],"url":""},"category":"56f40b08167d070e0091a609","excerpt":"Controlling webhooks for a connector","childrenPages":[]}

Connector Webhooks

Controlling webhooks for a connector

The reseller API allows you to activate & deactivate [Webhooks](doc:webhooks) for a connector. By default, job & candidate status webhooks are deactivated. This allows you to control when webhooks will start being sent to your application, avoiding any potential race conditions between connector creation and receiving some initial webhooks. It also allows you to only select which webhooks you are interested in receiving. # Activating Webhooks For A Connector To activate webhooks can send a POST request to the webhook endpoint. The URL for webhooks looks like: POST <Reseller ID>/connector/<Connector ID>/webhook For example, to activate job webhooks for the connector `1518` with reseller `32994ffb-286c-4c7f-91ff-0dd023d7b94d` you could make the following request: [block:code] { "codes": [ { "code": "POST /reseller/32994ffb-286c-4c7f-91ff-0dd023d7b94d/connector/1518/webhook HTTP/1.1\nAuthorization: Bearer abcd\nContent-Type: application/vnd.api+json\n\n{\n \"data\": {\n \"attributes\": {\n \"active\": True,\n \"webhook_type\": \"jobs\"\n },\n \"type\": \"webhook\"\n }\n}", "language": "http" } ] } [/block] Where `webhook_type` is one of: - `jobs` which controls `job_add`, `job_remove` and `job_update` events. - `candidate_status` which controls the `candidate_status_update` and `application_status_update` events. # Checking Webhook Status For A Connector To list all the webhooks for a connector you should send a GET request to: GET <Reseller ID>/connector/<Connector ID>/webhook For example, to get all webhooks for connector `1518` and reseller `32994ffb-286c-4c7f-91ff-0dd023d7b94d` we could make this request: [block:code] { "codes": [ { "code": "GET /reseller/32994ffb-286c-4c7f-91ff-0dd023d7b94d/connector/1518/webhook/1 HTTP/1.1\nAuthorization: Bearer abcd", "language": "http" } ] } [/block] Which will respond with some JSON, like this: [block:code] { "codes": [ { "code": "{\n \"data\": {\n \"attributes\": {\n \"active\": true,\n \"webhook_type\": \"jobs\"\n },\n \"id\": \"1\",\n \"meta\": {\n \"etag\": \"e56b209f-4fd0-4597-b842-df6a17490e92\"\n },\n \"type\": \"webhook\"\n },\n \"links\": {\n \"self\": \"https://api.rolepoint-connect.com/reseller/32994ffb-286c-4c7f-91ff-0dd023d7b94d/connector/1518/webhook/1\"\n }\n}", "language": "json" } ] } [/block] Any webhooks listed as `active: true` are currently active, and any missing webhooks or those listed as `active: false` are currently inactive. # Deactivating Webhooks For A Connector To deactivate webhooks for a connector you should delete the webhook record you created. This can be done by sending an HTTP delete to a webhook. DELETE <Reseller ID>/connector/<Connector ID>/webhook/<Webhook ID> For example, to delete the webhook in the GET example above you could send the following request: [block:code] { "codes": [ { "code": "DELETE /reseller/32994ffb-286c-4c7f-91ff-0dd023d7b94d/connector/1518/webhook/1 HTTP/1.1\nAuthorization: Bearer 1234\nIf-Match: e56b209f-4fd0-4597-b842-df6a17490e92", "language": "http" } ] } [/block] If the delete is succesful, this will return a `204 No Content` with an empty body.
The reseller API allows you to activate & deactivate [Webhooks](doc:webhooks) for a connector. By default, job & candidate status webhooks are deactivated. This allows you to control when webhooks will start being sent to your application, avoiding any potential race conditions between connector creation and receiving some initial webhooks. It also allows you to only select which webhooks you are interested in receiving. # Activating Webhooks For A Connector To activate webhooks can send a POST request to the webhook endpoint. The URL for webhooks looks like: POST <Reseller ID>/connector/<Connector ID>/webhook For example, to activate job webhooks for the connector `1518` with reseller `32994ffb-286c-4c7f-91ff-0dd023d7b94d` you could make the following request: [block:code] { "codes": [ { "code": "POST /reseller/32994ffb-286c-4c7f-91ff-0dd023d7b94d/connector/1518/webhook HTTP/1.1\nAuthorization: Bearer abcd\nContent-Type: application/vnd.api+json\n\n{\n \"data\": {\n \"attributes\": {\n \"active\": True,\n \"webhook_type\": \"jobs\"\n },\n \"type\": \"webhook\"\n }\n}", "language": "http" } ] } [/block] Where `webhook_type` is one of: - `jobs` which controls `job_add`, `job_remove` and `job_update` events. - `candidate_status` which controls the `candidate_status_update` and `application_status_update` events. # Checking Webhook Status For A Connector To list all the webhooks for a connector you should send a GET request to: GET <Reseller ID>/connector/<Connector ID>/webhook For example, to get all webhooks for connector `1518` and reseller `32994ffb-286c-4c7f-91ff-0dd023d7b94d` we could make this request: [block:code] { "codes": [ { "code": "GET /reseller/32994ffb-286c-4c7f-91ff-0dd023d7b94d/connector/1518/webhook/1 HTTP/1.1\nAuthorization: Bearer abcd", "language": "http" } ] } [/block] Which will respond with some JSON, like this: [block:code] { "codes": [ { "code": "{\n \"data\": {\n \"attributes\": {\n \"active\": true,\n \"webhook_type\": \"jobs\"\n },\n \"id\": \"1\",\n \"meta\": {\n \"etag\": \"e56b209f-4fd0-4597-b842-df6a17490e92\"\n },\n \"type\": \"webhook\"\n },\n \"links\": {\n \"self\": \"https://api.rolepoint-connect.com/reseller/32994ffb-286c-4c7f-91ff-0dd023d7b94d/connector/1518/webhook/1\"\n }\n}", "language": "json" } ] } [/block] Any webhooks listed as `active: true` are currently active, and any missing webhooks or those listed as `active: false` are currently inactive. # Deactivating Webhooks For A Connector To deactivate webhooks for a connector you should delete the webhook record you created. This can be done by sending an HTTP delete to a webhook. DELETE <Reseller ID>/connector/<Connector ID>/webhook/<Webhook ID> For example, to delete the webhook in the GET example above you could send the following request: [block:code] { "codes": [ { "code": "DELETE /reseller/32994ffb-286c-4c7f-91ff-0dd023d7b94d/connector/1518/webhook/1 HTTP/1.1\nAuthorization: Bearer 1234\nIf-Match: e56b209f-4fd0-4597-b842-df6a17490e92", "language": "http" } ] } [/block] If the delete is succesful, this will return a `204 No Content` with an empty body.