Skip to content

Widget & Metrics API

DRAFT — Internal Developer Use Only

This API reference is for internal development teams.

Overview

What it is: The widget and metrics API provides operational monitoring data for Discovery infrastructure. This includes system resource metrics (CPU, memory, disk), web traffic metrics, and identity collection metrics. Widgets combine these metrics into chart-ready data structures.

How it relates to Dashboard Data: The Dashboard Data API provides identity posture data (accounts, threats, groups). This widget API provides infrastructure monitoring data (CPU, memory, collection health). Both feed into Control's dashboard system — posture data for identity risk widgets, operational data for platform health widgets.

Endpoints

MethodPathDescriptionAuth
POST/internal/v1/logging/metricsQuery raw metric data pointsJWT
POST/internal/v1/logging/metrics/chartQuery metric data formatted for chartsJWT
GET/internal/v1/logging/dashboard/:didGet dashboard configuration with widget listJWT

POST /internal/v1/logging/metrics/chart

Query one or more metrics and receive chart-ready data with timestamps, line series, and formatting hints.

Request:

http
POST /internal/v1/logging/metrics/chart
Authorization: Bearer <token>
Content-Type: application/json

{
  "duration": 86400,
  "interval": 3600,
  "TickFormat": "l",
  "LabelFormat": "lll",
  "metricQuery": [
    {
      "metric": "proc.cpu.usage",
      "labelQuery": [
        { "label": [{ "key": "mod", "value": "collector.ad" }] }
      ],
      "dimension": "nid",
      "aggregate": "max",
      "name": "AD Collector CPU"
    }
  ]
}

WidgetQuery fields

FieldTypeDescription
startint64Query start (unix seconds). Optional — defaults to now - duration
endint64Query end (unix seconds). Optional — defaults to now
durationint64Time window in seconds (e.g., 86400 = 24 hours)
intervalint64Aggregation bucket size in seconds (e.g., 3600 = 1 hour)
TickFormatstringTick label format (e.g., "l" for short date)
LabelFormatstringData label format (e.g., "lll" for full date-time)
metricQueryMetricQuery[]One or more metric queries

MetricQuery fields

FieldTypeDescription
metricstringMetric name (see Available Metrics)
labelQueryLabelQuery[]Label filters to narrow the metric
dimensionstringDimension to group by (see Dimensions)
startint64Override query start for this metric
endint64Override query end for this metric
durationint64Override duration for this metric
intervalint64Override interval for this metric
aggregatestringAggregation function: sum, avg, min, max, lst
combinestring[]Dimensions to combine (flatten multiple series)
namestringDisplay label for this metric series

LabelQuery

FieldTypeDescription
labelLabel[]Array of key-value pairs that must all match

Label

FieldTypeDescription
keystringLabel key (e.g., "mod", "nid")
valuestringLabel value (e.g., "collector.ad", "node-001")

Response (200):

json
{
  "data": [1707609600, 1707613200, 1707616800],
  "lines": [
    {
      "id": "proc.cpu.usage-node-001",
      "labels": { "mod": "collector.ad", "nid": "node-001" },
      "metric": "proc.cpu.usage",
      "key": "node-001",
      "name": "AD Collector CPU",
      "type": "gauge",
      "unit": "%",
      "metricPoint": {
        "1707609600": 23.5,
        "1707613200": 45.2,
        "1707616800": 31.8
      }
    }
  ],
  "labelFormat": "lll",
  "tickFormat": "l",
  "start": 1707609600,
  "end": 1707696000,
  "interval": 3600,
  "timestamp": 1707696000000
}

Chart response fields

FieldTypeDescription
dataint64[]Array of timestamps (unix seconds) for the x-axis
linesChartLine[]One series per metric dimension value
lines[].idstringUnique series identifier
lines[].labelsmap<string, string>Label key-value pairs for this series
lines[].metricstringMetric name
lines[].keystringDimension value this series represents
lines[].namestringDisplay label
lines[].metricPointmap<int64, float64>Timestamp → value mapping
labelFormatstringLabel format hint
tickFormatstringTick format hint
startint64Actual query start (unix seconds)
endint64Actual query end (unix seconds)
intervalint64Aggregation interval used
timestampint64Response generation time (ms since epoch)

POST /internal/v1/logging/metrics

Query raw metric data points without chart formatting.

Request:

http
POST /internal/v1/logging/metrics
Authorization: Bearer <token>
Content-Type: application/json

{
  "metric": "proc.mem.usage",
  "labelQuery": [
    { "label": [{ "key": "mod", "value": "datastore" }] }
  ],
  "dimension": "nid",
  "duration": 3600,
  "interval": 300,
  "aggregate": "avg"
}

Response (200): Array of metric objects with label sets and data points.


GET /internal/v1/logging/dashboard/:did

Get a dashboard configuration including its ordered list of widgets.

Path parameters:

ParameterTypeDescription
didstringDashboard identifier (main or identity)

Request:

http
GET /internal/v1/logging/dashboard/main
Authorization: Bearer <token>

Response (200):

json
{
  "id": "main",
  "name": "main",
  "includeDefault": true,
  "widget": [
    "Controller CPU",
    "Controller Memory",
    "Registry CPU",
    "Web Services HTTP Request Summary",
    "Web Services Successful Logons"
  ],
  "userWidget": []
}

Dashboard fields

FieldTypeDescription
idstringDashboard identifier
namestringDisplay name
includeDefaultboolWhether to include default system widgets
widgetstring[]Ordered list of widget names
userWidgetstring[]User-added widgets

Available Metrics

System process metrics

MetricDescriptionLabel filterChart type
proc.cpu.usageCPU usage percentagemod = module nameLineChart
proc.mem.usageMemory usagemod = module nameLineChart

Module labels for proc.cpu.usage and proc.mem.usage:

Label value (mod)Service
controllerController
registryRegistry
collector.adActive Directory Collector
collector.azureAzure Collector
collector.oktaOkta Collector
collector.linuxLinux Collector
collector.windowsWindows Collector
datastoreDatastore
reportingReporting
entitystoreEntity Store
commshubCommunications Hub
auditAudit
apigwAPI Gateway (Web Services)
schedulerScheduler
idmapperID Mapper
dashboardDashboard

File system metrics

MetricDescriptionChart type
sys.fs.freeFree disk spaceLineChart
sys.fs.sizeTotal disk capacityLineChart
sys.fs.usageUsed disk spaceLineChart

Web traffic metrics

MetricDescriptionDimensionChart type
http.requestHTTP request countl6n (location) or ctn (tenant)BarChart / PieChart
signin.successSuccessful sign-insBarChart
signin.failureFailed sign-in attemptsBarChart

Identity collection metrics

MetricDescriptionDimensionChart type
identity.collection.accounts.totalTotal discovered accountsText
identity.collection.accountsAccounts by collectorcid (collector ID)BarChart / PieChart
identity.collection.accounts.newNew accounts by collectorcidBarChart
identity.collection.accounts.stale.accountStale account countText
identity.collection.accounts.stale.passwordStale password countText
identity.collection.scanCollection scanscidBarChart / PieChart
identity.collection.scan.failFailed scanscidBarChart

Dimensions

Dimensions control how metric data is grouped into separate series.

DimensionDescriptionExample
nidNode ID — groups by Discovery collector nodeOne line per collector node
modModule name — groups by service moduleOne line per service
l6nLocation — groups by geographic locationOne slice per location
ctnTenant — groups by tenantOne series per tenant
cidCollector/data source IDOne bar per data source
tidTenant IDPer-tenant metrics
ageAge thresholdFor stale password/account bucketing

Aggregation Functions

FunctionDescription
sumSum all values in the bucket
avgAverage value in the bucket
minMinimum value in the bucket
maxMaximum value in the bucket
lstLast (most recent) value in the bucket

Predefined Widgets

Main dashboard widgets

Service resource monitoring:

Widget nameMetricLabel filterChart
Controller CPUproc.cpu.usagemod=controllerLineChart
Controller Memoryproc.mem.usagemod=controllerLineChart
Registry CPUproc.cpu.usagemod=registryLineChart
Registry Memoryproc.mem.usagemod=registryLineChart
Active Directory Collector CPUproc.cpu.usagemod=collector.adLineChart
Active Directory Collector Memoryproc.mem.usagemod=collector.adLineChart
Azure Collector CPUproc.cpu.usagemod=collector.azureLineChart
Azure Collector Memoryproc.mem.usagemod=collector.azureLineChart
Okta Collector CPUproc.cpu.usagemod=collector.oktaLineChart
Okta Collector Memoryproc.mem.usagemod=collector.oktaLineChart
Linux Collector CPUproc.cpu.usagemod=collector.linuxLineChart
Linux Collector Memoryproc.mem.usagemod=collector.linuxLineChart
Windows Collector CPUproc.cpu.usagemod=collector.windowsLineChart
Windows Collector Memoryproc.mem.usagemod=collector.windowsLineChart
Datastore CPUproc.cpu.usagemod=datastoreLineChart
Datastore Memoryproc.mem.usagemod=datastoreLineChart
Reporting CPUproc.cpu.usagemod=reportingLineChart
Reporting Memoryproc.mem.usagemod=reportingLineChart
Entitystore CPUproc.cpu.usagemod=entitystoreLineChart
Entitystore Memoryproc.mem.usagemod=entitystoreLineChart
Communications Hub CPUproc.cpu.usagemod=commshubLineChart
Communications Hub Memoryproc.mem.usagemod=commshubLineChart
Audit CPUproc.cpu.usagemod=auditLineChart
Audit Memoryproc.mem.usagemod=auditLineChart
Web Services CPUproc.cpu.usagemod=apigwLineChart
Web Services Memoryproc.mem.usagemod=apigwLineChart
Scheduler CPUproc.cpu.usagemod=schedulerLineChart
Scheduler Memoryproc.mem.usagemod=schedulerLineChart
ID Mapper CPUproc.cpu.usagemod=idmapperLineChart
ID Mapper Memoryproc.mem.usagemod=idmapperLineChart
Dashboard CPUproc.cpu.usagemod=dashboardLineChart
Dashboard Memoryproc.mem.usagemod=dashboardLineChart

Storage monitoring:

Widget nameMetricChart
Data Storage Free Spacesys.fs.freeLineChart
Data Storage Capacitysys.fs.sizeLineChart
Data Storage Usagesys.fs.usageLineChart

Web traffic monitoring:

Widget nameMetricDimensionChart
Web Services HTTP Request Summaryhttp.requestl6nPieChart
Web Services HTTP Request Historyhttp.requestl6nBarChart
Tenant HTTP Request Summaryhttp.requestctnPieChart
Tenant HTTP Request Historyhttp.requestctnBarChart
Web Services Successful Logonssignin.successBarChart
Web Services Failed Logonssignin.failureBarChart

Identity dashboard widgets

Widget nameMetricDimensionChart
Total Discovered Accountsidentity.collection.accounts.totalText
Total Scansidentity.collection.scanBarChart
Accounts by Platform Summaryidentity.collection.accountscidPieChart
Accounts by Platform Historyidentity.collection.accountscidBarChart
Active Directory Accountsidentity.collection.accountscid (AD)BarChart
New Active Directory Accountsidentity.collection.accounts.newcid (AD)BarChart
Azure Accountsidentity.collection.accountscid (Azure)BarChart
Okta Accountsidentity.collection.accountscid (Okta)BarChart
Linux Host Accountsidentity.collection.accountscid (Linux)BarChart
Windows Host Accountsidentity.collection.accountscid (Windows)BarChart
AD Computers Accountsidentity.collection.accountscid (AD Computers)BarChart
New Accounts by Platformidentity.collection.accounts.newcidBarChart
Scans by Platform Summaryidentity.collection.scancidPieChart
Scans by Platform Historyidentity.collection.scancidBarChart
Stale Passwordsidentity.collection.accounts.stale.passwordText
Stale Accountsidentity.collection.accounts.stale.accountText

Chart Types

TypeDescriptionUse case
LineChartTime series line chartCPU/memory trends, resource utilization over time
BarChartCategorical bar chartLogon counts, accounts by platform, scan history
PieChartProportional pie chartDistribution summaries (HTTP by location, accounts by platform)
TextSingle numeric value displayTotal counts (discovered accounts, stale passwords)

Hydden Documentation and Training Hub