Status Updates
Introduction
Status messages are generated during order processing. They indicate key events in an order’s lifecycle, including:
Background Checks and Drug Screening:
Background form completed by the applicant (assuming “Invite Applicant (1-step)” workflow was used)
One or more products have been completed (such as an Employment screening within a larger order)
The order itself is completed
The order adjudicates status has changed (if that service is being utilized)
I-9 Product:
I-9 form is pending completion of Section 1 or Section 2
I-9 form is completed
E-Verify status (if ordered)
Clients can use the following approaches to retrieve status messages:
PUSH
HireRight sends statuses directly to the client once a status update occurs
HireRight recommended approach for order status updates
PULL
Client pulls status messages from HireRight
Important: Please note this operation has a rate limit of 50 requests per minute. If the rate limit exceeds 50 requests per minute the request may be rejected by HireRight
PUSH and PULL
Combination of both approaches
Note that the PUSH approach is the most recommended approach to be used while the PULL approach is only recommended as a supplementary approach.
Status Message: PUSH Approach
Overview
With the PUSH approach, HireRight sends statuses directly to the client once a status update occurs. This approach allows the client to receive real-time updates, however, this requires the client endpoint to be online at all times.
This is the HireRight recommended approach for order status messages.
The status message is PUSHed by HireRight to an HTTPS end-point provided during the Create Order (or Create I-9 Worksheet) operation in the statusUpdateUrls property.
"statusUpdatesUrls": [
{
"https://the_desired_webhook_address.com"
}
],
Authentication
Status pushes support both Basic and OAuth2 Authentication.
Basic Authentication
In basic HTTP authentication, a request contains a header field in the form of Authorization: Basic <credentials>
, where credentials is the base64 encoding of username and password joined by a single colon : .
Basic authentication refers to a header value of:Authorization: Basic <base64 encoded username:password>
Or another way to look at the format is as follows:Authorization: Basic + base64(username+’:’+password)
For example, for credentials username/password it will look like this:Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
If Basic authentication is configured for the status pushes, outgoing status pushes will have this header present.
OAuth2 Authentication
In the OAuth2 Authentication, the following high level process flow is performed:
HireRight performs an API call to the provided OAuth2 endpoint to retrieve an OAuth token
OAuth token and when it will expire is returned in the response
HireRight sends the status push with the OAuth token
Token is validated, and if it is valid and not expired, OAuth authentication passes and status pushes are accepted
To utilize the OAuth2 Authentication method the following information must be provided to HireRight:
OAuth2 Token Endpoint - 2 Options
Option 1: Your OAuth2 Token Endpoint is configured as a static endpoint by HireRight within your integration configuration
Option 2: A dynamic endpoint is included as part of the Create Order API operation within the
StatusUpdatesAuthenticationURL
flex field
client_id
andclient_secret
valuesPre-defined
scope
can also be included (optional)Pre-defined
resource
can also be included (optional)
Format (Token Request):
GET<endpoint>?grant_type=client_credentials&client_id=<id>&client_secret=<secret>&scope=<scope if
any>&resource=<resource if
any>
Format (Success Response):
{
"access_token": "<token>",
"expires_in": "<in how many seconds the token is expired, from the time it was requested>",
"token_type": "bearer"
}
Format (Failure Response):
{
"status_code": <error code>,
"errror": "<error>",
"error_description": "<error description>"
}
HireRight uses the OAuth token for the status push:
Authorization: Bearer <access token>
Order Identification
The Order ID is included in the status message and accordingly, the client can identify the order (Same as Form ID for I-9s).
In addition, if another identifier is required, it is possible to send this identifier as a FlexField in the Create Order (or Create I-9 Worksheet) operation and the FlexField can be configured to be included in the status message.
Acknowledgements
HireRight expects a negative or positive acknowledgment in response to the status push. Simply responding with a successful status code (200 level) will let the service know that the status push was received correctly, any other value will be tracked as a failure and will attempt a redelivery if configured.
Redelivery
Optionally, redelivery of the PUSHed status update can be enabled. Redelivery occurs on negative response status or low-level errors (bad HTTP connection, etc.).
Status Message: PULL Approach
The order's status can be accessed by using the Get Order Status operation. This returns the same status summary for the order associated with the given id as with the PUSH approach
When to pull the statuses is up to the client to decide. Below are some potential approaches:
Pull the order status when a specific page is opened, for example when the user opens the page where the statuses for the order are displayed
(This ensures that the status will always be current when the user checks)Manual pull, for example: when the user clicks on the "click here to update" button
(This option can only be used as a supplement to another option)
It is important to pull statuses only when necessary. There is no reason to pull statuses for orders that are completed and adjudicated, or canceled
Important: Please note this operation has a rate limit of 50 requests per minute. If the rate limit exceeds 50 requests per minute the request may be rejected by HireRight
Alternatively, the Get Order Status Updates operation can be used to return all accumulated order status updates since the previous request.
When to pull the statuses is up to the client to decide, but the most common approach with this operation is to pull every x time, for example every hour or every few hours
Note that once the statuses are pulled by the client, they are gone and cannot be pulled again
Available Statuses
Status Types
Background Checks and Drug Screening:
Order status:
Status should be displayed on the client-side
Best practice: Display as provided in the status message without applying any translation
Adjudication status:
This status is available when the order is completed if adjudication is configured for the client
(Note that if stage ordering is used, the status can be available also when the order is in progress but the current stage is completed and an adjudication decision is required)
Status should be displayed on the client-side
It is recommended to have two statuses on the client-side, one for the order status, and separate status for the adjudication status that is populated once an adjudication status is available
It is recommended to display "Not Available" next to the adjudication status in case adjudication status is not available in the API
Best practice: Display as provided in the status message without applying any translation
Product level statuses:
It is optional to display these statuses (or not) in the client system
Each product can also have an adjudication status. That is available once the order is completed and can be passed to the client system as well. This is if adjudication is configured for the client
Consumer Dispute Statuses:
Connect API provides the ability to include dispute status messages for an order in the event a dispute is initiated
The Connect API is capable of sending updates if a dispute is received and when all disputes are completed for each order
If dispute statuses are required in the status messages please contact HireRight requesting that this feature be configured on the integration
I-9 Product:
I-9 Status:
Status should be displayed on the client-side
Best practice: Display as Provided in the status message without applying any translation
E-Verify Status:
Status should be displayed on the client-side
Best practice: Display as Provided in the status message without applying any translation
Common Order Statuses
Sent to Applicant: Order was initiated and an invitation was sent to the applicant. Typical status for the 1-step applicant invite workflow.
Pending Applicant: Order was initiated and is pending for the applicant to complete the forms. This status is generated after the applicant accessed the background check forms. Typical status for the 1-step applicant invite workflow.
Pending Requestor: The order was initiated and is pending action from the requester. Typical status for the 2-step recruiter workflow.
InProgress: Order is in progress.
Completed: Order is completed.
Invite Expired: Applicant invitation has expired.
Cancelled: The applicant's invitation was canceled.
Canceled: Order was cancelled / stopped being processed.
Adjudication Statuses
Meets Company Standards: Final adjudication status.
Does Not Meet Company Standards: Final adjudication status.
Client Review Required: Pending adjudication status, the client's decision is required.
Pending - Potential Conflict: Pending adjudication status, the client's decision is required.
Canceled: Canceled adjudication status.
Custom status: Custom adjudication status, can be configured by the client.
Product Level Statuses
InProgress: Product is in progress.
Completed: Product is completed.
Consumer Dispute Statuses
Received: A dispute has been initiated on the order.
Completed: All disputes on the order are completed.
I-9 & E-Verify Statuses
For I-9 and E-Verify statuses, please see the following page: I-9 Management.
Update Adjudication Statuses
Overview
The client may need to make an adjudication decision for an order. There are a couple of ways to support this:
Providing access to the Enhanced Report
Adjudicate thought the API
Access the Enhanced Report
A common way to support making an adjudication decision is by using the Create Order Report Links operation specifying enhancedReport
as the type, which redirects to the Enhanced Report of the order.
The Enhanced Report provides the user an option to make an adjudication decision.
See Report Access for more info about this option.
Adjudicate through the API
There is also an option to update the adjudication status directly using the API. The sequence of this is as follows:
Display the relevant adjudication statuses to select from on the client system
Check-in status messages when an adjudication status is included (not empty)
Once included, use the Get Adjudication Statuses operation to retrieve the available adjudication statuses for the given order base on the order ID
Display those statuses for the user to select from
Once the user submits the selection, the selected adjudication status is updated on the HireRight side
Use the Update Adjudication Statuses operation with the relevant adjudication status in order to update the adjudication status for the given order base on the order ID
If the operation returns an error, it is recommended to display the error to the user
If the operation returns success, it is recommended to display a success message to the user
Note that updating the adjudication status is possible only if the user has permission to change the adjudication status
Assumption and restrictions:
ONLY adjudication 3.0 (and above) is supported
ONLY order adjudication is supported (and not product level adjudication)