ControlUp Alerts - Devices API
The Alerts - Devices API from ControlUp — 2 operation(s) for alerts - devices.
The Alerts - Devices API from ControlUp — 2 operation(s) for alerts - devices.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/controlup-alerts-devices-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: Dex Alerts Alerts - Devices API
version: 1.0.0
description: Dex API Description
contact: {}
servers:
- url: https://api.controlup.com/events/v1/alerts
tags:
- name: Alerts - Devices
paths:
/organizations/{orgId}/alert-configs/desktop/{id}:
get:
operationId: AlertsDesktopController_getAlertById
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/DesktopAlertConfigDTO'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseBody_ErrorType_BadRequestErrorMessages.HttpStatusCode.BAD_REQUEST.BadRequestErrorCodes__'
'401':
description: 'Unauthorized: Access is denied'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.Unauthorized.HttpStatusCode.UNAUTHORIZED.ErrorCode.Unauthorized__'
'403':
description: 'Forbidden: Access to this resource is denied'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.Forbidden.HttpStatusCode.FORBIDDEN.ErrorCode.Forbidden__'
'404':
description: 'Not Found: The requested resource could not be found'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.NotFound.HttpStatusCode.NOT_FOUND.ErrorCode.NotFound__'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.InternalServerError.HttpStatusCode.INTERNAL_SERVER_ERROR.ErrorCode.InternalServerError__'
description: Retrieves details of a specific Devices alert configuration.
summary: Retrieve a Devices Alert
tags:
- Alerts - Devices
security:
- apiKey: []
parameters:
- description: ID of your ControlUp organization. You can find your organization ID on the [API Key Management page](how-to-make-api-requests#how-to-find-your-controlup-organization-id) in the DEX platform.
in: path
name: orgId
required: true
schema:
$ref: '#/components/schemas/UUID'
- description: ID of the Devices alert to update. You can use [List all alerts](alertsconfigscontroller_getall) to get alert IDs.
in: path
name: id
required: true
schema:
$ref: '#/components/schemas/UUID'
patch:
operationId: AlertsDesktopController_updateAlertConfiguration
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/DesktopAlertConfigDTO'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseBody_ErrorType_BadRequestErrorMessages.HttpStatusCode.BAD_REQUEST.BadRequestErrorCodes__'
'401':
description: 'Unauthorized: Access is denied'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.Unauthorized.HttpStatusCode.UNAUTHORIZED.ErrorCode.Unauthorized__'
'403':
description: 'Forbidden: Access to this resource is denied'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.Forbidden.HttpStatusCode.FORBIDDEN.ErrorCode.Forbidden__'
'404':
description: 'Not Found: The requested resource could not be found'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.NotFound.HttpStatusCode.NOT_FOUND.ErrorCode.NotFound__'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.InternalServerError.HttpStatusCode.INTERNAL_SERVER_ERROR.ErrorCode.InternalServerError__'
description: Updates an existing Devices alert. Only sent parameters are changed.
summary: Update a Devices alert
tags:
- Alerts - Devices
security:
- apiKey: []
parameters:
- description: ID of your ControlUp organization. You can find your organization ID on the [API Key Management page](how-to-make-api-requests#how-to-find-your-controlup-organization-id) in the DEX platform.
in: path
name: orgId
required: true
schema:
$ref: '#/components/schemas/UUID'
- description: ID of the Devices alert to update. You can use [List all alerts](alertsconfigscontroller_getall) to get alert IDs.
in: path
name: id
required: true
schema:
$ref: '#/components/schemas/UUID'
requestBody:
description: Updated Devices alert configuration details
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Partial_CreateDesktopAlertDTO_'
description: Updated Devices alert configuration details
delete:
operationId: AlertsDesktopController_deleteAlertConfiguration
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/DeletedActionResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseBody_ErrorType_BadRequestErrorMessages.HttpStatusCode.BAD_REQUEST.BadRequestErrorCodes__'
'401':
description: 'Unauthorized: Access is denied'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.Unauthorized.HttpStatusCode.UNAUTHORIZED.ErrorCode.Unauthorized__'
'403':
description: 'Forbidden: Access to this resource is denied'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.Forbidden.HttpStatusCode.FORBIDDEN.ErrorCode.Forbidden__'
'404':
description: 'Not Found: The requested resource could not be found'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.NotFound.HttpStatusCode.NOT_FOUND.ErrorCode.NotFound__'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.InternalServerError.HttpStatusCode.INTERNAL_SERVER_ERROR.ErrorCode.InternalServerError__'
description: Deletes a Devices alert.
summary: Delete a Devices alert
tags:
- Alerts - Devices
security:
- apiKey: []
parameters:
- description: ID of your ControlUp organization. You can find your organization ID on the [API Key Management page](how-to-make-api-requests#how-to-find-your-controlup-organization-id) in the DEX platform.
in: path
name: orgId
required: true
schema:
$ref: '#/components/schemas/UUID'
- description: ID of the Devices alert to delete. You can use [List all alerts](alertsconfigscontroller_getall) to get alert IDs.
in: path
name: id
required: true
schema:
$ref: '#/components/schemas/UUID'
/organizations/{orgId}/alert-configs/desktop:
post:
operationId: AlertsDesktopController_createDesktopAlert
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/DesktopAlertConfigDTO'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseBody_ErrorType_BadRequestErrorMessages.HttpStatusCode.BAD_REQUEST.BadRequestErrorCodes__'
'401':
description: 'Unauthorized: Access is denied'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.Unauthorized.HttpStatusCode.UNAUTHORIZED.ErrorCode.Unauthorized__'
'403':
description: 'Forbidden: Access to this resource is denied'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.Forbidden.HttpStatusCode.FORBIDDEN.ErrorCode.Forbidden__'
'404':
description: 'Not Found: The requested resource could not be found'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.NotFound.HttpStatusCode.NOT_FOUND.ErrorCode.NotFound__'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.InternalServerError.HttpStatusCode.INTERNAL_SERVER_ERROR.ErrorCode.InternalServerError__'
description: Creates a new Devices alert.
summary: Create a Devices alert
tags:
- Alerts - Devices
security:
- apiKey: []
parameters:
- description: ID of your ControlUp organization. You can find your organization ID on the [API Key Management page](how-to-make-api-requests#how-to-find-your-controlup-organization-id) in the DEX platform.
in: path
name: orgId
required: true
schema:
$ref: '#/components/schemas/UUID'
requestBody:
description: Desktop alert configuration details
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Omit_DesktopAlertConfigDTO.sourceName-or-id_'
description: Desktop alert configuration details
components:
schemas:
UUID:
type: string
format: uuid
description: 'Stringified UUIDv4.
See [RFC 4112](https://tools.ietf.org/html/rfc4122)'
pattern: ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$
ErrorType_ErrorMessage.Forbidden.HttpStatusCode.FORBIDDEN.ErrorCode.Forbidden_:
properties:
message:
$ref: '#/components/schemas/ErrorMessage.Forbidden'
code:
$ref: '#/components/schemas/ErrorCode.Forbidden'
status:
$ref: '#/components/schemas/HttpStatusCode.FORBIDDEN'
data:
additionalProperties: true
type: object
required:
- status
- code
- message
type: object
ErrorMessage.Forbidden:
enum:
- Forbidden
type: string
ErrorCode.Forbidden:
enum:
- 4
type: number
Omit_DesktopAlertConfigDTO.sourceName-or-id_:
$ref: '#/components/schemas/Pick_DesktopAlertConfigDTO.Exclude_keyofDesktopAlertConfigDTO.sourceName-or-id__'
description: Construct a type with the properties of T except for those in type K.
ErrorType_BadRequestErrorMessages.HttpStatusCode.BAD_REQUEST.BadRequestErrorCodes_:
properties:
message:
$ref: '#/components/schemas/BadRequestErrorMessages'
code:
$ref: '#/components/schemas/BadRequestErrorCodes'
status:
$ref: '#/components/schemas/HttpStatusCode.BAD_REQUEST'
data:
additionalProperties: true
type: object
required:
- status
- code
- message
type: object
DesktopAlertMetricCondition:
type: string
enum:
- '='
- '!='
- '>='
- '>'
- <=
- <
- like
HttpStatusCode.NOT_FOUND:
enum:
- 404
type: number
Partial_CreateDesktopAlertDTO_:
properties:
integrations:
properties:
servicenow:
properties:
customFields:
$ref: '#/components/schemas/ServiceNowCustomFields'
subcategory:
type: string
category:
type: string
closeNotes:
type: string
closeCode:
type: string
settings:
properties:
autoUpdateTicketState:
type: string
eventMapping:
properties:
resource:
type: string
node:
type: string
alertDescription:
type: string
type: object
type: object
eventSource:
type: string
eventType:
type: string
autoResolveIntervalSeconds:
type: number
format: double
description: 'The duration, in seconds, the system waits after an alert condition has cleared before automatically resolving the associated ServiceNow ticket.
If omitted, the ticket does not automatically resolve.'
urgency:
type: integer
format: int32
description: Urgency level of the ServiceNow ticket.
impact:
type: integer
format: int32
description: Impact level of the ServiceNow ticket.
ticketType:
$ref: '#/components/schemas/ServiceNowTicketType'
description: Type of ServiceNow ticket created. (1 - Incident, 2 - Event)
enabled:
type: boolean
description: Whether the ServiceNow integration is enabled.
required:
- urgency
- impact
- ticketType
- enabled
type: object
description: ServiceNow integration configuration.
type: object
description: Integrations with third-party software.
selfServiceNotification:
properties:
scriptLabel:
type:
- string
- 'null'
description: Custom label for the "Run Script" button shown in the Connect / self-service notification. If empty, a default label is used.
scriptId:
type:
- string
- 'null'
description: ID of a system script offered to the end user through the ControlUp Connect notification. Independent from `actions.systemScriptId`.
message:
type:
- string
- 'null'
description: Custom message displayed to the end user when the self-service notification triggers.
enabled:
type: boolean
description: Whether to trigger a self-service notification on the end user's device when the alert fires.
required:
- enabled
type: object
description: ControlUp Connect / end-user self-service notification settings.
tags:
items:
type: string
type: array
description: 'List of device tags to filter which devices can trigger this alert.
If empty or omitted, the alert applies to all devices.
If set, the alert triggers only for devices that have at least one matching tag.'
notifications:
properties:
webhookUrl:
allOf:
- $ref: '#/components/schemas/URI'
description: Destination URL to receive a notification when the alert triggers. Set to null to clear.
emailAddresses:
items:
$ref: '#/components/schemas/Email'
type: array
description: A list of email addresses to receive a notification when the alert triggers.
type: object
description: Notifications to send when the alert triggers.
actions:
properties:
surveyId:
type: string
description: ID of an on-demand survey to run. You can use [List all surveys](get-surveys) to get survey IDs.
userScriptId:
type: string
description: 'ID of a user script to run. You can use [List all scripts](list-all-scripts) to get script IDs.
The script must match the platform in the `platform` parameter.'
systemScriptId:
type: string
description: 'ID of a system script to run. You can use [List all scripts](list-all-scripts) to get script IDs.
The script must match the platform in the `platform` parameter.'
type: object
description: Followup actions to run on devices that trigger the alert.
retriggerIntervalSeconds:
type: number
format: double
description: 'The minimum duration between subsequent alert activations.
If the retrigger interval duration has not passed since the last alert activation, then the alert won''t activate even if all conditions are met.'
hitsTimeWindowSeconds:
type: number
format: double
description: The time window in seconds for the `hitsNumber` parameter.
hitsNumber:
type: number
format: double
description: The number of times that the alert conditions (`metrics`) must be met within the specified time window (hitsTimeWindowSeconds) for the alert to trigger.
metrics:
items:
$ref: '#/components/schemas/DesktopAlertMetric'
type: array
description: List of conditions that must be met for the alert to trigger. Multiple conditions are combined with AND operators.
index:
type: string
description: 'The data index used for the alert. The alert conditions in the `metrics` object must be based on fields within this data index.
You can use [List all data indices](get-data-indices) to get a list of indices, and [Get a data index](get-data-index) to see the data within an index.'
platform:
$ref: '#/components/schemas/DesktopPlatform'
description: 'OS platform for followup action script execution. Scripts configured in the actions object must match the platform in this parameter.
Note that this parameter does not control which devices can trigger the alert.
If you don''t want the alert to trigger a script, you can set this to 0.
(0 - No platform selected, 1 - Windows, 2 - macOS, 3 - Linux, 4 - ChromeOS)'
enabled:
type: boolean
description: Whether the alert is enabled.
severity:
$ref: '#/components/schemas/Severity'
description: The alert's severity level.
description:
type: string
description: The alert's description.
name:
type: string
description: The alert's name.
type: object
description: Make all properties in T optional
ServiceNowCustomFields:
description: Custom fields dictionary type for ServiceNow integration.
properties: {}
type: object
additionalProperties:
type: string
ErrorResponseBody_ErrorType_ErrorMessage.Unauthorized.HttpStatusCode.UNAUTHORIZED.ErrorCode.Unauthorized__:
properties:
metadata:
$ref: '#/components/schemas/ErrorResponseMetadata'
error:
$ref: '#/components/schemas/ErrorType_ErrorMessage.Unauthorized.HttpStatusCode.UNAUTHORIZED.ErrorCode.Unauthorized_'
required:
- error
- metadata
type: object
ErrorType_ErrorMessage.NotFound.HttpStatusCode.NOT_FOUND.ErrorCode.NotFound_:
properties:
message:
$ref: '#/components/schemas/ErrorMessage.NotFound'
code:
$ref: '#/components/schemas/ErrorCode.NotFound'
status:
$ref: '#/components/schemas/HttpStatusCode.NOT_FOUND'
data:
additionalProperties: true
type: object
required:
- status
- code
- message
type: object
Pick_DesktopAlertConfigDTO.Exclude_keyofDesktopAlertConfigDTO.sourceName-or-id__:
properties:
integrations:
properties:
servicenow:
properties:
customFields:
$ref: '#/components/schemas/ServiceNowCustomFields'
subcategory:
type: string
category:
type: string
closeNotes:
type: string
closeCode:
type: string
settings:
properties:
autoUpdateTicketState:
type: string
eventMapping:
properties:
resource:
type: string
node:
type: string
alertDescription:
type: string
type: object
type: object
eventSource:
type: string
eventType:
type: string
autoResolveIntervalSeconds:
type: number
format: double
description: 'The duration, in seconds, the system waits after an alert condition has cleared before automatically resolving the associated ServiceNow ticket.
If omitted, the ticket does not automatically resolve.'
urgency:
type: integer
format: int32
description: Urgency level of the ServiceNow ticket.
impact:
type: integer
format: int32
description: Impact level of the ServiceNow ticket.
ticketType:
$ref: '#/components/schemas/ServiceNowTicketType'
description: Type of ServiceNow ticket created. (1 - Incident, 2 - Event)
enabled:
type: boolean
description: Whether the ServiceNow integration is enabled.
required:
- urgency
- impact
- ticketType
- enabled
type: object
description: ServiceNow integration configuration.
type: object
description: Integrations with third-party software.
selfServiceNotification:
properties:
scriptLabel:
type:
- string
- 'null'
description: Custom label for the "Run Script" button shown in the Connect / self-service notification. If empty, a default label is used.
scriptId:
type:
- string
- 'null'
description: ID of a system script offered to the end user through the ControlUp Connect notification. Independent from `actions.systemScriptId`.
message:
type:
- string
- 'null'
description: Custom message displayed to the end user when the self-service notification triggers.
enabled:
type: boolean
description: Whether to trigger a self-service notification on the end user's device when the alert fires.
required:
- enabled
type: object
description: ControlUp Connect / end-user self-service notification settings.
tags:
items:
type: string
type: array
description: 'List of device tags to filter which devices can trigger this alert.
If empty or omitted, the alert applies to all devices.
If set, the alert triggers only for devices that have at least one matching tag.'
notifications:
properties:
webhookUrl:
allOf:
- $ref: '#/components/schemas/URI'
description: Destination URL to receive a notification when the alert triggers. Set to null to clear.
emailAddresses:
items:
$ref: '#/components/schemas/Email'
type: array
description: A list of email addresses to receive a notification when the alert triggers.
type: object
description: Notifications to send when the alert triggers.
actions:
properties:
surveyId:
type: string
description: ID of an on-demand survey to run. You can use [List all surveys](get-surveys) to get survey IDs.
userScriptId:
type: string
description: 'ID of a user script to run. You can use [List all scripts](list-all-scripts) to get script IDs.
The script must match the platform in the `platform` parameter.'
systemScriptId:
type: string
description: 'ID of a system script to run. You can use [List all scripts](list-all-scripts) to get script IDs.
The script must match the platform in the `platform` parameter.'
type: object
description: Followup actions to run on devices that trigger the alert.
retriggerIntervalSeconds:
type: number
format: double
description: 'The minimum duration between subsequent alert activations.
If the retrigger interval duration has not passed since the last alert activation, then the alert won''t activate even if all conditions are met.'
hitsTimeWindowSeconds:
type: number
format: double
description: The time window in seconds for the `hitsNumber` parameter.
hitsNumber:
type: number
format: double
description: The number of times that the alert conditions (`metrics`) must be met within the specified time window (hitsTimeWindowSeconds) for the alert to trigger.
metrics:
items:
$ref: '#/components/schemas/DesktopAlertMetric'
type: array
description: List of conditions that must be met for the alert to trigger. Multiple conditions are combined with AND operators.
index:
type: string
description: 'The data index used for the alert. The alert conditions in the `metrics` object must be based on fields within this data index.
You can use [List all data indices](get-data-indices) to get a list of indices, and [Get a data index](get-data-index) to see the data within an index.'
platform:
$ref: '#/components/schemas/DesktopPlatform'
description: 'OS platform for followup action script execution. Scripts configured in the actions object must match the platform in this parameter.
Note that this parameter does not control which devices can trigger the alert.
If you don''t want the alert to trigger a script, you can set this to 0.
(0 - No platform selected, 1 - Windows, 2 - macOS, 3 - Linux, 4 - ChromeOS)'
enabled:
type: boolean
description: Whether the alert is enabled.
severity:
$ref: '#/components/schemas/Severity'
description: The alert's severity level.
description:
type: string
description: The alert's description.
name:
type: string
description: The alert's name.
required:
- name
- severity
- enabled
- platform
- index
- metrics
- hitsNumber
- hitsTimeWindowSeconds
- retriggerIntervalSeconds
type: object
description: From T, pick a set of properties whose keys are in the union K
ErrorType_ErrorMessage.Unauthorized.HttpStatusCode.UNAUTHORIZED.ErrorCode.Unauthorized_:
properties:
message:
$ref: '#/components/schemas/ErrorMessage.Unauthorized'
code:
$ref: '#/components/schemas/ErrorCode.Unauthorized'
status:
$ref: '#/components/schemas/HttpStatusCode.UNAUTHORIZED'
data:
additionalProperties: true
type: object
required:
- status
- code
- message
type: object
Severity:
enum:
- informational
- low
- medium
- high
- critical
type: string
ErrorCode.Unauthorized:
enum:
- 3
type: number
ErrorType_ErrorMessage.InternalServerError.HttpStatusCode.INTERNAL_SERVER_ERROR.ErrorCode.InternalServerError_:
properties:
message:
$ref: '#/components/schemas/ErrorMessage.InternalServerError'
code:
$ref: '#/components/schemas/ErrorCode.InternalServerError'
status:
$ref: '#/components/schemas/HttpStatusCode.INTERNAL_SERVER_ERROR'
data:
additionalProperties: true
type: object
required:
- status
- code
- message
type: object
DesktopAlertMetric:
properties:
metric:
type: string
description: 'The name of the metric (field) to use for the condition.
You must enter the name of the field as it appears in the data index.'
condition:
$ref: '#/components/schemas/DesktopAlertMetricCondition'
description: Type of comparison. Note that a condition based on a string field must use the `like` condition.
value:
type: string
description: Value to compare against. Numbers can be passed as strings.
required:
- value
- condition
- metric
type: object
DesktopAlertConfigDTO:
properties:
integrations:
properties:
servicenow:
properties:
customFields:
$ref: '#/components/schemas/ServiceNowCustomFields'
subcategory:
type: string
category:
type: string
closeNotes:
type: string
closeCode:
type: string
settings:
properties:
autoUpdateTicketState:
type: string
eventMapping:
properties:
resource:
type: string
node:
type: string
alertDescription:
type: string
type: object
type: object
eventSource:
type: string
eventType:
type: string
autoResolveIntervalSeconds:
type: number
format: double
description: 'The duration, in seconds, the system waits after an alert condition has cleared before automatically resolving the associated ServiceNow ticket.
If omitted, the ticket does not automatically resolve.'
urgency:
type: integer
format: int32
description: Urgency level of the ServiceNow ticket.
impact:
type: integer
format: int32
description: Impact level of the ServiceNow ticket.
ticketType:
$ref: '#/componen
# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/controlup/refs/heads/main/openapi/controlup-alerts-devices-api-openapi.yml