Skip to main content

Query the Reporting Data API

This page lists the endpoints, query parameters, and every GraphQL query the OpenLM Reporting Data API exposes. Authentication is covered in Authenticate to the Reporting Data API. For the fields each query returns, see the field reference.

All requests require a valid Authorization: Bearer <token> header. The Reporting Data API is a GraphQL API. You read all data through a single endpoint.

Endpoints

EndpointMethodPurpose
{API_BASE_URL}/graphqlPOSTAll data queries (and the in-browser GraphQL explorer on GET).
{API_BASE_URL}/healthGETHealth check.

Field naming: the schema is camelCase (licenseUsage, pageInfo, totalCount, orderBy). The groupBy and orderBy argument values are raw column names in snake_case (for example, "feature_name").

Query parameters

The following table is a quick primer on the parameter types your developers use across these queries:

ParameterTypeWhat it does
firstInt(Cursor paging) How many records to retrieve from the start, for example first: 25.
afterString(Cursor paging) A cursor string from a previous response that retrieves the next page after it.
last / beforeInt / String(Cursor paging) Same idea but paging backwards from the end.
skipInt(Offset paging) How many records to skip before reading.
takeInt(Offset paging) How many records to read after skipping.
searchTermString(Filter lists) Optional text to narrow the dropdown values. Leave empty to get all distinct values.
limitInt(Widgets only) How many rows the widget returns. See notes per query.
where(filter object)Optional filter on any field of the result (autogenerated by the server).
order(sort object)Optional sort on any field of the result (autogenerated by the server).
note

The available queries depend on the deployment mode. Queries marked (On-premises only) exist only in the self-hosted version. Queries marked (Cloud only) exist only in the cloud version. Everything else is in both.

Main report queries

These return paged data. Use cursor-paging parameters: first, after, last, before. They also accept where (filter) and order (sort) on any field.

QueryParametersNotes
licenseUsagefirst, after, last, before, where, orderLicense usage records.
licenseDenialsfirst, after, last, before, where, orderLicense denial records.
sessionDetailsfirst, after, last, before, where, orderApplication/session records.
projectDatafirst, after, last, before, where, orderProject records.
devices (On-premises only)first, after, last, before, where, orderTenant-scoped device records.

How to use: Start with, for example, licenseUsage(first: 25). The response includes pageInfo.hasNextPage and an endCursor. Pass that cursor as after to get the next page: licenseUsage(first: 25, after: "<endCursor>"). totalCount gives the full record count.

Count queries

These return a single number and take no parameters.

QueryReturnsMeaning
licenseUsageActiveLicenseCountIntCount of currently active licenses.
licenseUsageHostRunningCountIntCount of hosts currently running.
licenseDenialsDenialCountInLast24HoursIntDenials in the last 24 hours.
licenseDenialsNewAlertsCountIn24HoursIntDistinct new denial alerts in the last 24 hours.

How to use: Call them directly, for example { licenseUsageActiveLicenseCount }.

Filter-value lookup queries

These return a paged list of distinct, sorted values for a single field, for building filter dropdowns. Every query takes an optional searchTerm plus the offset-paging parameters skip (Int) and take (Int). Each table lists the searchTerm type for that query.

License Usage

QuerysearchTerm
licenseUsageLicenseTypeFilterValuesString
licenseUsageVersionFilterValuesString
licenseUsageUserNameFilterValuesString
licenseUsageWorkstationFilterValuesString
licenseUsageVendorFilterValuesString
licenseUsageFeaturePackageFilterValuesString
licenseUsageFeatureProductFilterValuesString
licenseUsageFeaturePackageItemFilterValuesString
licenseUsageIsTokenBasedFilterValuesString

License Denials

QuerysearchTerm
licenseDenialsUserNameFilterValuesString
licenseDenialsWorkstationFilterValuesString
licenseDenialsMinorErrorFilterValuesString
licenseDenialsMajorErrorFilterValuesString
licenseDenialsErrorTextFilterValuesString
licenseDenialsFeatureNameFilterValuesString
licenseDenialsStatusFilterValuesString
licenseDenialsGroupIdFilterValuesString
licenseDenialsGroupNameFilterValuesString
licenseDenialsCategoryFilterValuesString
licenseDenialsVendorFilterValuesString
licenseDenialsFeatureVersionFilterValuesString
licenseDenialsLicenseTypeFilterValuesString
licenseDenialsAdditionalKeyFilterValuesString
licenseDenialsHostnameFilterValuesString
licenseDenialsLicenseServerFilterValuesString

Session Details

QuerysearchTerm
sessionDetailsUserFilterValuesString
sessionDetailsWorkstationFilterValuesString
sessionDetailsIdleTimeFilterValuesFloat
sessionDetailsSessionEndTimeHolidaysFilterValuesDateTime
sessionDetailsSessionEndTimeWeekdaysFilterValuesDateTime
sessionDetailsSessionFilterValuesFloat
sessionDetailsProcessFilterValuesString
sessionDetailsDependencyFilterValuesString
sessionDetailsCustomerFilterValuesString
sessionDetailsReasonFilterValuesString
sessionDetailsAgentStatusFilterValuesInt
sessionDetailsVersionFilterValuesString

Touchpoint Details

QuerysearchTerm
touchpointDetailsUsernameFilterValuesString
touchpointDetailsWorkstationFilterValuesString
touchpointDetailsEventDateTimeFilterValuesDateTime

Dongle Monitoring

QuerysearchTerm
dongleMonitoringDeviceNameFilterValuesString
dongleMonitoringDeviceDescriptionFilterValuesString
dongleMonitoringManufacturerFilterValuesString
dongleMonitoringUserNameFilterValuesString
dongleMonitoringHostNameFilterValuesString
dongleMonitoringBlacklistedFilterValuesString
dongleMonitoringAgentStatusFilterValuesInt

Project Data

QuerysearchTerm
projectDataProjectNameFilterValuesString
projectDataUserNameFilterValuesString
projectDataPriorityFilterValuesString
projectDataSourceFilterValuesString

Device filters (On-premises only)

QuerysearchTermNotes
deviceNameFilterValuesString
deviceManufacturersFilterValuesString
deviceHostNameFilterValuesStringAccepts an optional deviceId (String) to restrict results to a single device.
deviceUserNameFilterValuesStringAccepts an optional deviceId (String) to restrict results to a single device.

How to use: licenseUsageVendorFilterValues(searchTerm: "auto", take: 20) returns up to 20 distinct vendors containing "auto". Omit searchTerm to list all values.

Dashboard widget queries

These return a simple list (not paged). The key parameter is limit.

The limit parameter explained:

  • Top-N widgets: limit is clamped to 5 or 10 only. Any other value (or omitting it) defaults to 10. So limit: 5 returns 5 rows, and any other value returns 10 rows.
  • Full-list widgets (activeUsersReport, licenseServerStatus, hostAvailability): limit accepts 1 to 100. Out-of-range or omitted values default to 100 (a safety cap).
QueryParameterNotes (what it returns / ordering)
topDeniedFeatureslimit: Int (5/10)Most-denied features, highest first.
topDeniedUserslimit: Int (5/10)Users with the most denials, highest first.
topMostUsedFeatureslimit: Int (5/10)Most-used features, highest usage first.
topLeastUsedFeatureslimit: Int (5/10)Least-used features, lowest usage first.
topLongestSessionslimit: Int (5/10)Longest sessions, longest first.
topIdleSessionslimit: Int (5/10)Most idle sessions, highest idle time first.
topProductNameslimit: Int (5/10)Top products by usage.
topVendorNameslimit: Int (5/10)Top vendors by usage.
topMostActiveUserslimit: Int (5/10)Most-active users (only users with ≥1 session).
topLeastActiveUserslimit: Int (5/10)Least-active users (only users with ≥1 session).
activeUsersReportlimit: Int (1 to 100, default 100)Currently active sessions.
licenseServerStatuslimit: Int (1 to 100, default 100)License server status list.
hostAvailabilitylimit: Int (1 to 100, default 100)Host availability list.

How to use: topDeniedFeatures(limit: 5) returns the top 5. activeUsersReport(limit: 50) returns up to 50 active sessions.