Immersive Labs
Visualize Immersive Labs learners, teams, catalog labs, collections, and scheduled exercises (Cyber Range drills, crisis simulations, screening, and CTF events) in the JupiterOne graph, along with per-learner assignments and completions — including earned CPE credits. Track training completion and CPE credit as compliance evidence, identify learners who have not engaged with assigned training, correlate learners to employee identities, and monitor engagement across teams through queries and alerts.
- Installation
- Authorization
- Data Model
- Types
- Release Notes
Installation
Prerequisites
- An Immersive Labs organization (tenant) with an Organization Admin who can generate an API key.
- Your region-specific API base URL (for example
https://api.immersivelabs.onlineorhttps://api.us.immersivelabs.com). - Access to JupiterOne with permission to configure integrations.
Generate an API key in Immersive Labs
The integration authenticates with an API key issued as an Access Key / Secret Token pair.
- Sign in to the Immersive Labs platform as an Organization Admin.
- Go to Platform Settings → API.
- Select Generate API key.
- Copy the Access Key and the Secret Token. The Secret Token is shown only once, so store it securely — you will paste both values into JupiterOne in the next section.
The integration issues read-only requests and mints a least-privilege token
scoped to account:read team:read catalog:read assignment:read, all of which
are granted to every API key by default, so no additional scope provisioning is
required. See the Authorization tab for
details.
Configure the integration in JupiterOne
To install the Immersive Labs integration in JupiterOne, navigate to the Integrations tab and select Immersive Labs. Click New Instance to begin configuring your integration.
Creating an Immersive Labs instance requires the following:
- The Account Name used to identify the Immersive Labs account in
JupiterOne. Ingested entities will have this value stored in
tag.AccountNamewhen theAccountNametoggle is enabled. - Description to assist in identifying the integration instance, if desired.
- Polling Interval that you feel is sufficient for your monitoring needs.
You may leave this as
DISABLEDand manually execute the integration.
Authentication fields
| Field | Required | Description |
|---|---|---|
| API Base URL | Yes | Your region-specific Immersive Labs API endpoint (e.g. https://api.immersivelabs.online or https://api.us.immersivelabs.com). |
| Access Key | Yes | The Access Key from your Immersive Labs API key (used as the token username). |
| Secret Token | Yes | The Secret Token paired with the Access Key (used as the token password). |
Advanced — Activity Lookback Days
The completion and assignment steps fetch learner activity created within a lookback window, so each sync is bounded rather than pulling the full history.
| Field | Default | Options | Description |
|---|---|---|---|
| Activity Lookback Days | 90 | 14, 30, 90, 180, 365 | How far back (in days) to fetch completion and attempt activity on each sync. Increase it to capture older activity. |
Click Create once all values are provided to finalize the integration.
Next steps
Now that your integration instance has been configured, it will begin running on the polling interval you provided, populating data within JupiterOne. Continue on to our Instance management guide to learn more about working with and editing integration instances.
Authorization
The Immersive Labs integration authenticates with an API key, issued as an Access Key / Secret Token pair generated by an Organization Admin from the platform's API Settings page. See the Installation tab for step-by-step setup.
Authentication flow
The integration exchanges the Access Key and Secret Token for a short-lived bearer token, then uses that token for all subsequent requests:
POST {baseUrl}/v1/public/tokens— the Access Key (username) and Secret Token (password) are exchanged for anaccessTokenthat is valid for approximately 30 minutes. The token is re-minted automatically when it expires during a collection run.- All data requests send
Authorization: Bearer <accessToken>.
{baseUrl} is your region-specific API endpoint (for example
https://api.immersivelabs.online or https://api.us.immersivelabs.com).
Scopes
The integration is read-only and requests a least-privilege token scoped to the following read scopes, all of which are granted to every API key by default:
account:readteam:readcatalog:readassignment:read
Endpoints
The integration makes GET requests to the following Immersive Labs V2 REST
endpoints (plus the POST /v1/public/tokens exchange above):
/v2/accounts/v2/teams,/v2/teams/{id}/memberships,/v2/teams/{id}/subteams/v2/activities/v2/collections,/v2/collections/{id},/v2/collections/{id}/completions/v2/attempts/v2/assignments/v2/exercises,/v2/exercises/{id}/assignments,/v2/exercises/{id}/team_assignments
Entities
The following entities are created:
| Resources | Entity _type | Entity _class |
|---|---|---|
| Account | immersive_labs_account | Account |
| Collection | immersive_labs_collection | Training, Group |
| Exercise | immersive_labs_exercise | Assessment |
| Lab | immersive_labs_lab | Training |
| Team | immersive_labs_team | Team |
| User | immersive_labs_user | User |
Relationships
The following relationships are created:
Source Entity _type | Relationship _class | Target Entity _type |
|---|---|---|
immersive_labs_collection | CONTAINS | immersive_labs_lab |
immersive_labs_team | CONTAINS | immersive_labs_team |
immersive_labs_team | HAS | immersive_labs_user |
immersive_labs_team | ASSIGNED | immersive_labs_exercise |
immersive_labs_user | ASSIGNED | immersive_labs_lab |
immersive_labs_user | ASSIGNED | immersive_labs_collection |
immersive_labs_user | ASSIGNED | immersive_labs_exercise |
immersive_labs_user | COMPLETED | immersive_labs_lab |
immersive_labs_user | COMPLETED | immersive_labs_collection |
Mapped Relationships
The following mapped relationships are created:
Source Entity _type | Relationship _class | Target Entity _type | Direction |
|---|---|---|---|
immersive_labs_user | IS | Person | FORWARD |
Immersive Labs Account
immersive_labs_account inherits from Account
| Property | Type | Description | Specifications |
|---|---|---|---|
organizationId * | string | The Immersive Labs organisation (tenant) identifier returned with the API token. |
Immersive Labs Collection
immersive_labs_collection inherits from Training, Group
| Property | Type | Description | Specifications |
|---|---|---|---|
accountId * | string | The Immersive Labs organisation (tenant) id this collection belongs to (ADR-015 flat account reference). | |
categories * | array | null | The catalog categories the collection is classified under. | |
collectionType * | string | null | The Immersive Labs content type of the collection. | |
uuid * | string | The Immersive Labs UUID of the collection. |
Immersive Labs Exercise
immersive_labs_exercise inherits from Assessment
| Property | Type | Description | Specifications |
|---|---|---|---|
accountId * | string | The Immersive Labs organisation (tenant) id this exercise belongs to (ADR-015 flat account reference). | |
exerciseType * | string | null | The Immersive Labs exercise type (e.g. cyber range, crisis simulation, screening). | |
scheduledEndOn * | number | null | Epoch milliseconds at which the exercise is scheduled to end. | |
uuid * | string | The Immersive Labs UUID of the exercise. |
Immersive Labs Lab
immersive_labs_lab inherits from Training
| Property | Type | Description | Specifications |
|---|---|---|---|
accountId * | string | The Immersive Labs organisation (tenant) id this lab belongs to (ADR-015 flat account reference). | |
activityType * | string | null | The Immersive Labs content type of the activity (e.g. lab). | |
tags * | array | null | The tags applied to the lab in the Immersive Labs catalog. | |
uuid * | string | The Immersive Labs UUID of the lab/activity. |
Immersive Labs Team
immersive_labs_team inherits from Team
| Property | Type | Description | Specifications |
|---|---|---|---|
accountId * | string | The Immersive Labs organisation (tenant) id this team belongs to (ADR-015 flat account reference). | |
uuid * | string | The Immersive Labs UUID of the team. |
Immersive Labs User
immersive_labs_user inherits from User
| Property | Type | Description | Specifications |
|---|---|---|---|
accountId * | string | The Immersive Labs organisation (tenant) id this learner belongs to (ADR-015 flat account reference). | |
externalId * | string | null | The customer-supplied external identifier for the learner (e.g. SSO/HRIS id), used to correlate to employee identity. |