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:
  1. 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.
  2. 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.

Request

PUT https:///notifications

Request body

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"
}

Properties

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

Response

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

Explore this API

Payload

Booking Data

Request Content-Type
Response Content-Type
Try it out!