Overview
You can subscribe to this API to receive information about events that happen to a candidate assessment record in PSI system. This service helps in keeping the status of record(s) in sync across all integrated systems. For example when the candidate schedules for an exam, this service can keep all related systems informed about the change in status of the candidate record.
When an event occurs, PSI creates an event object to keep track of the type of event, the time when it occurred, and the data associated with the event. PSI can post the event information to your server via an HTTPS PUT request. A full list of event types can been found in the payload section below.
When sending notification, PSI will wait for a success response for a short time, after which the delivery will be considered a failure, and the event will be moved into error queued. Events in the error queue can be reconsidered for delivery at later point of time. Resending of notifications from the error queue is manual at present. Every event maintains the UTC timestamp at which it was generated in PSI system. It is important that the receiving system treats the sequence of events based on this timestamp field irrespective of the sequence in which these are received.
Subscription
There are two requirements to enable event notifications:
- You must create an endpoint page on your server that can receive an HTTPS PUT request from PSI. This page must be accessible by PSI event notification service and it should be configured to receive JSON data via HTTPS PUT. Your endpoint must use a valid signed SSL certificate.
- You must be a trusted API partner with PSI to receive the notifications. Trusted partners must establish a protocol of trust covering authentication and system to system communication in non-production environment first.
Receiving Events
After you specify your notification_url and established a authentication mechanism, PSI will automatically begin notifying your system for the events as they occur. Your server must return an HTTP status code of 200 to indicate that the notification was received. If PSI receives any other status code or no response, the notification will be considered a failure and moved to an error_queue for a manual retry later. The retry logic will be automated in the near future.
Authentication
PSI can integrate with external systems using any authentication scheme. PSI recommends using OAauth2 guidelines to follow industry standard security.
PUT https:///notifications
The request body takes a complete
NotificationRequest resource, containing the following writable properties:
{
"booking_code": "string",
"booking_on": "string",
"candidate_fname": "string",
"candidate_id": "string",
"candidate_lname": "string",
"candidate_mname": "string",
"change_reason": "string",
"client_eligibility_id": "string",
"delivery_mode": "string",
"effective_date": "string",
"exam_code": "string",
"exam_portions": [
{
"portion_code": "string",
"portion_name": "string"
}
],
"location_address": "string",
"location_code": "string",
"location_name": "string",
"location_timezone": "string"
}
Name |
Type |
Description |
Additional |
booking_code
|
string |
Alphanumeric unique identifier for this exam appointment (aka appointment ID, confirmation ID)
|
|
booking_on
|
string |
Date/Time (ISO 8601 format) when the booking starts. The Date/Time value will be in UTC YYYY-MM-DDThh:mm:ssZ e.g. Apr 1, 20202 10 pm in UTC will be represented as 2020-04-01T22:00:00Z.
|
|
candidate_fname
|
string |
Candidate first Name
|
|
candidate_id
|
string |
customer defined Canddiate ID
|
|
candidate_lname
|
string |
Candidate last Name
|
|
candidate_mname
|
string |
Candidate middle Name
|
Optional
|
change_reason
|
string |
Indicator for the change that fired this event.
Possible values are:
BOOKING_CREATED
BOOKING_CANCELLED
BOOKING_RESCHEDULED
EXAM_COMPLETED
EXCUSED_ABSENT
ABSENT
|
|
client_eligibility_id
|
string |
Client's unique identifier for this eligibility, if provided.
|
Optional
|
delivery_mode
|
string |
Indicator for delivery mode of the schedule.
Possible values are:
SITE_PROCTORED
ATLAS_REMOTE_PROCTORED
|
Optional
|
effective_date
|
string |
Date/Time (ISO 8601 format) when this activity was done in PSI system. The Date/Time value will be in UTC YYYY-MM-DDThh:mm:ssZ. e.g. Apr 1, 20202 10 pm in UTC will be represented as 2020-04-01T22:00:00Z.
|
Optional
|
exam_code
|
string |
Optional field. Alphanumeric unique identifier for this exam as defined in external system
|
Optional
|
exam_portions[]
|
array |
|
Optional
|
exam_portions[].portion_code
|
string |
Unique alphanumeric key for this portion
|
Optional
|
exam_portions[].portion_name
|
string |
Name of the portion
|
Optional
|
location_address
|
string |
Test site Address. Important: This field is provided only for SITE_PROCTORED exam delivery mode.
|
Optional
|
location_code
|
string |
Alphanumeric ID of the test center for this appointment. Available only for SITE_PROCTORED exams.
|
Optional
|
location_name
|
string |
Name of the Test site. Important: This field is provided only for SITE_PROCTORED exam delivery mode.
|
Optional
|
location_timezone
|
string |
Timezone value as selected by candidate at the time of booking the exam. - For a SITE_PROCTORED delivery, the timezone for the test center site is used
- For ATLAS_REMOTE_PROCTORED exams the timezone value selected by candidate during scheduling flow is used
- For all other delivery modes, this field will be empty
PSI stores timezone in country/zone format based on IANA Time Zone database. A timezone value looks like – “Country/zone”. For example US/Eastern Zone is stored as America/New_York. For cases where multiple countires fall under same timezone such as Central European Standard Time, there are multiple values possible that the scheduling flow would use depending upon candidate’s country. Here are few examples:- Candidate in France will choose Europe/Paris
- Candidate in Switzerland will choose Europe/Zurich
- Candidate in Italy will choose Europe/Rome
- Candidate in Germany will choose Europe/Berlin
|
Optional
|
The following HTTP status codes may be returned, optionally with a response resource.
Status code |
Description |
Resource |
200 |
OK Expected response to a valid request
|
NotificationResponse |
400 |
Bad Request Bad Request Error (When no matching candidate/exam data is found in external system).
|
error |
500 |
Internal Server Error Internal Server Error (When one or more components are down in external system). In this case Atlas automatically retries further notifications.
|
error |
Try it out!