Certiverse Performance Based Test Integration
Certiverse Performance Based Test Integration
Overview
The Certiverse Generic Performance Based Testing (PBT) API provides Organizations and partners with an integration to support the delivery of third party PBT exams within the Certiverse delivery and proctoring platform. The Generic PBT API supports scheduling notifications, to support advance provisioning; availability verification at check-in; and the PBT launches within a Certiverse exam.
Version Information
Version: 1.5 (2025)
URI Scheme
Base Path: https://{domain}/api/v1
Scheme: HTTPS
Configuration Endpoints
GetTemplatesAsync
- Certiverse will call to retrieve a list of the available PBT's, which is used to select the PBT to be used when configuring an exam in the Certiverse platform
Endpoint
GET /templates
Headers
|
Key |
Value |
Description |
|
x-api-key |
string |
Authorization Key provided by the client |
QueryString Parameters
|
Key |
Value |
Description |
|
page |
|
Page Number |
|
perPage |
|
Number of templates to return per page |
Response Object
CreateTemplateWebhookAsync
- Called when Certiverse exam IsActive and has PBT setup
- Sets up handled webhooks for the specific PBT
- We currently only support a single webhook for when an assessment errors
Endpoint
POST /templates/webhooks
Headers
|
Key |
Value |
Description |
|
x-api-key |
string |
Authorization Key provided by the client |
Body Object
DeleteTemplateWebhookAsync
- Called when Exam becomes InActive or has no PBT setup
Endpoint
DELETE /templates/webhooks/{templateWebhookId}
Headers
|
Key |
Value |
Description |
|
x-api-key |
string |
Authorization Key provided by the client |
Assessment Reservation Endpoints
CreateAssessmentReservationAsync
- Creates the AssessmentReservation in PBT platform and returns an AssessmentReservation Unique Identifier
- The reservation information includes some candidate information and reservation details (IE: date-time and location) so the PBT can be prepared in advance in the region closest to the candidate
- Candidates are required to schedule PBT exams at least 24 hours in advance to ensure that environment is provisioned and ready at their scheduled time.
Endpoint
POST /assessment-reservations
Headers
|
Key |
Value |
Description |
|
x-api-key |
string |
Authorization Key provided by the client |
Body Object
Response Object
UpdateAssessmentReservationAsync
- Sometimes after a booking has occurred, extra time needs to be added
Endpoint
PATCH /assessment-reservations/{assessmentReservationId}
Headers
|
Key |
Value |
Description |
|
x-api-key |
string |
Authorization Key provided by the client |
Body Object
DeleteAssessmentReservationAsync
- Called when a reservation is cancelled
Endpoint
DELETE /assessment-reservations/{assessmentReservationId}
Headers
|
Key |
Value |
Description |
|
x-api-key |
string |
Authorization Key provided by the client |
Assessment Delivery Endpoints
GetAssessmentDeliverableAsync
- Called to get the Assessment Deliverable
Endpoint
GET /assessment-deliverables/{assessmentDeliverableId}
Additional Endpoint Options
- Called to get the Assessment Deliverable
- Called during provisioning, which occurs when a candidate starts the process at their scheduled date-time. Vendor does not have the AssessmentDeliverableId at this time, so needs to call with the AssessmentReservationId (returned when the AssessmentReservation is created) or the VendorReservationId (passed in when the AsssessmentReservation is created)
|
GET /assessment-deliverables/{assessmentReservationId}?isAssessmentReservationId=true |
|
GET /assessment-deliverables/{vendorReservationId}?isVendorReservationId=true |
Headers
|
Key |
Value |
Description |
|
x-api-key |
string |
Authorization Key provided by the client |
Response Object
StartAssessmentDeliverableAsync
Endpoint
POST /assessment-deliverables/{assessmentDeliverableId}/start
Headers
|
Key |
Value |
Description |
|
x-api-key |
string |
Authorization Key provided by the client |
StopAssessmentDeliverableAsync
- Occurs when the exam is completed in Certiverse test driver
- Since PBT could have already completed the assessment internally, Certiverse will check to see if the assessment is still in progress. If so, Certiverse will call Stop on the assessment. Otherwise, Certiverse will not do anything
Endpoint
POST /assessment-deliverables/{assessmentDeliverableId}/stop
Headers
|
Key |
Value |
Description |
|
x-api-key |
string |
Authorization Key provided by the client |
PauseAssessmentDeliverableAsync
Endpoint
POST /assessment-deliverables/{assessmentDeliverableId}/pause
Headers
|
Key |
Value |
Description |
|
x-api-key |
string |
Authorization Key provided by the client |
ResumeAssessmentDeliverableAsync
Endpoint
POST /assessment-deliverables/{assessmentDeliverableId}/resume
Headers
|
Key |
Value |
Description |
|
x-api-key |
string |
Authorization Key provided by the client |
Commands
CreateTemplateWebhook
|
Name |
Description |
Schema |
|
templateId required |
Unique Identifier of the Template |
Unique Identifier |
|
errorEmail required |
Exceptions during the webhook being processed will be sent to this address |
String |
|
headers |
|
Array of Name/Value pairs |
|
method required |
HTTP method |
String |
|
url required |
|
String |
|
queryString |
The query string of the URL |
String |
|
onStatusChange required |
Possible values can be any of the different statuses that are used. Currently we only use: errored |
String |
CreateAssessmentReservation
|
Name |
Description |
Schema |
|
templateId required |
|
Unique Identifier |
|
additionalTimeInMins |
|
Int |
|
language |
Default to en if null Language Code (Example: zh-Hans) |
String |
|
startDateUtc required |
|
DateTime |
|
address |
|
|
|
vendorEligibilityId |
|
String |
|
vendorReservationId |
|
String |
|
userInfo required |
|
|
|
metaData |
Example: { “randomProperty”: randomPropertyValue } |
Key/Value Object |
CreateAssessmentReservationAddress
|
Name |
Description |
Schema |
|
addressLine1 |
|
String |
|
addressLine2 |
|
String |
|
city |
|
String |
|
state |
|
String |
|
postalCode |
|
String |
|
countryCode |
2 Character ISO Code |
String |
|
timeZone |
Iana Time Zone |
String |
CreateAssessmentReservationUser
|
Name |
Description |
Schema |
|
email required |
|
String |
|
firstName |
|
String |
|
lastName |
|
String |
PatchAssessmentReservation
|
Name |
Description |
Schema |
|
additionalTimeInMins |
|
Int |
Responses
TemplateResults
|
Name |
Description |
Schema |
|
templates |
Array of all the templates. If there are no templates, still send back as 200 but with an empty array |
|
|
pageData |
Metadata object holding the page information |
TemplateResult
|
Name |
Description |
Schema |
|
id |
|
Unique Identifier |
|
displayName |
|
string |
|
isActive |
|
Bool |
TemplateWebhooks
|
Name |
Description |
Schema |
|
templateWebhooks |
Array of all the template webhooks. If there are no webhooks, still send back as 200 but with an empty array. |
TemplateWebhook
|
Name |
Description |
Schema |
|
id |
|
Unique Identifier |
|
method |
HTTP method of the call |
String |
|
url |
URL to the webhook endpoint |
String |
|
onStatusChange |
When the Assessment Status changes to a certain value, the webhook is fired |
String |
|
headers |
|
Array of Name/Value pairs |
AssessmentReservation
|
Name |
Description |
Schema |
|
id |
|
Unique Identifier |
|
templateId |
|
Unique Identifier |
|
additionalTimeInMins |
|
Int<Nullable> |
|
language |
Default to en if null Language Code (Example: zh-Hans) |
String |
|
startDateUtc |
|
DateTime |
|
address |
|
|
|
vendorEligibilityId |
|
String |
|
vendorReservationId |
|
String |
|
userInfo |
|
|
|
metaData |
Example: { “randomProperty”: randomPropertyValue } |
Key/Value Object |
AssessmentReservationUser
|
Name |
Description |
Schema |
|
|
|
String |
|
firstName |
|
String |
|
lastName |
|
String |
AssessmentDeliverable
|
Name |
Description |
Schema |
|
id |
|
Unique Identifier |
|
consoleUrl |
|
String |
|
guacamoleUrl |
|
String |
|
status |
|
String |
|
canStart |
|
Boolean |
|
startedDateUtc |
|
DateTime<Nullable> |
|
endedDateUtc |
|
DateTime<Nullable> |
Page Data
|
Name |
Description |
Schema |
|
currentPage |
|
Int |
|
nextPage |
|
Int |
|
prevPage |
|
Int |
|
totalPages |
|
Int |
|
totalPageCount |
|
Int |
Callbacks
TemplateWebhookCallback
|
Name |
Description |
Schema |
|
hasErrored |
|
Boolean |
|
assessmentReservation |
AssessmentReservation response |
|
|
assessmentDeliverable |
AssessmentDeliverable response |
|
Contact Us
If you have any questions or need additional assistance, please contact us by either emailing support@certiverse.com or by submitting a ticket from this article.