Work with this as data
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/controlup-applications-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
OpenAPI Specification
openapi: 3.2.0
info:
title: VDI & DAAS Applications API
version: 1.0.0
description: Applications usage reports
servers:
- url: https://api.controlup.com/historical
security:
- bearer-jwt:
- read
- write
tags:
- name: Applications
description: Applications usage reports
paths:
/v1/applications/usage/single:
get:
tags:
- Applications
summary: Get usage details for an application
description: Returns usage details for the specified application including usage per machine, per user account, and the peak number of concurrent instances throughout the search period. The granularity of the peak concurrent instances depends on the length of the search period, and how far back in the past the search period is.
operationId: getAppUsageSingle
parameters:
- name: appName
in: query
description: The name of the application
required: true
schema:
type: string
example: chrome.exe
- name: appVersion
in: query
description: Only return usage details for the specified application version number.
required: false
schema:
type: string
example: 1.0.0
- name: _timeFrom
in: query
description: 'Start date and time of the search period in the format: YYYY-MM-DD''T''hh:mm:ss.sssZ'
required: true
schema:
type: string
format: date-time
example: '2025-02-01T00:00:00.000Z'
- name: _timeTo
in: query
description: 'End date and time of the search period in the format: YYYY-MM-DD''T''hh:mm:ss.sssZ'
required: true
schema:
type: string
format: date-time
example: '2025-02-02T00:00:00.000Z'
- name: _page
in: query
description: The page number returned. The first page is 1.
schema:
type: integer
format: int32
minimum: 1
example: 1
- name: _limit
in: query
description: The number of items returned per page. Minimum is 1.
schema:
type: integer
format: int32
maximum: 100000
minimum: 1
example: 20
responses:
'200':
description: Successfully retrieved
content:
application/json:
schema:
$ref: '#/components/schemas/HistoricalSingleResponseAppUsageSingleResult'
application/xml:
schema:
$ref: '#/components/schemas/HistoricalSingleResponseAppUsageSingleResult'
'400':
description: Bad Request - one of the inputs isn't correct
content:
application/json:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
application/xml:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
'401':
description: User is not authorized to access the resource
content:
application/json:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
application/xml:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
'403':
description: Authorization details are not provided
content:
application/json:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
application/xml:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
application/xml:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
'501':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
application/xml:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
'504':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
application/xml:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
/v1/applications/usage/all:
get:
tags:
- Applications
summary: Get usage details for all applications
description: Returns usage details for all applications (number of unique users and peak number of concurrent users) throughout the search period. The granularity of the returned data depends on the length of the search period, and how far back in the past the search period is. Only applications with at least 1 user are returned. Usage details are returned per application version.
operationId: getAppUsage
parameters:
- name: _timeFrom
in: query
description: 'Start date of the search period in the format: YYYY-MM-DD'
required: true
schema:
type: string
format: date
example: '2025-02-01'
- name: _timeTo
in: query
description: 'End date of the search period in the format: YYYY-MM-DD'
required: true
schema:
type: string
format: date
example: '2025-02-02'
- name: _page
in: query
description: The page number returned. The first page is 1.
schema:
type: integer
format: int32
minimum: 1
example: 1
- name: _limit
in: query
description: The number of items returned per page. Minimum is 1.
schema:
type: integer
format: int32
maximum: 100000
minimum: 1
example: 20
responses:
'200':
description: Successfully retrieved
content:
application/json:
schema:
$ref: '#/components/schemas/HistoricalListResponseAppUsageAllResult'
application/xml:
schema:
$ref: '#/components/schemas/HistoricalListResponseAppUsageAllResult'
'400':
description: Bad Request - one of the inputs isn't correct
content:
application/json:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
application/xml:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
'401':
description: User is not authorized to access the resource
content:
application/json:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
application/xml:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
'403':
description: Authorization details are not provided
content:
application/json:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
application/xml:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
application/xml:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
'501':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
application/xml:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
'504':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
application/xml:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
/v1/applications/statistics:
get:
tags:
- Applications
summary: Get application statistics
description: Returns usage details and resource consumption statistics for all applications (per version number). Statistics are aggregated either weekly (Monday-Sunday) or monthly, depending on the timeFrame parameter. Visit the <a href='https://support.controlup.com/docs/application-statistics-report' target='_blank'>App Statistics Report</a> documentation for column descriptions and more details.
operationId: getAppStats
parameters:
- name: timeFrame
in: query
description: Aggregate statistics either weekly (Monday-Sunday) or monthly.
required: true
schema:
type: string
description: Aggregate statistics either weekly (Monday-Sunday) or monthly.
enum:
- 1W
- 1M
- name: datetime
in: query
description: Return statistics around the specified date and time. If timeFrame is set to 1W (1 week), then the endpoint returns statistics for the week (Monday-Sunday) that the date is within. If timeFrame is set to 1M (1 month), then the endpoint returns statistics for the month that the date is within. For example, if the specified date and time is on Saturday the 6th and timeFrame = 1W, then the endpoint returns aggregated statistics from Monday the 1st to Sunday the 7th.
required: true
schema:
type: string
example: '2025-02-01T00:00:00.000Z'
- name: folderPath
in: query
description: Limits the scope of the returned application statistics to machines located under the specified full folder path within the ControlUp VDI organizational tree. Path must start with the root organization name (e.g., controlup\hq\financevdi)
required: false
schema:
type: string
- name: _page
in: query
description: The page number returned. The first page is 1.
schema:
type: integer
format: int32
minimum: 1
example: 1
- name: _limit
in: query
description: The number of items returned per page. Minimum is 1.
schema:
type: integer
format: int32
maximum: 100000
minimum: 1
example: 20
responses:
'200':
description: Successfully retrieved
content:
application/json:
schema:
$ref: '#/components/schemas/AppStatsResponse'
application/xml:
schema:
$ref: '#/components/schemas/AppStatsResponse'
'400':
description: Bad Request - one of the inputs isn't correct
content:
application/json:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
application/xml:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
'401':
description: User is not authorized to access the resource
content:
application/json:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
application/xml:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
'403':
description: Authorization details are not provided
content:
application/json:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
application/xml:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
application/xml:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
'501':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
application/xml:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
'504':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
application/xml:
schema:
$ref: '#/components/schemas/HistoricalErrorResponse'
components:
schemas:
HistoricalListResponseAppUsageAllResult:
type: object
properties:
metadata:
$ref: '#/components/schemas/UserMetadata'
data:
type: array
items:
$ref: '#/components/schemas/AppUsageAllResult'
ConcurrentInstances:
type: object
properties:
process_name:
type: string
process_version:
type: string
peak_concurrency:
type: integer
format: int32
date_time:
type: string
format: date-time
HistoricalSingleResponseAppUsageSingleResult:
type: object
properties:
metadata:
$ref: '#/components/schemas/UserMetadata'
data:
$ref: '#/components/schemas/AppUsageSingleResult'
AppUsageSingleResult:
type: object
properties:
computer_grouping:
type: array
items:
$ref: '#/components/schemas/ByComputer'
user_grouping:
type: array
items:
$ref: '#/components/schemas/ByUser'
concurrent_instances:
type: array
items:
$ref: '#/components/schemas/ConcurrentInstances'
unique_users:
type: integer
format: int32
ApplicationStatistics:
type: object
properties:
applicationName:
type: string
processVersion:
type: string
processNameId:
type: string
processVersionId:
type: string
uniqueUsers:
type: integer
format: int64
uniqueUsersTrend:
type: integer
format: int64
peakConcurrentInstances:
type: integer
format: int64
averageLoadTime:
type: integer
format: int64
averageCpuUsage:
type: integer
format: int64
averageGpuUsage:
type: integer
format: int64
averageMemoryConsumption:
type: integer
format: int64
averageReadIoUsage:
type: integer
format: int64
averageWriteIoUsage:
type: integer
format: int64
averageTotalIoUsage:
type: integer
format: int64
totalInstances:
type: integer
format: int64
uniqueMachines:
type: integer
format: int64
cpuPercentile:
type: integer
format: int64
ByUser:
type: object
properties:
user_account:
type: string
total_instances:
type: integer
format: int32
unique_machines:
type: integer
format: int32
process_name:
type: string
last_use_time:
type: string
format: date-time
process_version:
type: string
HistoricalErrorResponse:
type: object
properties:
metadata:
$ref: '#/components/schemas/UserMetadata'
errors:
type: array
items:
$ref: '#/components/schemas/Error'
UserMetadata:
type: object
properties:
orgId:
type: string
infraGuid:
type: string
region:
type: string
userId:
type: string
total:
type: integer
format: int64
limitPerPage:
type: integer
format: int32
currentPageNumber:
type: integer
format: int32
currentPageSize:
type: integer
format: int32
remaining:
type: integer
format: int64
userEmail:
type: string
truncated:
type: boolean
truncationLimit:
type: integer
format: int32
timeFrom:
type: string
timeTo:
type: string
Error:
type: object
properties:
message:
type: string
errorCode:
type: integer
format: int32
statusCode:
type: integer
format: int32
AppUsageAllResult:
type: object
properties:
application_name:
type: string
application_version:
type: string
peak_concurrency:
type: integer
format: int32
unique_user_count:
type: integer
format: int32
update_time:
type: string
format: date-time
ByComputer:
type: object
properties:
computer_name:
type: string
unique_users:
type: integer
format: int32
total_instances:
type: integer
format: int32
process_name:
type: string
process_version:
type: string
AppStatsResponse:
type: object
properties:
metadata:
$ref: '#/components/schemas/UserMetadata'
data:
type: array
items:
$ref: '#/components/schemas/ApplicationStatistics'
securitySchemes:
bearer-jwt:
type: http
scheme: bearer
x-readme:
proxy-enabled: false
explorer-enabled: true
samples-languages:
- shell
- powershell
- node
- javascript
- python
- c
- clojure
- cplusplus
- csharp
- http
- go
- java
- json
- kotlin
- objectivec
- ocaml
- php
- r
- ruby
- shell
- swift