ControlUp Overview API
The Overview API from ControlUp — 11 operation(s) for overview.
The Overview API from ControlUp — 11 operation(s) for overview.
openapi: 3.2.0
info:
title: DaaS IQ Overview API
description: 'Multi-cloud Virtual Desktop Infrastructure Management API (Default Version: v1.0)
🔒 **Authentication**
This API supports two authentication methods:
**1. API Key (Bearer Token)** - Recommended for programmatic access
- Create an API key at [API Key Management](https://support.controlup.com/docs/create-an-api-key)
- Include in requests: `Authorization: Bearer YOUR_API_KEY`
**2. Cookie Authentication** - For browser-based access
- Login via DEX authentication service
- The `user_dex_token` cookie will be automatically included'
contact:
name: ControlUp Support
url: https://controlup.com/support
email: support@controlup.com
version: v1
x-build-version: 1.0.107
servers:
- url: https://api.controlup.com/daas-iq/v1
tags:
- name: Overview
paths:
/cloud/overview/graph:
get:
tags:
- Overview
summary: Get overview graph data
description: 'Returns one count per level of the hierarchy — subscriptions, regions, resource groups, host pools, session
hosts, images, sessions — for the funnel at the top of the Overview.
Scalars, not rows; a level that a filter pins to one item returns its name instead of a count.'
operationId: GetOverviewGraph
parameters:
- name: provider
in: query
description: Filter by cloud provider. Currently only Azure is supported.
schema:
$ref: '#/components/schemas/CloudProvider'
- name: subscriptionId
in: query
description: Filter by cloud subscription (internal ID).
schema:
type: string
format: uuid
- name: regionId
in: query
description: Filter by Azure region code (e.g., 'eastus', 'westeurope').
schema:
maxLength: 100
type: string
- name: resourceGroupId
in: query
description: Filter by resource group (internal ID).
schema:
type: string
format: uuid
- name: workspaceId
in: query
description: Filter by workspace (internal ID).
schema:
type: string
format: uuid
- name: applicationGroupId
in: query
description: Filter by application group (internal ID).
schema:
type: string
format: uuid
- name: hostPoolId
in: query
description: Filter by host pool (internal ID).
schema:
type: string
format: uuid
- name: sessionHostId
in: query
description: Filter by session host (internal ID).
schema:
type: string
format: uuid
- name: userSessionId
in: query
description: Filter by user session (internal ID).
schema:
type: string
format: uuid
- name: imageId
in: query
description: Filter by image (internal ID).
schema:
type: string
format: uuid
- name: masterImageId
in: query
description: Filter by master image (internal ID).
schema:
type: string
format: uuid
- name: page
in: query
description: 'The page number to retrieve (1-based). Default: 1.'
schema:
maximum: 2147483647
minimum: 1
type: integer
format: int32
- name: pageSize
in: query
description: 'The number of items per page (1-100). Default: 50.'
schema:
maximum: 100
minimum: 1
type: integer
format: int32
responses:
'200':
description: Successfully retrieved graph data.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/OverviewGraphData'
example:
- entityType: subscriptions
count: 3
- entityType: regions
count: 5
- entityType: resourceGroups
count: 12
- entityType: workspaces
count: 8
- entityType: applicationGroups
count: 10
- entityType: hostPools
count: 7
- entityType: sessionHosts
count: 24
- entityType: userSessions
count: 15
- entityType: images
count: 4
- entityType: masterImages
count: 3
'401':
description: Unauthorized. User is not authenticated.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'402':
description: Payment required. No active license for the organization.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Forbidden. User does not have access to this organization.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'503':
description: Service unavailable. License status could not be verified. Try again later.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- BearerAuth: []
- CookieAuth: []
/cloud/overview/subscriptions:
get:
tags:
- Overview
summary: Get overview subscriptions
description: 'Returns one row per subscription with counts of everything beneath it plus rolled-up cost and performance.
What a subscription contains and costs, unlike its registration record, which carries no metrics.'
operationId: GetOverviewSubscriptions
parameters:
- name: provider
in: query
description: Filter by cloud provider. Currently only Azure is supported.
schema:
$ref: '#/components/schemas/CloudProvider'
- name: subscriptionId
in: query
description: Filter by cloud subscription (internal ID).
schema:
type: string
format: uuid
- name: regionId
in: query
description: Filter by Azure region code (e.g., 'eastus', 'westeurope').
schema:
maxLength: 100
type: string
- name: resourceGroupId
in: query
description: Filter by resource group (internal ID).
schema:
type: string
format: uuid
- name: workspaceId
in: query
description: Filter by workspace (internal ID).
schema:
type: string
format: uuid
- name: applicationGroupId
in: query
description: Filter by application group (internal ID).
schema:
type: string
format: uuid
- name: hostPoolId
in: query
description: Filter by host pool (internal ID).
schema:
type: string
format: uuid
- name: sessionHostId
in: query
description: Filter by session host (internal ID).
schema:
type: string
format: uuid
- name: userSessionId
in: query
description: Filter by user session (internal ID).
schema:
type: string
format: uuid
- name: imageId
in: query
description: Filter by image (internal ID).
schema:
type: string
format: uuid
- name: masterImageId
in: query
description: Filter by master image (internal ID).
schema:
type: string
format: uuid
- name: page
in: query
description: 'The page number to retrieve (1-based). Default: 1.'
schema:
maximum: 2147483647
minimum: 1
type: integer
format: int32
- name: pageSize
in: query
description: 'The number of items per page (1-100). Default: 50.'
schema:
maximum: 100
minimum: 1
type: integer
format: int32
responses:
'200':
description: Successfully retrieved subscriptions.
content:
application/json:
schema:
$ref: '#/components/schemas/SubscriptionOverviewPagedResult'
example:
items:
- subscriptionId: a1b2c3d4-0001-4000-8000-000000000001
subscriptionName: Production AVD
resourceGroupsCount: 8
regionsCount: 3
hostPoolsCount: 5
runningHostsCount: 18
stoppedHostsCount: 2
totalSessionsCount: 42
costMonthToDate: 1528.45
avgCpu: 34.2
avgMem: 61.8
status: Healthy
- subscriptionId: a1b2c3d4-0001-4000-8000-000000000002
subscriptionName: Dev/Test AVD
resourceGroupsCount: 4
regionsCount: 1
hostPoolsCount: 2
runningHostsCount: 3
stoppedHostsCount: 1
totalSessionsCount: 5
costMonthToDate: 211.68
avgCpu: 12.5
avgMem: 38
status: Healthy
page: 1
pageSize: 25
count: 2
hasMore: false
totalCount: 2
'400':
description: Bad request. Invalid pagination parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized. User is not authenticated.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'402':
description: Payment required. No active license for the organization.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Forbidden. User does not have access to this organization.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'503':
description: Service unavailable. License status could not be verified. Try again later.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- BearerAuth: []
- CookieAuth: []
/cloud/overview/regions:
get:
tags:
- Overview
summary: Get overview regions
description: 'Returns one row per Azure region holding onboarded resources, with subscription counts, resource statistics,
cost, and performance rolled up within it.
Only regions in use, not the catalog of regions a subscription could deploy into.'
operationId: GetOverviewRegions
parameters:
- name: provider
in: query
description: Filter by cloud provider. Currently only Azure is supported.
schema:
$ref: '#/components/schemas/CloudProvider'
- name: subscriptionId
in: query
description: Filter by cloud subscription (internal ID).
schema:
type: string
format: uuid
- name: regionId
in: query
description: Filter by Azure region code (e.g., 'eastus', 'westeurope').
schema:
maxLength: 100
type: string
- name: resourceGroupId
in: query
description: Filter by resource group (internal ID).
schema:
type: string
format: uuid
- name: workspaceId
in: query
description: Filter by workspace (internal ID).
schema:
type: string
format: uuid
- name: applicationGroupId
in: query
description: Filter by application group (internal ID).
schema:
type: string
format: uuid
- name: hostPoolId
in: query
description: Filter by host pool (internal ID).
schema:
type: string
format: uuid
- name: sessionHostId
in: query
description: Filter by session host (internal ID).
schema:
type: string
format: uuid
- name: userSessionId
in: query
description: Filter by user session (internal ID).
schema:
type: string
format: uuid
- name: imageId
in: query
description: Filter by image (internal ID).
schema:
type: string
format: uuid
- name: masterImageId
in: query
description: Filter by master image (internal ID).
schema:
type: string
format: uuid
- name: page
in: query
description: 'The page number to retrieve (1-based). Default: 1.'
schema:
maximum: 2147483647
minimum: 1
type: integer
format: int32
- name: pageSize
in: query
description: 'The number of items per page (1-100). Default: 50.'
schema:
maximum: 100
minimum: 1
type: integer
format: int32
responses:
'200':
description: Successfully retrieved regions.
content:
application/json:
schema:
$ref: '#/components/schemas/RegionOverviewPagedResult'
example:
items:
- regionId: eastus
regionName: East US
subscriptionsCount: 2
resourceGroupsCount: 7
hostPoolsCount: 4
runningHostsCount: 12
stoppedHostsCount: 1
totalSessionsCount: 28
costMonthToDate: 982.3
avgCpu: 38.5
avgMem: 62
- regionId: westeurope
regionName: West Europe
subscriptionsCount: 1
resourceGroupsCount: 3
hostPoolsCount: 2
runningHostsCount: 6
stoppedHostsCount: 0
totalSessionsCount: 14
costMonthToDate: 445.12
avgCpu: 27.3
avgMem: 54.1
- regionId: eastus2
regionName: East US 2
subscriptionsCount: 1
resourceGroupsCount: 2
hostPoolsCount: 1
runningHostsCount: 3
stoppedHostsCount: 1
totalSessionsCount: 5
costMonthToDate: 312.71
avgCpu: 22.1
avgMem: 45.6
page: 1
pageSize: 25
count: 3
hasMore: false
totalCount: 3
'400':
description: Bad request. Invalid pagination parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized. User is not authenticated.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'402':
description: Payment required. No active license for the organization.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Forbidden. User does not have access to this organization.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'503':
description: Service unavailable. License status could not be verified. Try again later.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- BearerAuth: []
- CookieAuth: []
/cloud/overview/resource-groups:
get:
tags:
- Overview
summary: Get overview resource groups
description: 'Returns one row per resource group, with host pool counts, host statistics, cost, and performance rolled up.
Only groups holding onboarded resources, not every group that exists in Azure.'
operationId: GetOverviewResourceGroups
parameters:
- name: provider
in: query
description: Filter by cloud provider. Currently only Azure is supported.
schema:
$ref: '#/components/schemas/CloudProvider'
- name: subscriptionId
in: query
description: Filter by cloud subscription (internal ID).
schema:
type: string
format: uuid
- name: regionId
in: query
description: Filter by Azure region code (e.g., 'eastus', 'westeurope').
schema:
maxLength: 100
type: string
- name: resourceGroupId
in: query
description: Filter by resource group (internal ID).
schema:
type: string
format: uuid
- name: workspaceId
in: query
description: Filter by workspace (internal ID).
schema:
type: string
format: uuid
- name: applicationGroupId
in: query
description: Filter by application group (internal ID).
schema:
type: string
format: uuid
- name: hostPoolId
in: query
description: Filter by host pool (internal ID).
schema:
type: string
format: uuid
- name: sessionHostId
in: query
description: Filter by session host (internal ID).
schema:
type: string
format: uuid
- name: userSessionId
in: query
description: Filter by user session (internal ID).
schema:
type: string
format: uuid
- name: imageId
in: query
description: Filter by image (internal ID).
schema:
type: string
format: uuid
- name: masterImageId
in: query
description: Filter by master image (internal ID).
schema:
type: string
format: uuid
- name: page
in: query
description: 'The page number to retrieve (1-based). Default: 1.'
schema:
maximum: 2147483647
minimum: 1
type: integer
format: int32
- name: pageSize
in: query
description: 'The number of items per page (1-100). Default: 50.'
schema:
maximum: 100
minimum: 1
type: integer
format: int32
responses:
'200':
description: Successfully retrieved resource groups.
content:
application/json:
schema:
$ref: '#/components/schemas/ResourceGroupOverviewPagedResult'
example:
items:
- resourceGroupId: b2c3d4e5-0001-4000-8000-000000000001
resourceGroupName: rg-avd-prod-eastus
subscriptionId: a1b2c3d4-0001-4000-8000-000000000001
subscriptionName: Production AVD
regionId: eastus
regionName: East US
regionsCount: 1
hostPoolsCount: 2
runningHostsCount: 8
stoppedHostsCount: 0
totalSessionsCount: 20
costMonthToDate: 542.18
avgCpu: 41.2
avgMem: 65.4
- resourceGroupId: b2c3d4e5-0001-4000-8000-000000000002
resourceGroupName: rg-avd-prod-westeurope
subscriptionId: a1b2c3d4-0001-4000-8000-000000000001
subscriptionName: Production AVD
regionId: westeurope
regionName: West Europe
regionsCount: 1
hostPoolsCount: 1
runningHostsCount: 4
stoppedHostsCount: 0
totalSessionsCount: 10
costMonthToDate: 312.5
avgCpu: 28.7
avgMem: 52.3
- resourceGroupId: b2c3d4e5-0001-4000-8000-000000000003
resourceGroupName: rg-avd-devtest
subscriptionId: a1b2c3d4-0001-4000-8000-000000000002
subscriptionName: Dev/Test AVD
regionId: eastus
regionName: East US
regionsCount: 1
hostPoolsCount: 1
runningHostsCount: 2
stoppedHostsCount: 1
totalSessionsCount: 3
costMonthToDate: 87.44
avgCpu: 15
avgMem: 35.2
page: 1
pageSize: 25
count: 3
hasMore: true
totalCount: 12
'400':
description: Bad request. Invalid pagination parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized. User is not authenticated.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'402':
description: Payment required. No active license for the organization.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Forbidden. User does not have access to this organization.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'503':
description: Service unavailable. License status could not be verified. Try again later.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- BearerAuth: []
- CookieAuth: []
/cloud/overview/host-pools:
get:
tags:
- Overview
summary: Get overview host pools
description: 'Returns one row per host pool with host statistics, session counts, cost, and performance metrics.
Carries cost and accepts filters from any level of the hierarchy; the plain host pool list is the one for simply
enumerating pools. Neither carries AVD configuration or time-series metrics.'
operationId: GetOverviewHostPools
parameters:
- name: provider
in: query
description: Filter by cloud provider. Currently only Azure is supported.
schema:
$ref: '#/components/schemas/CloudProvider'
- name: subscriptionId
in: query
description: Filter by cloud subscription (internal ID).
schema:
type: string
format: uuid
- name: regionId
in: query
description: Filter by Azure region code (e.g., 'eastus', 'westeurope').
schema:
maxLength: 100
type: string
- name: resourceGroupId
in: query
description: Filter by resource group (internal ID).
schema:
type: string
format: uuid
- name: workspaceId
in: query
description: Filter by workspace (internal ID).
schema:
type: string
format: uuid
- name: applicationGroupId
in: query
description: Filter by application group (internal ID).
schema:
type: string
format: uuid
- name: hostPoolId
in: query
description: Filter by host pool (internal ID).
schema:
type: string
format: uuid
- name: sessionHostId
in: query
description: Filter by session host (internal ID).
schema:
type: string
format: uuid
- name: userSessionId
in: query
description: Filter by user session (internal ID).
schema:
type: string
format: uuid
- name: imageId
in: query
description: Filter by image (internal ID).
schema:
type: string
format: uuid
- name: masterImageId
in: query
description: Filter by master image (internal ID).
schema:
type: string
format: uuid
- name: page
in: query
description: 'The page number to retrieve (1-based). Default: 1.'
schema:
maximum: 2147483647
minimum: 1
type: integer
format: int32
- name: pageSize
in: query
description: 'The number of items per page (1-100). Default: 50.'
schema:
maximum: 100
minimum: 1
type: integer
format: int32
responses:
'200':
description: Successfully retrieved host pools.
content:
application/json:
schema:
$ref: '#/components/schemas/HostPoolOverviewPagedResult'
example:
items:
- hostPoolId: c3d4e5f6-0001-4000-8000-000000000001
hostPoolName: HP-Finance-Prod
subscriptionId: a1b2c3d4-0001-4000-8000-000000000001
subscriptionName: Production AVD
regionId: eastus
regionName: East US
resourceGroupId: b2c3d4e5-0001-4000-8000-000000000001
resourceGroupName: rg-avd-prod-eastus
type: Pooled
maxSessionsPerHost: 4
runningHostsCount: 6
stoppedHostsCount: 0
totalSessionsCount: 15
costMonthToDate: 324.5
avgCpu: 42.3
avgMem: 68.1
- hostPoolId: c3d4e5f6-0001-4000-8000-000000000002
hostPoolName: HP-Engineering-VDI
subscriptionId: a1b2c3d4-0001-4000-8000-000000000001
subscriptionName: Production AVD
regionId: eastus
regionName: East US
resourceGroupId: b2c3d4e5-0001-4000-8000-000000000001
resourceGroupName: rg-avd-prod-eastus
type: Personal
maxSessionsPerHost: 999999
runningHostsCount: 4
stoppedHostsCount: 1
totalSessionsCount: 3
costMonthToDate: 217.68
avgCpu: 55
avgMem: 72.5
- hostPoolId: c3d4e5f6-0001-4000-8000-000000000003
hostPoolName: HP-Europe-Pooled
subscriptionId: a1b2c3d4-0001-4000-8000-000000000001
subscriptionName: Production AVD
regionId: westeurope
regionName: West Europe
resourceGroupId: b2c3d4e5-0001-4000-8000-000000000002
resourceGroupName: rg-avd-prod-westeurope
type: Pooled
maxSessionsPerHost: 3
runningHostsCount: 4
stoppedHostsCount: 0
totalSessionsCount: 8
costMonthToDate: 312.5
avgCpu: 28.7
avgMem: 52.3
page: 1
pageSize: 25
count: 3
hasMore: true
totalCount: 7
'400':
description: Bad request. Invalid pagination parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized. User is not authenticated.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'402':
description: Payment required. No active license for the organization.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Forbidden. User does not have access to this organization.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'503':
description: Service unavailable. License status could not be verified. Try again later.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- BearerAuth: []
- CookieAuth: []
/cloud/overview/session-hosts:
get:
tags:
- Overview
summary: Get overview session hosts
description: 'Returns one row per session host VM with power state, session count, performance metrics, and cost.
Spans every host pool, so it answers "which hosts anywhere are unhealthy, idle, or expensive".'
operationId: GetOverviewSessionHosts
parameters:
- name: provider
in: query
description: Filter by cloud provider. Currently only Azure is supported.
schema:
$ref: '#/components/schemas/CloudProvider'
- name: subscriptionId
in: query
description: Filter by cloud subscription (internal ID).
schema:
type: string
format: uuid
- name: regionId
in: query
description: Filter by Azure region code (e.g., 'eastus', 'westeurope').
schema:
maxLength: 100
type: string
- name: resourceGroupId
in: query
description: Filter by resource group (internal ID).
schema:
type: string
format: uuid
- name: workspaceId
in: query
description: Filter by workspace (internal ID).
schema:
type: string
format: uuid
- name: applicationGroupId
in: query
description: Filter by application group (internal ID).
schema:
type: string
format: uuid
- name: hostPoolId
in: query
description: Filter by host pool (internal ID).
schema:
type: string
format: uuid
- name: sessionHostId
in: query
description: Filter by session host (internal ID).
schema:
type: string
format: uuid
- name: userSessionId
in: query
description: Filter by user session (internal ID).
schema:
type: string
format: uuid
- name: imageId
in: query
description: Filter by image (internal ID).
schema:
type: string
format: uuid
- name: masterImageId
in: query
description: Filter by master image (internal ID).
schema:
type: string
format: uuid
- name: page
in: query
description: 'The page number to retrieve (1-based). Default: 1.'
schema:
maximum: 2147483647
minimum: 1
type: integer
# --- truncated at 32 KB (109 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/controlup/refs/heads/main/openapi/controlup-overview-api-openapi.yml