Who can use this feature?
👤 Organizations Owners and Admins.
🚩 Only available on the Enterprise Plan.
Overview
AborXR's Analytics API, which enables integration with business intelligence tools, is offered on a Postgres-compatible protocol through our hosted Cube instance.
It can be connected to any BI tool that supports a Postgres connection, including but not limited to: Tableau Cloud, Power BI, Metabase, Deepnote, and Hex.
It does support “Joins” but they are very selective and are through a specific Cube functionality.
Connections are scoped to a specific User in a specific Organization. If that User is an Owner of the Organization it also has access to any child Organizations.
Only select fields and tables are available. If there are any additions requested, please reach out to [email protected].
Postgres Connection Information
Hostname: analytics-pgsql.xrdm.app
Database: arborxr
Port: 80
Username: API Token
Password: Organization ID
API Token:
Navigate to organization Settings, select Access Token in the top right, then click Create Access Token.
Enter a title, check the Public API checkbox, then click Create.
Copy the token value before closing.
Organization ID
The organization ID is the first string of characters in the URL of the ArborXR web portal.
Models
Organizations
The entity that represents an organization itself. For most this will only return one entry. If you have parent/child organizations set up you’ll see both parent and all child organizations.
SELECT "slug", "title" FROM "Organizations"
Column | Description |
id | The ID of the organization |
title | The title of the organization |
slug | The slug value for the organization |
Devices
The entity that represents a device. It has soft deleted entries so make sure to filter by where deletedAt is null to get up to date information.
SELECT "serialNumber", "organizationId" FROM "Devices" WHERE "deletedAt" IS NULL
Column | Description |
id | The ID of the device |
serialNumber | The device’s serial number |
title | The title set in ArborXR for the device |
state | ACTIVE, INACTIVE, NULL |
deviceModelName | A string that is the device model IE Meta Quest 2 |
organizationId | The organization this device is in |
deviceGroupId | The device group this device is in |
deletedAt | Soft delete timestamp |
lastCommunicatedAt | Timestamp of the last time this device communicated with ArborXR |
launcherVersion | The version of the ArborXR Home app that is installed |
clientVersion | The version of the ArborXR Client app that is installed |
androidVersion | The version of Android running on the device. IE 10 or 12 |
firmwareVersion | The firmware version installed. Usually the same as the OS. |
operatingSystemVersion | The OS version installed. Usually the same as the firmware.
|
OrganizationContents
The entity that is an application in a customer’s account.
OrganizationContent vs. Content
We have two different very similarly named models in our backend: Content and OrganizationContent.
When you upload an application to our backend, it creates a Content entry. This is what is related to builds that are uploaded.
Then there is OrganizationContent which is related to a Content entry.
OrganizationContent are what is assigned to a Device, in the form of a DeviceOrganizationContent.
If a Content is shared to a child or external Organization, it keeps the same Content ID, but gets a new Organization ID.
SELECT "title", "organizationId" FROM "OrganizationContents" WHERE "deletedAt" IS NULL
Column | Description |
id | The ID of the organization content |
title | The title of the application set in the portal |
description | The description of the application set in the portal |
organizationId | The ID of the organization its added to |
contentId | The parent “content” for this entry in an application. See the note above on content vs. organization content. |
deviceModelIds | The device models that the application supports |
DeviceOrganizationContents
An application that is added to a Device. This entry gets updated with the install status and other information relating to an application on a device.
SELECT "deviceId", "organizationContentId" FROM "DeviceOrganizationContents"
Column | Description |
id | The ID of the device organization content |
installStatus | ENUM that defines if the app is installed or pending |
userVersion | The user defined version of the Android application installed |
versionCode | The incremental int version code of the Android application installed |
packageName | The package name of the Android application installed |
deviceId | The ID of the device this is assigned to |
organizationContentId | The ID of the content that is added to the device |
progress | Nullable Int
If an install is in progress, the progress its at
|
DeviceSessions
Explain how to compare createdAt vs startedAt/endedAt
Column | Description |
activeDuration | The session duration minus idle duration |
uncommunicativeDuration |
|
idleDuration | The app is still running and the device is powered on, but the screen of the device is off and the device is not being interacted with. |
totalDuration |
|
averageDuration | The total active duration of an app divided by total app sessions |
maxDuration | The longest single session of active duration |
managedContent |
|
organizationId | The organization ID for this session |
contentTitle | The title of the application |
packageName | The android package name of the application |
organizationContentId | The organization Content ID |
organizationTitle | The organization's title |
activityName | The android package activity name that is running |
versionCode | The incremental int version code of the Android application installed |
contentId | The content ID of the application |
endedReason |
|
versionName | The version name for the application that is running |
deviceId | The ID of the Device for the session |
deviceOrganizationContentId | The ID of the device organization content for what's running |
deviceTitle | The device’s title |
deviceGroupId | The device group ID |
deviceGroupTitle | The device group title |
serialNumber | The device’s serial number |
createdAt | When the session was created on the server |
updatedAt | When the session was updated on the server |
endedAt | When the session ended on the device |
startedAt | When the session started on the device |