Progress Software Device API

The Device API from Progress Software — 39 operation(s) for device.

Business capability
IT Operations Management BC-600.40

Operations 63

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /api/v1/devices/{deviceId}/attributes/{attributeId} Get one custom attribute on a device · Return individual attribute #
Ask an LLM
“What value does a single custom attribute hold on one of my WhatsUp Gold devices?”
“Can I look up one specific device attribute by its ID?”
Tell an agent
Show attribute {attributeId} on device {deviceId}.
Fetch the name and value of device attribute {attributeId} for {deviceId}.
PUT /api/v1/devices/{deviceId}/attributes/{attributeId} Change an existing device attribute · Update individual attribute #
Ask an LLM
“How can I rename or change the value of an attribute already on a device?”
“Is it possible to edit one existing device attribute without touching the others?”
Tell an agent
Set existing attribute {attributeId} on device {deviceId} to name {name} with value {value}.
Rename attribute {attributeId} on device {deviceId} to {name}.
DELETE /api/v1/devices/{deviceId}/attributes/{attributeId} Delete one attribute from a device · Delete individual attribute #
Ask an LLM
“How do I remove a single custom attribute from a device?”
“Can I delete just one attribute by ID and keep the rest on the device?”
Tell an agent destructive · confirm first
Delete attribute {attributeId} from device {deviceId}.
Remove only the attribute {attributeId} on {deviceId}.
GET /api/v1/devices/{deviceId}/attributes/- List a device's custom attributes · Return list of attributes for device #
Ask an LLM
“Which custom attributes are set on this device?”
“Can I filter a device's attributes by text in the name or the value?”
Tell an agent
List all attributes on device {deviceId}.
Find attributes on device {deviceId} whose name contains {nameContains}.
POST /api/v1/devices/{deviceId}/attributes/- Add a new custom attribute to a device · Add attribute to device #
Ask an LLM
“How do I tag a device with a new name/value attribute?”
“Can I attach a custom attribute like a location or owner to a monitored device?”
Tell an agent
Add attribute {name} with value {value} to device {deviceId}.
Create a new attribute named {name} on device {deviceId}.
DELETE /api/v1/devices/{deviceId}/attributes/- Clear all or matching attributes from a device · Delete all attributes from device #
Ask an LLM
“How do I wipe every custom attribute off a device at once?”
“Can I bulk-remove only the device attributes whose names match a pattern?”
Tell an agent destructive · confirm first
Delete every attribute on device {deviceId}.
Remove all attributes on {deviceId} whose name contains {nameContains}.
PATCH /api/v1/devices/{deviceId}/attributes/- Add, change and remove device attributes in one call · Batch attribute operations (remove, add, modify) for given device #
Ask an LLM
“Can I add new attributes and delete old ones on a device in a single request?”
“Is there a batch way to modify several attributes of one device together?”
Tell an agent
On device {deviceId}, add attributes {attributesToAdd} and delete attributes named {attributeNamesToDelete} in one batch.
Run a batch attribute change on {deviceId} that modifies {attributeToModify}.
DELETE /api/v1/devices/{deviceId}/group/{groupId} Remove a device from one static group · Remove a group assignment for device #
Ask an LLM
“How do I take a device out of a static device group?”
“Why can't I remove a device's last static group or a dynamic group assignment?”
Tell an agent destructive · confirm first
Remove device {deviceId} from group {groupId}.
Unassign group {groupId} from device {deviceId}.
GET /api/v1/devices/{deviceId}/group/- List the groups a device belongs to · Return device group assignments for a device #
Ask an LLM
“Which device groups is this device a member of?”
“Can I filter a device's group memberships by group type?”
Tell an agent
List the groups device {deviceId} is assigned to.
Show {type} group assignments for device {deviceId}.
PUT /api/v1/devices/{deviceId}/group/- Assign a device to a group · Assign group to a device #
Ask an LLM
“How do I put a device into a device group?”
“Can I add a single group assignment to an existing device?”
Tell an agent
Assign device {deviceId} to a device group.
Add a group membership to device {deviceId}.
PATCH /api/v1/devices/{deviceId}/group/- Add and remove several group memberships at once · Batch attribute operations (remove, add) for given device #
Ask an LLM
“Can I move a device between groups by adding and removing memberships in one request?”
“Is there a batch call to change many group assignments for one device?”
Tell an agent
For device {deviceId}, add groups {groupsToAdd} and remove groups {groupsToDelete} in one batch.
Batch-remove group memberships {groupsToDelete} from device {deviceId}.
GET /api/v1/devices/{deviceId}/group/{groupId}/is-member Check whether a device is in a group · Return sucessful if a device is assigned to a group #
Ask an LLM
“Is a particular device a member of a given group?”
“How can I confirm a device was added to a group before running a report?”
Tell an agent
Check if device {deviceId} is a member of group {groupId}.
Confirm group {groupId} membership for {deviceId}.
GET /api/v1/devices/{deviceId}/interfaces/default Get a device's default network interface · Return device's default network interface #
Ask an LLM
“Which network interface is the default one used for a device?”
“What address does a device's primary interface use?”
Tell an agent
Show the default network interface of device {deviceId}.
Get the primary interface address for {deviceId}.
GET /api/v1/devices/{deviceId}/interfaces/{interfaceId} Get one network interface on a device · Return individual network interface #
Ask an LLM
“How do I look up the details of a specific network interface by its ID?”
“Can I see the host name and address configured on one device interface?”
Tell an agent
Show interface {interfaceId} on device {deviceId}.
Fetch network interface {interfaceId} details for {deviceId}.
PUT /api/v1/devices/{deviceId}/interfaces/{interfaceId} Edit a device's network interface · Update individual interface #
Ask an LLM
“How do I change the IP address on an existing device interface?”
“Can I make an existing interface the default or poll it by host name?”
Tell an agent
Change interface {interfaceId} on device {deviceId} to address {address}.
Make interface {interfaceId} the default for device {deviceId}.
DELETE /api/v1/devices/{deviceId}/interfaces/{interfaceId} Delete one network interface from a device · Delete individual interface #
Ask an LLM
“How do I remove a stale network interface from a device?”
“Can I delete one specific interface by its ID?”
Tell an agent destructive · confirm first
Delete interface {interfaceId} from device {deviceId}.
Remove network interface {interfaceId} on {deviceId}.
GET /api/v1/devices/{deviceId}/interfaces/- List a device's network interfaces · Return list of network interfaces for device #
Ask an LLM
“What network interfaces does a device have?”
“Can I search a device's interfaces by address or host name?”
Tell an agent
List the network interfaces on device {deviceId}.
Search interfaces on {deviceId} for {search}.
POST /api/v1/devices/{deviceId}/interfaces/- Add a network interface to a device · Add a network interface to device #
Ask an LLM
“How do I add a second IP address or interface to a monitored device?”
“Can a newly added interface be set as the device's default?”
Tell an agent
Add a network interface with address {address} to device {deviceId}.
Add interface host name {hostName} to {deviceId} and poll it by name.
DELETE /api/v1/devices/{deviceId}/interfaces/- Remove all non-default interfaces from a device · Delete from device, all network interfaces except default interface #
Ask an LLM
“How do I strip every interface except the default one off a device?”
“Is there a way to clear extra network interfaces in one go?”
Tell an agent destructive · confirm first
Delete all network interfaces on device {deviceId} except the default.
Clear the extra interfaces from {deviceId}.
PATCH /api/v1/devices/{deviceId}/interfaces/- Add, change and remove device interfaces in one call · Batch network interface operations (remove, add, modify) for a given device #
Ask an LLM
“Can I add some interfaces and delete others on a device in one batch?”
“Is there a way to remove interfaces by address or host name while adding new ones?”
Tell an agent
On device {deviceId}, add interfaces {interfacesToAdd} and delete those at {addressOrHostNameToDelete} in one batch.
Run a batch interface change on {deviceId} that modifies {interfaceToModify}.
DELETE /api/v1/devices/{deviceId}/credentials/{credentialId} Remove one credential from a device · Remove an assigned credential from a device #
Ask an LLM
“How do I unassign a specific credential from a device?”
“Can I keep active monitors from being orphaned when I remove a device credential?”
Tell an agent destructive · confirm first
Remove credential {credentialId} from device {deviceId}.
Unassign credential {credentialId} from {deviceId} and prevent orphaned active monitors.
GET /api/v1/devices/{deviceId}/credentials/- List credentials assigned to a device · Return assigned credentials for a device #
Ask an LLM
“Which credentials does a device use for polling?”
“Can I see only the SNMP or WMI credentials assigned to a device?”
Tell an agent
List the credentials assigned to device {deviceId}.
Show {type} credentials on {deviceId}.
PUT /api/v1/devices/{deviceId}/credentials/- Assign a credential to a device · Assign a credential to a device #
Ask an LLM
“How do I give a device a credential so it can be polled?”
“Can I attach a new credential to an existing device?”
Tell an agent
Assign a credential to device {deviceId}.
Attach polling credentials to {deviceId}.
DELETE /api/v1/devices/{deviceId}/credentials/- Remove a device's credentials by type · Remove assigned credentials from a device by type #
Ask an LLM
“How do I remove all credentials of one type from a device?”
“Can I clear every credential on a device without naming each ID?”
Tell an agent destructive · confirm first
Remove all {type} credentials from device {deviceId}.
Clear every assigned credential on {deviceId}.
GET /api/v1/devices/{deviceId}/monitors/{assignmentId} Get one monitor assignment on a device · Return monitor assignment for given device #
Ask an LLM
“What are the settings of one specific monitor assigned to a device?”
“Can I check whether a particular monitor assignment is enabled?”
Tell an agent
Show monitor assignment {assignmentId} on device {deviceId}.
Get the details of monitor {assignmentId} for {deviceId}.
PUT /api/v1/devices/{deviceId}/monitors/{assignmentId} Enable, disable or change a device's monitor · Update a monitor assignment on a device #
Ask an LLM
“How do I disable one monitor on a device without removing it?”
“Can I change the active or performance settings of an assigned monitor?”
Tell an agent
Disable monitor assignment {assignmentId} on device {deviceId}.
Set monitor {assignmentId} on {deviceId} to enabled={enabled}.
DELETE /api/v1/devices/{deviceId}/monitors/{assignmentId} Remove one monitor from a device · Remove an assigned monitor from a device #
Ask an LLM
“How do I unassign a single monitor from a device?”
“Can I delete one monitor assignment by its ID?”
Tell an agent destructive · confirm first
Remove monitor assignment {assignmentId} from device {deviceId}.
Delete the monitor {assignmentId} on {deviceId}.
GET /api/v1/devices/{deviceId}/monitors/- List monitors assigned to a device · Return assigned monitors for a device #
Ask an LLM
“Which monitors are watching this device?”
“Can I list only the enabled active monitors on a device?”
Tell an agent
List the monitors assigned to device {deviceId}.
Show only enabled {type} monitors on {deviceId}.
POST /api/v1/devices/{deviceId}/monitors/- Assign a monitor to a device · Assign monitor to a device #
Ask an LLM
“How do I start monitoring a device with an active or performance monitor?”
“Can I assign a monitor to a device by its monitor type name?”
Tell an agent
Assign monitor type {monitorTypeName} to device {deviceId}.
Add a {type} monitor with type ID {monitorTypeId} to {deviceId}.
DELETE /api/v1/devices/{deviceId}/monitors/- Remove monitors from a device by type or search · Remove assigned monitors from device #
Ask an LLM
“How do I remove all passive monitors from a device at once?”
“Can I bulk-unassign monitors on a device that match a search term?”
Tell an agent destructive · confirm first
Remove all {type} monitors from device {deviceId}.
Unassign every monitor on {deviceId} matching {search}.
PATCH /api/v1/devices/{deviceId}/monitors/- Batch-change a device's monitor assignments · Batch modify monitor assignments for given device #
Ask an LLM
“Can I add new monitors and remove old ones on a device in one request?”
“Is there a batch call to change several monitor assignments on a device?”
Tell an agent
On device {deviceId}, add monitor assignments {newAssignments} and remove {remove} in one batch.
Apply monitor assignment changes {assignmentChanges} to {deviceId}.
GET /api/v1/devices/{deviceId}/config/polling Get a device's polling settings · Return the device general polling configuration summary #
Ask an LLM
“How often is a device being polled?”
“What is the current polling interval for one device?”
Tell an agent
Show the polling configuration for device {deviceId}.
Get the polling interval of {deviceId}.
PUT /api/v1/devices/{deviceId}/config/polling Change one device's polling interval · Update device general polling configuration #
Ask an LLM
“How do I make a single device get polled more often?”
“Can I set a custom polling interval in seconds for one device?”
Tell an agent
Set the polling interval of device {deviceId} to {pollingIntervalSeconds} seconds.
Poll {deviceId} every {pollingIntervalSeconds} seconds.
PUT /api/v1/devices/{deviceId}/config/maintenance Put one device into or out of maintenance mode · Update maintenance mode settings for a given device #
Ask an LLM
“How do I put a device in maintenance mode so it stops alerting?”
“Can I set an end time and reason when placing a device in maintenance right now?”
Tell an agent
Put device {deviceId} into maintenance until {endUtc} because {reason}.
Take device {deviceId} out of maintenance mode.
PUT /api/v1/devices/{deviceId}/config/maintenance/schedule Schedule maintenance windows for one device · Update maintenance mode settings for a given device (scheduled) #
Ask an LLM
“Can I schedule recurring maintenance windows for a single device?”
“How do I plan future maintenance for one device instead of starting it now?”
Tell an agent
Set maintenance schedules {schedules} on device {deviceId}.
Schedule a maintenance window for {deviceId}.
PUT /api/v1/devices/{deviceId}/poll-now Poll one device immediately · Request the polling service to poll this device immediately #
Ask an LLM
“How do I force an immediate poll of a device instead of waiting for its interval?”
“Does polling a device now change its regular polling schedule?”
Tell an agent
Poll device {deviceId} right now.
Trigger an immediate poll of {deviceId}.
PATCH /api/v1/devices/-/config/maintenance Put many devices into maintenance mode · Update maintenance mode settings for batch of devices #
Ask an LLM
“Can I put a whole list of devices in maintenance mode at once?”
“How do I end maintenance mode for several devices together?”
Tell an agent
Put devices {devices} into maintenance until {endUtc} with reason {reason}.
Take devices {devices} out of maintenance mode.
PATCH /api/v1/devices/-/config/maintenance/schedule Schedule maintenance windows for many devices · Update maintenance mode settings for a set of devices (scheduled) #
Ask an LLM
“Can I apply the same maintenance schedule to many devices?”
“How do I plan a future maintenance window for a set of devices?”
Tell an agent
Apply maintenance schedules {schedules} to devices {devices}.
Schedule a shared maintenance window for devices {devices}.
PATCH /api/v1/devices/-/config/polling Set the polling interval for many devices · Update a set of devices with general polling configuration #
Ask an LLM
“Can I change the polling interval on a batch of devices in one request?”
“How do I slow down polling for a list of devices?”
Tell an agent
Set the polling interval to {pollingIntervalSeconds} seconds for devices {devices}.
Apply a bulk polling interval change to devices {devices}.
PATCH /api/v1/devices/-/poll-now Poll several devices immediately · Request polling service to poll multiple devices immediately #
Ask an LLM
“Can I force an immediate poll of a list of devices at once?”
“How do I re-poll several devices right after a fix?”
Tell an agent
Poll devices {devices} immediately.
Trigger an immediate bulk poll of {devices}.
GET /api/v1/devices/{deviceId}/properties Get a device's properties · Returns device properties #
Ask an LLM
“What display name, note and SNMP OID are set on a device?”
“Is a device marked as wireless?”
Tell an agent
Show the properties of device {deviceId}.
Get the note and display name for {deviceId}.
PUT /api/v1/devices/{deviceId}/properties Edit one device's properties · Updates the properties on the device #
Ask an LLM
“How do I rename a device's display name?”
“Can I add a note or change the action policy on a single device?”
Tell an agent
Rename device {deviceId} to {displayName}.
Set the note on device {deviceId} to {note}.
PATCH /api/v1/devices/-/properties Edit properties across many devices · Updates the properties on the device #
Ask an LLM
“Can I set the same note or action policy on many devices at once?”
“How do I mark a batch of devices as wireless?”
Tell an agent
Set note {note} on devices {devices}.
Apply action policy {actionPolicy} to devices {devices}.
PUT /api/v1/devices/{deviceId}/refresh Rescan one device to refresh its configuration · Request a device to refresh configuration based on the phyiscal device #
Ask an LLM
“How do I refresh a device's inventory after hardware changes?”
“Can a single-device rescan also refresh its assigned roles?”
Tell an agent
Refresh device {deviceId} from the physical device.
Rescan {deviceId} and drop data older than {dropDataOlderThanHours} hours.
PATCH /api/v1/devices/-/refresh Rescan several devices to refresh configuration · Request a set of devices to refresh configuration based on the phyiscal device #
Ask an LLM
“Can I trigger a discovery rescan of many devices at once?”
“Is there a way to track the status of a bulk device refresh?”
Tell an agent
Refresh devices {deviceIds} from their physical configuration.
Bulk-rescan devices {deviceIds} including assigned roles.
DELETE /api/v1/devices/{deviceId}/roles/{roleId} Remove one role from a device · Remove assigned role from a device #
Ask an LLM
“How do I remove a specific role assignment from a device?”
“Can I unassign one device role by its ID?”
Tell an agent destructive · confirm first
Remove role {roleId} from device {deviceId}.
Unassign device role {roleId} on {deviceId}.
GET /api/v1/devices/{deviceId}/roles/- List the roles assigned to a device · Return roles assignment for a given device #
Ask an LLM
“Which roles, brand and OS are assigned to a device?”
“Can I filter a device's roles by kind?”
Tell an agent
List role assignments for device {deviceId}.
Show {kind} roles on {deviceId}.
PUT /api/v1/devices/{deviceId}/roles/- Assign a role to a device by role ID · Assign a role to a device #
Ask an LLM
“How do I assign an existing device role to a device?”
“Can I attach a role to a device using the role's ID?”
Tell an agent
Assign role {roleId} to device {deviceId}.
Give {deviceId} the device role {roleId}.
DELETE /api/v1/devices/{deviceId}/roles/- Remove a device's roles by kind · Remove device role assignment by role type #
Ask an LLM
“How do I clear all roles of one kind from a device?”
“Can I strip every role assignment off a device at once?”
Tell an agent destructive · confirm first
Remove all {kind} roles from device {deviceId}.
Clear every role assignment on {deviceId}.
PUT /api/v1/devices/{deviceId}/roles/brand Set the brand of one device · Assign a brand to a device #
Ask an LLM
“How do I tell the system which hardware brand a device is?”
“Can I correct the vendor brand detected for one device?”
Tell an agent
Set the brand of device {deviceId} to {brand}.
Assign brand {brand} to {deviceId}.
PATCH /api/v1/devices/-/roles/brand Set the brand on many devices · Assign a brand to multiple devices #
Ask an LLM
“Can I assign the same brand to a list of devices in one call?”
“How do I bulk-correct the vendor brand on several devices?”
Tell an agent
Assign brand {name} to devices {devices}.
Bulk-set the brand of {devices} to {name}.
PUT /api/v1/devices/{deviceId}/roles/os Set the operating system of one device · Assign operating system to a device #
Ask an LLM
“How do I mark which operating system a device runs?”
“Can I override the OS detected for a single device?”
Tell an agent
Set the operating system of device {deviceId} to {osName}.
Assign OS {osName} to {deviceId}.
PATCH /api/v1/devices/-/roles/os Set the operating system on many devices · Assign a operating system to multiple devices #
Ask an LLM
“Can I assign one operating system to a batch of devices?”
“How do I bulk-correct the OS for several devices?”
Tell an agent
Assign operating system {name} to devices {devices}.
Bulk-set the OS of {devices} to {name}.
PUT /api/v1/devices/{deviceId}/roles/primary Set the primary role of one device · Assign primary role to a device #
Ask an LLM
“How do I mark a device's primary role, such as router or server?”
“Can I change the primary role assigned to a single device?”
Tell an agent
Set the primary role of device {deviceId} to {primary}.
Assign primary role {primary} to {deviceId}.
PATCH /api/v1/devices/-/roles/primary Set the primary role on many devices · Assign a primary role to multiple devices #
Ask an LLM
“Can I assign the same primary role to a list of devices?”
“How do I bulk-change the primary role for several devices?”
Tell an agent
Assign primary role {name} to devices {devices}.
Bulk-set the primary role of {devices} to {name}.
PUT /api/v1/devices/{deviceId}/roles/sub-role Add or remove sub-roles on one device · Sub role operations on a device #
Ask an LLM
“How do I add sub-roles to a single device?”
“Can I remove specific sub-roles from one device?”
Tell an agent
Apply sub-role operation {operation} with sub-roles {subroles} to device {deviceId}.
Add sub-roles {subroles} to {deviceId}.
PATCH /api/v1/devices/-/roles/sub-role Add or remove sub-roles on many devices · Perform a sub role operation on multiple devices #
Ask an LLM
“Can I add the same sub-roles to a batch of devices?”
“How do I strip a sub-role from several devices at once?”
Tell an agent
Run sub-role operation {operation} with {subroles} on devices {devices}.
Bulk-add sub-roles {subroles} to devices {devices}.
GET /api/v1/devices/{deviceId}/config/template Export a device's configuration template · Returns a template for the device #
Ask an LLM
“How can I export a device's settings, credentials, monitors and groups as a template?”
“Can a device template include layer 2 data?”
Tell an agent
Export the configuration template for device {deviceId}.
Get the template of {deviceId} with options {options}.
PATCH /api/v1/devices/-/config/template Create devices from configuration templates · Apply a set of device templates #
Ask an LLM
“Can I create new devices by applying exported device templates?”
“What happens when a device template can only be partly applied?”
Tell an agent
Apply device templates {templates} to create new devices.
Create devices from templates {templates} with options {options}.
GET /api/v1/devices/{deviceId} Get an overview of a device · Return device overview for a given device #
Ask an LLM
“What does WhatsUp Gold know about a given device at a glance?”
“Can I get a summary view of one device by its ID?”
Tell an agent
Show the overview of device {deviceId}.
Get the {view} view of device {deviceId}.
DELETE /api/v1/devices/{deviceId} Delete a device · Remove a given device #
Ask an LLM
“How do I remove a device from monitoring entirely?”
“Can deleting a device also remove its discovered devices?”
Tell an agent destructive · confirm first
Delete device {deviceId}.
Remove device {deviceId} along with its discovered devices.
GET /api/v1/devices/{deviceId}/status Check whether a device is up or down · Return status for the device. This does not include all of the monitor status #
Ask an LLM
“Is this device currently up or down?”
“What is a device's overall state, not counting every monitor?”
Tell an agent
Show the current status of device {deviceId}.
Check whether {deviceId} is up.
PATCH /api/v1/devices/- Run a bulk operation such as removal on many devices · Operate on a set of devices #
Ask an LLM
“Can I remove a whole list of devices in one request?”
“When I bulk-remove devices, can their discovered devices be removed too?”
Tell an agent destructive · confirm first
Run bulk device operation {operation} on devices {devices}.
Bulk-remove devices {devices} from monitoring.

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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/progress-software:progress-software-device-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

progress-software-device-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: v1
  title: WhatsUp Gold Device API
  x-logo:
    url: images/wug_logo.svg
  description: '**Version 2026.0**


    *Use WhatsUp Gold REST API to deploy network and device monitoring and management scripts.*


    !'
servers:
- url: https://10.40.67.158:9644
tags:


# --- truncated at 32 KB (149 KB total) ---
# Full source: https://artifacts.apis.io/progress-software/openapi/progress-software-device-api-openapi.yml