Kandji
Visualize Iru (formerly Kandji) devices and apps, and monitor changes through queries and alerts.
- Installation
- Authorization
- Data Model
- Types
- Release Notes
Installation
JupiterOne requires an API access token and the organization API URL for this integration. You need admin access to Iru (formerly Kandji) to generate an API token.
Configuration in Iru
-
Log in to your Iru tenant. Existing Kandji tenants use
https://{subdomain}.kandji.io/; new Iru tenants use their assigned Iru URL. -
Go to Settings, then click the Access tab.
-
Click Add API Token.
-
Enter a Name for the token (required). A description is optional.
-
Click Create. Copy the API token shown and store it securely — you will not be able to view it again.
-
Click Next, then click Configure to assign endpoint permissions to the token.
-
Enable the following permissions:
Permission Endpoint Device list GET /api/v1/devicesDevice details GET /api/v1/devices/{device_id}/detailsApplication list GET /api/v1/devices/{device_id}/appsList custom profiles GET /api/v1/library/custom-profilesList blueprints GET /api/v1/blueprintsVulnerability management — vulnerabilities GET /api/v1/vulnerability-management/vulnerabilitiesVulnerability management — detections GET /api/v1/vulnerability-management/detectionsThreat details GET /api/v1/threat-details -
Click Save.
-
Your tenant-specific API URL is shown on the API tokens page. Copy it for use in JupiterOne.
Data Volume Configuration
Control how much data is ingested from Iru to manage storage and processing.
Ingestion Windows
| Field | Description | Default | Options |
|---|---|---|---|
| Threat Ingest Since Days | How many days back to look when ingesting threat data. Increasing this value ingests more threats. | 90 | 90, 180, 275, 365 |
Data Filtering Options
| Field | Description | Default |
|---|---|---|
| Threat Status | Filters threat ingestion to the selected quarantine status. When unset, all statuses are ingested. | All statuses |
Available options for Threat Status:
- Quarantined — Only ingest threats that are quarantined.
- Not Quarantined — Only ingest threats that are not quarantined.
- Released — Only ingest threats that have been released from quarantine.
Configuration in JupiterOne
To install the integration in JupiterOne, navigate to the Integrations tab, select Kandji, and click New Instance. Provide the following:
-
Account Name — A label to identify this account in JupiterOne. Ingested entities store this value in
tag.AccountName. -
Description — Optional. Helps distinguish multiple integration instances.
-
Polling Interval — How often JupiterOne collects data from Iru. Set to
DISABLEDto run manually. -
Kandji API Url — The organization API URL from your Iru tenant, in the format
https://{yourApiUrl}/api/v1/. Includehttps://at the start and/api/v1/at the end. -
Kandji Access Token — The API token generated in the steps above.
Click Create 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.
Permissions
IAM permissions that must be granted to the integration principal for data ingestion.
Show Permissions (8)
Device applicationsDevice detailsDevice listList blueprintsList custom profilesThreat detailsVulnerability management - detectionsVulnerability management - vulnerabilities
Endpoints
API endpoints that the integration makes requests to.
Show Endpoints (8)
GET {apiUrl}/blueprintsGET {apiUrl}/devicesGET {apiUrl}/devices/{device_id}/appsGET {apiUrl}/devices/{device_id}/detailsGET {apiUrl}/library/custom-profilesGET {apiUrl}/threat-detailsGET {apiUrl}/vulnerability-management/detectionsGET {apiUrl}/vulnerability-management/vulnerabilities
Documentation Links
Links to provider documentation relevant to setup and configuration.
Show Documentation Links (2)
Per-Step Breakdown
Detailed authorization requirements for each ingestion step.
Show all steps (6)
| Step | Permissions | Endpoints |
|---|---|---|
| Build Device Blueprint Relationships | - | - |
| Build Device Profile Relationships | - | - |
| Build Vulnerability Relationships | Vulnerability management - detections | GET {apiUrl}/vulnerability-management/detections |
| Fetch Device Apps | Device applications | GET {apiUrl}/devices/{device_id}/apps |
| Fetch Device Users | - | - |
| Fetch File Threats | Threat details | GET {apiUrl}/threat-details |
Entities
The following entities are created:
| Resources | Entity _type | Entity _class |
|---|---|---|
| Account | kandji_account | Account |
| App | kandji_app | Application |
| Blueprint | kandji_blueprint | Configuration |
| Custom_Profile | kandji_profile | Configuration |
| Device | kandji_device | Device |
| File Threat | kandji_file_threat | Record |
| User | kandji_user | User |
| Vulnerability | kandji_vulnerability | Vulnerability, Finding |
| Vulnerability | kandji_vulnerability | Finding |
Relationships
The following relationships are created:
Source Entity _type | Relationship _class | Target Entity _type |
|---|---|---|
kandji_account | HAS | kandji_device |
kandji_app | HAS | kandji_vulnerability |
kandji_device | INSTALLED | kandji_app |
kandji_device | HAS | kandji_vulnerability |
kandji_device | HAS | kandji_file_threat |
kandji_device | ASSIGNED | kandji_blueprint |
kandji_device | ASSIGNED | kandji_profile |
kandji_user | OWNS | kandji_device |
Kandji Account
kandji_account inherits from Account
| Property | Type | Description | Specifications |
|---|---|---|---|
name * | string |
Kandji App
kandji_app inherits from Application
| Property | Type | Description | Specifications |
|---|---|---|---|
appStoreVendable | string | ||
bundleId * | string | ||
deviceBasedVpp | string | ||
process | string | ||
source | string |
Kandji Blueprint
kandji_blueprint inherits from Configuration
| Property | Type | Description | Specifications |
|---|---|---|---|
computersCount * | string | ||
description * | string | ||
enrollmentCodeActive * | boolean | ||
id * | string | ||
name * | string |
Kandji Device
kandji_device inherits from Device
| Property | Type | Description | Specifications |
|---|---|---|---|
activationLock.activationLockAllowedWhileSupervised | boolean | null | ||
activationLock.activationLockSupported | boolean | ||
activationLock.bypassCodeFailed | boolean | ||
activationLock.deviceActivationLockEnabled | boolean | ||
activationLock.userActivationLockEnabled | boolean | ||
agentInstalled | boolean | ||
agentVersion | string | ||
blueprintId | string | ||
blueprintName | string | ||
filevault.filevaultEnabled | boolean | ||
filevault.filevaultNextRotation | string | ||
filevault.filevaultPrkEscrowed | boolean | ||
filevault.filevaultRecoverykeyType | string | ||
filevault.filevaultRegenRequired | boolean | ||
firstEnrollmentOn | number | ||
general.assignedUserEmail | string | ||
general.assignedUserId | number | ||
general.assignedUserIsArchived | boolean | ||
general.assignedUserName | string | ||
general.blueprintName | string | ||
general.blueprintUuid | string | ||
general.bootVolume | string | ||
general.lastUser | string | ||
general.systemVersion | string | ||
general.timeSinceBoot | string | ||
hardwareOverview.memory | string | ||
hardwareOverview.modelIdentifier | string | ||
hardwareOverview.modelName | string | ||
hardwareOverview.numberOfProcessors | string | ||
hardwareOverview.processorName | string | ||
hardwareOverview.processorSpeed | string | ||
hardwareOverview.totalNumberOfCores | string | ||
installedProfiles | array of strings | ||
isMissing | boolean | ||
isRemoved | boolean | ||
kandjiAgent.agentInstalled | string | ||
kandjiAgent.agentVersion | string | ||
kandjiAgent.installDate | string | ||
kandjiAgent.lastCheckIn | string | ||
lastCheckinOn | number | null | ||
lastEnrollmentOn | number | ||
macAddress | string | ||
mdm.installDate | string | ||
mdm.lastCheckIn | string | ||
mdm.mdmEnabled | string | ||
mdm.mdmEnabledUser | array of strings | ||
mdmEnabled | boolean | ||
network.ipAddress | string | ||
network.localHostname | string | ||
network.macAddress | string | This property is deprecated and will be removed in future versions. Please use the macAddress property instead. | |
network.publicIp | string | ||
platform | string | ||
serialNumber | string | null | ||
user.email | string | null | ||
user.id | number | null | ||
user.isArchived | boolean | null | ||
user.name | string | null | ||
users.regularUsers | array of strings | ||
users.systemUsers | array of strings | ||
volumes | array of strings |
Kandji File Threat
kandji_file_threat inherits from Record
| Property | Type | Description | Specifications |
|---|---|---|---|
classification | string | ||
fileHash | string | ||
filePath | string | ||
status | string |
Kandji Profile
kandji_profile inherits from Configuration
| Property | Type | Description | Specifications |
|---|---|---|---|
active | boolean | ||
mdmIdentifier | string |
Kandji User
kandji_user inherits from User
| Property | Type | Description | Specifications |
|---|---|---|---|
isArchived | boolean |
Kandji Vulnerability
kandji_vulnerability inherits from Vulnerability, Finding
| Property | Type | Description | Specifications |
|---|---|---|---|
cveDescription | string | ||
cveLink | string | ||
cvePublishedOn | number | ||
cveUpdatedOn | number | ||
cvssScore | number | ||
cvssSeverity | string | ||
devicesImpacted | number | ||
firstDetectedOn | number | ||
lastDetectedOn | number |
Kandji Vulnerability
kandji_vulnerability inherits from Finding
| Property | Type | Description | Specifications |
|---|---|---|---|
cveDescription | string | ||
cveLink | string | ||
cvePublishedOn | number | ||
cveUpdatedOn | number | ||
cvssScore | number | ||
cvssSeverity | string | ||
devicesImpacted | number | ||
firstDetectedOn | number | ||
lastDetectedOn | number |
Release Notes
- 2026-04-08 — Improved OS name accuracy for Kandji device entities, using human-readable names for macOS and iOS devices.
- 2025-06-04 — Added CVE ID to Kandji vulnerability entities and enabled the Vulnerability entity class for unified vulnerability querying.
- 2025-04-28 — Added Kandji vulnerability and file threat ingestion, exposing device vulnerabilities and detected file threats as new entity types.