Skip to content

Pulsifi/pulsifi-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Pulsifi Platform API Integration Guideline v1.1.0

Authentication : OAuth2 Client Credentials Grant


Pulsifi's Integration Team will provide the necessary client ID/client secret

Pulsifi integration API calls will be authenticated using OAuth2 Client Credentials Grant.

Prerequisite: Client need get a valid access token to call the integration API's with the provided client id and secret.


The following is a sample of OAuth2 Client Credentials Grant credentials:

CLIENT-ID: <will be provided by Pulsifi>
CLIENT-SECRET: <will be provided by Pulsifi>

The following is a sample of a Post request to get access token:

curl --request POST \
  --url 'https://api.pulsifi.me/partner/oauth2/token' \
  --header 'Authorization: Basic YOUR-ENCODED-CLIENT-ID-CLIENT-SECRET' \
  ...

Response


Attribute Type Description
access_token String Valid access token will be generated
scope String Default scope
expires_in Number Access token expiry datetime in unixtimestamp
token_type String Default : Bearer


Retrieve Candidate assessment result

If the assessment result data need to capture and store in your ATS platform,

you can either get assessment result data based on HTTP GET https://api.pulsifi.me/partner/v1.0/ats/assessment_invitations/{invitation_code} or

provide a webhook callback url that accepts HTTP post method to Pulsifi

A client ID value will be included in the HTTP post's header with name of "client-id", which used to determine Pulsifi as the source.

For best security practice, always whitelist Pulsifi’s API platform IP by requesting IP address from Pulsifi.



Pulsifi Integration API Reference


1. Generate Pulsifi Assessment Invitation Endpoint

  • This endpoint will be used to generate a Pulsifi's assessment invitation link.

URL (HTTP POST)

Content Type

  • Format: application/json

Payload


Name Type Required? Description
job_id String (uuid) Y Refer to FAQ section below
is_anonymous_candidate Boolean Y Options:
  • true: Anonymous mode
  • false: Non-anonymous mode
ext_reference_id String Y ATS platform job application id.
  • maximum 50 characters
email String Y (non-anonymous mode)
N (anonymous mode)
Candidate's email.
  • maximum 255 characters
first_name String Y (non-anonymous mode)
N (anonymous mode)
Candidate's first name.
  • maximum 255 characters
last_name String Y (non-anonymous mode)
N (anonymous mode)
Candidate's last name.
  • maximum 255 characters
deadline UTC Date N Pulsifi's invitation link deadline date (UTC date).
  • Default to 3 months validity period
  • maximum 3 months validity period
  • Example: "2021-08-12T12:21:59Z"


Response


Attribute Type Description
status String invited, initial state
ext_reference_id String ATS platform job application id.
job_id String (uuid) Job ID provided by Pulsifi.
is_anonymous_candidate Boolean Options:
  • true: Anonymous mode
  • false: Non-anonymous mode
invitation_code. String Pulsifi's invitation code.
Recommend to store this code in your database as reference
for further assessment status and result query
invitation_link String Pulsifi's assessment invitation link.
Example: https://candidate.pulsifi.me/invites/...
invitation_expired_at UTC Date Pulsifi's assessment invitation link expiry date.
Example: 2021-08-04T23:59:59.999Z
created_at UTC Date Pulsifi's assessment invitation link created on this date.
Example: 2021-08-04T23:59:59.999Z


Sample Invitation Post Request (anonymous)


curl -X 'POST' \
'https://api.pulsifi.me/partner/v1.0/ats/assessment_invitations' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <access_token>' \
  -H 'Content-Type: application/json' \
  -d '{
  "job_id": "<pulsifi job id>",
  "ext_reference_id": "<ATS reference id>",
  "is_anonymous_candidate": true,
  "deadline": "2021-08-12T12:21:59Z"
}'


Sample Invitation Post Request (non-anonymous)


curl -X 'POST' \
'https://api.pulsifi.me/partner/v1.0/ats/assessment_invitations' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <access_token>' \
  -H 'Content-Type: application/json' \
  -d '{
  "job_id": "<pulsifi job id>",
  "ext_reference_id": "<ATS reference id>",
  "is_anonymous_candidate": false,
  "email": "tester@test.com",
  "first_name": "Tester",
  "last_name": "User",
  "deadline": "2021-08-12T12:21:59Z"
}'

2. Get Assessment Invitation Status

  • This endpoint will be used to get assessment invitation status for progress tracking purpose.

URL (HTTP GET)

Content Type

  • Format: application/json

Response


Attribute Type Description
status String
  • invited, initial state
  • expired, assessment link expired
  • opened, after candidate accept the assessment link
  • started, after candidate complete at least 1 assessment
  • completed, after candidate complete all assessment
ext_reference_id String ATS platform job application id.
job_id String (uuid) Job ID provided by Pulsifi.
is_anonymous_candidate Boolean Options:
  • true: Anonymous mode
  • false: Non-anonymous mode
invitation_code. String Pulsifi's invitation code
invitation_link String Pulsifi's assessment invitation link.
Example: https://candidate.pulsifi.me/invites/...
invitation_expired_at UTC Date Pulsifi's assessment invitation link expiry date.
Example: 2021-08-04T23:59:59.999Z
created_at UTC Date Pulsifi's assessment invitation link created on this date.
Example: 2021-08-04T23:59:59.999Z


3. Get Assessment Result

  • There are 2 ways in retrieving candidate's assessment result after candidate completed all assessments.

3.1 Get Assessment Result via HTTP GET

URL (HTTP GET)

Content Type

  • Format: application/json

Response


Attribute Type Description
invitation_code String Pulsifi's invitation code
scores Array of score:{ display:string, value:number }
Pulsifi's fit score.
No of fit score items returned is determine by the Pulsifi Job setup.
Possible display's data:
- Pulsifi Role Fit Score
- Pulsifi Organizational Fit Score

value's data:
- minimum : 0
- maximum : 100

Example:
"scores": [ { "display": "Pulsifi Role Fit Score", "value": "67" },
{ "display": "Pulsifi Organizational Fit Score", "value": "45" } ]

report_url String Pulsifi's assessment report url with 1 year validity period.
Example: https://app.pulsifi.me/share/candidate/...


3.2 Get Assessment Result via Webhook


The ATS platform will be required to provide a webhook callback url
HTTP POST will be triggered when candidate assessment result is ready.

URL (HTTPS POST)

  • Webhook URL to be provided by the ATS platform
  • Sample Response: 200 OK

Header

  • header 'client-id: sample-client-id'
  • 'sample-client-id' to be provided by Pulsifi

Payload

  • Format: application/json

Name Type Description
event_type String Pulsifi's event type
Example: job_application_role_fit_score_created / job_application_culture_fit_score_created
job_id String (uuid) Job ID provided by Pulsifi.
ext_reference_id String ATS platform job application id.
profile_share_url String Pulsifi's assessment report url with 1 year validity period.
Example: https://app.pulsifi.me/share/candidate/...
job_application_id String (uuid) Pulsifi's job application ID reference.
fit_score Number Pulsifi's Fit Score (Role Fit Score/ Culture Fit Score).

Sample Pulsifi Role Fit Score Payload


{
  "event_type": "job_application_role_fit_score_created",
  "event_body": {
    "job_id": "<pulsifi job id>",
    "ext_reference_id": "<ATS job application reference id>",
    "profile_share_url": "https://app.pulsifi.me/share/candidate/...",
    "job_application_id": "<pulsifi job application id reference>",
    "fit_score": 9.4
  }
}

Sample Pulsifi Culture Fit Score Payload


{
  "event_type": "job_application_culture_fit_score_created",
  "event_body": {
    "job_id": "<pulsifi job id>",
    "ext_reference_id": "<ATS job application reference id>",
    "profile_share_url": "https://app.pulsifi.me/share/candidate/...",
    "job_application_id": "<pulsifi job application id reference>",
    "fit_score": 9.4
  }
}

FAQ

1. How can i get Pulsifi Job Id

  • By default, you can always get it by accessing job module in the Pulsifi app.

  • If you are the 3rd party ATS platform who did not have access to Pulsifi app, please request from Pulsifi account manager who manage the integration project.

About

Pulsifi Platform Assessment Integration API Guideline

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published