Reporting Data API のクエリ
OpenLM Platform のレポートデータを読み取るには、このページのエンドポイントに GraphQL クエリまたは CSV エクスポートのリクエストを送信します。このページでは、OpenLM Reporting Data API が公開するエンドポイント、クエリパラメーター、およびすべての GraphQL クエリを一覧します。認証については Reporting Data API への認証を参照してください。各クエリが返すフィールドについてはReporting Data API フィールドリファレンスを参照してください。
すべてのリクエストには、有効な Authorization: Bearer <token> ヘッダーが必要です。Reporting Data API は GraphQL API です。すべてのデータは単一の GraphQL エンドポイントから読み取ります。加えて、CSV エクスポート用の REST エンドポイントがあります。
エンドポイント
次の表に、エンドポイントを示します。
| エンドポイント | メソッド | 用途 |
|---|---|---|
{API_BASE_URL}/graphql | POST | すべてのデータクエリ(GET ではブラウザー内 GraphQL エクスプローラー)。 |
{API_BASE_URL}/api/reporting/{report} | POST | 6 つのメインレポートの CSV エクスポート。 |
{API_BASE_URL}/health | GET | ヘルスチェック。 |
スキーマの名前は camelCase です(licenseUsage、pageInfo、totalCount、orderBy)。レポートのノードフィールドは snake_case(user_name)ですが、devices クエリのフィールドのみ camelCase(deviceName)です。groupBy および orderBy の引数値は snake_case の生の列名です(例: "feature_name")。
レポート期間
レポートクエリは、各レポートのイベント時刻列に適用される直近 90 日間のローリング期間を対象とします。
- 日付でフィルターしない場合、直近 90 日間のデータを取得します。
- リクエストする日付範囲は 90 日以内である必要があります。それより広い範囲は、GraphQL エラーコード
DATE_RANGE_TOO_WIDEで拒否されます。 - フィルター値ルックアップクエリも直近 90 日間を対象とするため、対応するレポートと整合します。
projectData、procuredItems、inventoryItems、licenseServerStatus、およびダッシュボードウィジェットクエリは 90 日間に制限されません。常に現在のデータを返します。
期間が適用される列は、レポートごとに次のとおりです。
| レポート | イベント時刻列 |
|---|---|
licenseUsage | start_time_utc |
licenseDenials | denial_date |
sessionDetails | session_start_time |
touchpointDetails | event_date_time |
dongleMonitoring, devices | device_connected_date_time |
utilizationByFeature, utilizationByVendor | start_date_utc |
日付の境界は、where 引数の中に(utilization クエリでは startDate/endDate に)リテラル値として記述してください。GraphQL 変数として渡された日付の境界は検証できず、その場合 API はエラーを返す代わりに、フィルターに加えてデフォルトの直近 90 日間の期間を適用します。
クエリパラメーター
次のパラメーターは、このページのクエリに適用されます。
| パラメーター | 型 | 説明 |
|---|---|---|
first | Int | (カーソルページング)先頭から取得するレコード数。例: first: 25。 |
after | String | (カーソルページング)前回のレスポンスのカーソル文字列。その後の次ページを取得します。 |
last / before | Int / String | (カーソルページング)考え方は同じですが、末尾から逆方向にページングします。 |
skip | Int | (オフセットページング)読み取り前にスキップするレコード数。 |
take | Int | (オフセットページング)スキップ後に読み取るレコード数。 |
searchTerm | String | (フィルターリスト)ドロップダウンリストの値を絞り込む任意のテキスト。空にするとすべての一意な値を取得します。 |
limit | Int | (ウィジェット専用)ウィジェットが返す行数。各クエリの注記を参照してください。 |
where | (フィルターオブジェクト) | 結果の任意のフィールドに対する任意のフィルター(サーバーが自動生成)。 |
order | (ソートオブジェクト) | 結果の任意のフィールドに対する任意のソート(サーバーが自動生成)。 |
利用可能なクエリはデプロイメントモードによって異なります。(オンプレミスのみ)と記載されたクエリはオンプレミスのデプロイメントにのみ存在します。(クラウドのみ)と記載されたクエリは OpenLM Platform にのみ存在します。それ以外はすべて両方に存在します。
メインレポートクエリ
これらはページングされたデータを返します。カーソルページングのパラメーター first、after、last、before を使用します。また、任意のフィールドに対する where(フィルター)と order(ソート)も受け付けます。1 ページで返されるレコードは最大 250 件です。次の表に、メインレポートクエリを示します。
| クエリ | パラメーター | 説明 |
|---|---|---|
licenseUsage | first, after, last, before, where, order | ライセンス使用レコード。 |
licenseDenials | first, after, last, before, where, order | ライセンス拒否レコード。 |
sessionDetails | first, after, last, before, where, order | アプリケーション/セッションレコード。 |
projectData | first, after, last, before, where, order | プロジェクトレコード。 |
touchpointDetails | first, after, last, before, where, order | タッチポイント(Web アクティビティ)レコード。 |
dongleMonitoring | first, after, last, before, where, order | ドングル/デバイス監視レコード。 |
devices | first, after, last, before, where, order | デバイスレコード。フィールド名は他のレポートと異なり camelCase です。 |
utilizationByFeature(クラウドのみ) | featureName: String, startDate: DateTime, endDate: DateTime とページング, where, order | 同時使用ライセンスの利用状況。3 つの引数はすべて任意です。featureName は結果を 1 つの機能に限定し、startDate/endDate は期間を限定します。 |
utilizationByVendor(クラウドのみ) | vendor: String, startDate: DateTime, endDate: DateTime とページング, where, order | 同じ利用状況データを 1 つのベンダーに限定したもの。 |
procuredItems(クラウドのみ) | first, after, last, before, where, order | 購入済みライセンス。割り当て数と利用可能数を含みます。 |
inventoryItems(クラウドのみ) | first, after, last, before, where, order | ライセンスインベントリの詳細。 |
例えば licenseUsage(first: 25) をリクエストします。レスポンスには pageInfo.hasNextPage と endCursor が含まれます。そのカーソルを after として渡すと次のページを取得できます: licenseUsage(first: 25, after: "<endCursor>")。totalCount は全レコード数を返します。
カウントクエリ(クラウドのみ)
これらのクエリは単一の数値を返し、パラメーターを取りません。次の表に、それらを示します。
| クエリ | 戻り値 | 意味 |
|---|---|---|
licenseUsageActiveLicenseCount | Int | アクティブなライセンスの数。 |
licenseUsageHostRunningCount | Int | 実行中のホストの数。 |
licenseDenialsDenialCountInLast24Hours | Int | 過去 24 時間の拒否数。 |
licenseDenialsNewAlertsCountIn24Hours | Int | 過去 24 時間における一意な新規拒否アラート数。 |
カウントクエリを使用するには、例えば { licenseUsageActiveLicenseCount } のように直接呼び出します。
フィルター値ルックアップクエリ
これらは、1 つのフィールドについて重複のないソート済みの値をページング形式で返し、フィルターのドロップダウンリストを構築するのに使用します。いずれも任意の searchTerm と、オフセットページングのパラメーター skip(Int)、take(Int)を取ります。次の各表に、そのクエリの searchTerm の型を記載しています。
次の表に、License Usage のクエリを示します。
| クエリ | searchTerm |
|---|---|
licenseUsageLicenseTypeFilterValues | String |
licenseUsageVersionFilterValues | String |
licenseUsageUserNameFilterValues | String |
licenseUsageWorkstationFilterValues | String |
licenseUsageVendorFilterValues | String |
licenseUsageFeaturePackageFilterValues | String |
licenseUsageFeatureProductFilterValues | String |
licenseUsageFeaturePackageItemFilterValues | String |
licenseUsageIsTokenBasedFilterValues | String |
次の表に、License Denials のクエリを示します。
| クエリ | searchTerm |
|---|---|
licenseDenialsUserNameFilterValues | String |
licenseDenialsWorkstationFilterValues | String |
licenseDenialsMinorErrorFilterValues | String |
licenseDenialsMajorErrorFilterValues | String |
licenseDenialsErrorTextFilterValues | String |
licenseDenialsFeatureNameFilterValues | String |
licenseDenialsStatusFilterValues | String |
licenseDenialsGroupIdFilterValues(クラウドのみ) | String |
licenseDenialsGroupNameFilterValues(クラウドのみ) | String |
licenseDenialsCategoryFilterValues | String |
licenseDenialsVendorFilterValues | String |
licenseDenialsFeatureVersionFilterValues(クラウドのみ) | String |
licenseDenialsLicenseTypeFilterValues | String |
licenseDenialsAdditionalKeyFilterValues | String |
licenseDenialsHostnameFilterValues | String |
licenseDenialsLicenseServerFilterValues(クラウドのみ) | String |
次の表に、Session Details のクエリを示します。
| クエリ | searchTerm |
|---|---|
sessionDetailsUserFilterValues | String |
sessionDetailsWorkstationFilterValues | String |
sessionDetailsIdleTimeFilterValues | Float |
sessionDetailsSessionEndTimeHolidaysFilterValues | DateTime |
sessionDetailsSessionEndTimeWeekdaysFilterValues | DateTime |
sessionDetailsSessionFilterValues | Float |
sessionDetailsProcessFilterValues | String |
sessionDetailsDependencyFilterValues | String |
sessionDetailsCustomerFilterValues | String |
sessionDetailsReasonFilterValues | String |
sessionDetailsAgentStatusFilterValues | Int |
sessionDetailsVersionFilterValues | String |
次の表に、Touchpoint Details のクエリを示します。
| クエリ | searchTerm |
|---|---|
touchpointDetailsUsernameFilterValues | String |
touchpointDetailsWorkstationFilterValues | String |
touchpointDetailsEventDateTimeFilterValues | DateTime |
次の表に、Dongle Monitoring のクエリを示します。
| クエリ | searchTerm |
|---|---|
dongleMonitoringDeviceNameFilterValues | String |
dongleMonitoringDeviceDescriptionFilterValues | String |
dongleMonitoringManufacturerFilterValues | String |
dongleMonitoringUserNameFilterValues | String |
dongleMonitoringHostNameFilterValues | String |
dongleMonitoringBlacklistedFilterValues | String |
dongleMonitoringAgentStatusFilterValues | Int |
次の表に、Project Data のクエリを示します。
| クエリ | searchTerm |
|---|---|
projectDataProjectNameFilterValues | String |
projectDataUserNameFilterValues | String |
projectDataPriorityFilterValues | String |
projectDataSourceFilterValues | String |
projectDataGroupNameFilterValues(オンプレミスのみ) | String |
次の表に、デバイスフィルターのクエリを示します。
| クエリ | searchTerm | 注記 |
|---|---|---|
deviceNameFilterValues | String | なし |
deviceManufacturersFilterValues | String | なし |
deviceHostNameFilterValues | String | 結果を 1 つのデバイスに限定する任意の deviceId(String)を受け付けます。 |
deviceUserNameFilterValues | String | 結果を 1 つのデバイスに限定する任意の deviceId(String)を受け付けます。 |
例えば、licenseUsageVendorFilterValues(searchTerm: "auto", take: 20) は "auto" を含む一意なベンダーを最大 20 件返します。すべての値を一覧するには searchTerm を省略します。
ダッシュボードウィジェットクエリ(クラウドのみ)
これらは(ページングされていない)単純なリストを返します。主要なパラメーターは limit です。
limit パラメーターは次のように動作します。
- Top-N ウィジェット:
limitは 5 または 10 のみを受け付けます。それ以外の値(または省略時)は 10 になります。つまりlimit: 5は 5 行を返し、それ以外の値は 10 行を返します。 - 全リストウィジェット(
activeUsersReport、licenseServerStatus、hostAvailability):limitは 1〜100 を受け付けます。範囲外または省略時は安全上限として 100 になります。
次の表に、ウィジェットクエリを示します。
| クエリ | パラメーター | 説明(戻り値/並び順) |
|---|---|---|
topDeniedFeatures | limit: Int(5/10) | 拒否が最も多い機能。多い順。 |
topDeniedUsers | limit: Int(5/10) | 拒否が最も多いユーザー。多い順。 |
topMostUsedFeatures | limit: Int(5/10) | 最も使用された機能。使用量が多い順。 |
topLeastUsedFeatures | limit: Int(5/10) | 最も使用されていない機能。使用量が少ない順。 |
topLongestSessions | limit: Int(5/10) | 最も長いセッション。長い順。 |
topIdleSessions | limit: Int(5/10) | 最もアイドル時間が長いセッション。アイドル時間が長い順。 |
topProductNames | limit: Int(5/10) | 使用量上位の製品。 |
topVendorNames | limit: Int(5/10) | 使用量上位のベンダー。 |
topMostActiveUsers | limit: Int(5/10) | 最もアクティブなユーザー(少なくとも 1 セッションのあるユーザーのみ)。 |
topLeastActiveUsers | limit: Int(5/10) | 最もアクティブでないユーザー(少なくとも 1 セッションのあるユーザーのみ)。 |
activeUsersReport | limit: Int(1〜100、デフォルト 100) | アクティブなセッション。 |
licenseServerStatus | limit: Int(1〜100、デフォルト 100) | ライセンスサーバーのステータス一覧。 |
hostAvailability | limit: Int(1〜100、デフォルト 100) | ホストの可用性一覧。 |
例えば、topDeniedFeatures(limit: 5) は上位 5 件を返します。activeUsersReport(limit: 50) は最大 50 件のアクティブセッションを返します。
CSV エクスポート
6 つのレポートは CSV ファイルとしてダウンロードできます。{API_BASE_URL}/api/reporting/{report} に POST を送信します。{report} は次のいずれかです。
GetLicenseUsageCSVGetLicenseDenialsCSVGetSessionDetailsCSVGetTouchpointDetailsCSVGetDongleMonitoringCSVGetProjectDataCSV
リクエストボディは 3 つの部分で構成されます。
filterColumns: ファイルに含める列を順序どおりに指定します。Reporting Data API フィールドリファレンスの対応するレポートと同じフィールド名を使用します。filterOptions: 含めるレコードを指定します。startDateTimeとendDateTimeが期間を設定します。それぞれは、例のように任意のstartIntervalDateTimeおよびendIntervalDateTimeの境界を持つ間隔オブジェクトを取ります。- 各
selected...リストは結果をその値に絞り込みます。リストを省略するとすべてを含めます。
userConfigurations: ファイル内での値の書式:timezone、dateFormat、decimalSymbol、thousandsSeparator。timezoneにはEurope/BerlinやAmerica/New_Yorkなどの IANA タイムゾーン ID を指定します。ファイル内の時刻は UTC からそのタイムゾーンに変換されます。空にすると UTC になります。認識できない ID を指定するとリクエストは失敗します。dateFormatには 6 つの UI Configurations の日付形式のいずれかを指定します:dd/MM/yyyy hh:mm:ss、MM/dd/yyyy hh:mm:ss、yyyy-MM-dd hh:mm:ss、dd/MM/yyyy HH:mm:ss、MM/dd/yyyy HH:mm:ss、yyyy-MM-dd HH:mm:ss。空にするとyyyy-MM-dd HH:mm:ssになります。それ以外の値を指定するとリクエストは失敗します。hh形式は AM/PM なしの 12 時間制になるため、午前・午後を別途付け加えない限りHH形式を使用してください。
各レポートが受け付ける selected... リストは次のとおりです。
| レポート | selected... リスト |
|---|---|
GetLicenseUsageCSV | selectedLicInvVendor, selectedLicInvType, selectedLicInvVersion, selectedUserName, selectedHostName, selectedProductName, selectedIsTokenBased |
GetLicenseDenialsCSV | selectedUserName, selectedWorkstation, selectedMinorErr, selectedMajorErr, selectedErrorMessage, selectedFeatureName, selectedStatus, selectedGrpId, selectedGrpName, selectedCategory, selectedVendor, selectedVersion, selectedLicenseType, selectedAdditionalKey, selectedHostName, selectedLicsrvDescription |
GetSessionDetailsCSV | selectedUserNames, selectedHostNames, selectedProcessNames, selectedDllNames, selectedShutdownReasons, selectedVersion, selectedAgentStatuses |
GetTouchpointDetailsCSV | selectedUserNames, selectedWorkstations |
GetDongleMonitoringCSV | selectedDeviceName, selectedDeviceDescription, selectedManufacturer, selectedUserName, selectedHostName, selectedAgentStatus |
GetProjectDataCSV | selectedProjectName, selectedUserName, selectedPriority, selectedSource, selectedGroupName |
レスポンスは CSV ファイルそのものです。
例
このリクエストは、ライセンス使用レコードを license_usage.csv にエクスポートします。
curl -X POST "{API_BASE_URL}/api/reporting/GetLicenseUsageCSV" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"filterColumns": ["user_name", "feature_name", "vendor", "start_time_utc"],
"filterOptions": {
"startDateTime": { "startIntervalDateTime": "2026-06-01T00:00:00Z" },
"endDateTime": { "endIntervalDateTime": "2026-08-01T00:00:00Z" },
"selectedUserName": [],
"selectedProductName": []
},
"userConfigurations": {
"timezone": "UTC",
"dateFormat": "dd/MM/yyyy HH:mm:ss",
"decimalSymbol": ".",
"thousandsSeparator": ","
}
}' \
--output license_usage.csv
関連ページ
詳細については、次のページを参照してください。
- Reporting Data API への認証: これらのクエリを呼び出す前に Bearer トークンを取得します。
- Reporting Data API フィールドリファレンス: 各クエリが返すフィールド。
ドキュメントチームは、大規模言語モデルを使ってこのページを下書きすることがあります。公開前に、テクニカルライターがすべてのページをレビューし、製品と照らし合わせて検証します。最終的な判断は人間が行います。