WhatsUp Gold REST API

The WhatsUp Gold REST API is the automation interface of Progress WhatsUp Gold network monitoring, served from the customer's own WhatsUp Gold host on port 9644. It covers device discovery and management, credentials, monitors and monitor assignments, groups, alert centre, reports, polling and product configuration. The published contract is Swagger 2.0 with 168 operations across 121 paths and 299 model definitions, secured with an OAuth 2.0 password grant.

Operations 168

GET /api/v1/credentials/{credentialId} Return a credential #
PUT /api/v1/credentials/{credentialId} Update credential with new values #
DELETE /api/v1/credentials/{credentialId} Remove credential from credential library #
GET /api/v1/credentials/{credentialId}/assignments/- Return a credential #
DELETE /api/v1/credentials/{credentialId}/assignments/- Remove assigned credential from all devices user has access to #
GET /api/v1/credentials/- Return page of credentials from credential library #
POST /api/v1/credentials/- Add credential to library #
GET /api/v1/credentials/-/helper Return information to help creating credential #
GET /api/v1/credentials/-/assignments/- Return information about credential assignments #
GET /api/v1/credentials/{credentialId}/config/template Return a template for a credential #
GET /api/v1/credentials/-/config/template Return set of credential templates #
PATCH /api/v1/credentials/-/config/template Apply credential templates #
GET /api/v1/devices/{deviceId}/attributes/{attributeId} Return individual attribute #
PUT /api/v1/devices/{deviceId}/attributes/{attributeId} Update individual attribute #
DELETE /api/v1/devices/{deviceId}/attributes/{attributeId} Delete individual attribute #
GET /api/v1/devices/{deviceId}/attributes/- Return list of attributes for device #
POST /api/v1/devices/{deviceId}/attributes/- Add attribute to device #
DELETE /api/v1/devices/{deviceId}/attributes/- Delete all attributes from device #
PATCH /api/v1/devices/{deviceId}/attributes/- Batch attribute operations (remove, add, modify) for given device #
DELETE /api/v1/devices/{deviceId}/group/{groupId} Remove a group assignment for device #
GET /api/v1/devices/{deviceId}/group/- Return device group assignments for a device #
PUT /api/v1/devices/{deviceId}/group/- Assign group to a device #
PATCH /api/v1/devices/{deviceId}/group/- Batch attribute operations (remove, add) for given device #
GET /api/v1/devices/{deviceId}/group/{groupId}/is-member Return sucessful if a device is assigned to a group #
GET /api/v1/devices/{deviceId}/interfaces/default Return device's default network interface #
GET /api/v1/devices/{deviceId}/interfaces/{interfaceId} Return individual network interface #
PUT /api/v1/devices/{deviceId}/interfaces/{interfaceId} Update individual interface #
DELETE /api/v1/devices/{deviceId}/interfaces/{interfaceId} Delete individual interface #
GET /api/v1/devices/{deviceId}/interfaces/- Return list of network interfaces for device #
POST /api/v1/devices/{deviceId}/interfaces/- Add a network interface to device #
DELETE /api/v1/devices/{deviceId}/interfaces/- Delete from device, all network interfaces except default interface #
PATCH /api/v1/devices/{deviceId}/interfaces/- Batch network interface operations (remove, add, modify) for a given device #
DELETE /api/v1/devices/{deviceId}/credentials/{credentialId} Remove an assigned credential from a device #
GET /api/v1/devices/{deviceId}/credentials/- Return assigned credentials for a device #
PUT /api/v1/devices/{deviceId}/credentials/- Assign a credential to a device #
DELETE /api/v1/devices/{deviceId}/credentials/- Remove assigned credentials from a device by type #
GET /api/v1/devices/{deviceId}/monitors/{assignmentId} Return monitor assignment for given device #
PUT /api/v1/devices/{deviceId}/monitors/{assignmentId} Update a monitor assignment on a device #
DELETE /api/v1/devices/{deviceId}/monitors/{assignmentId} Remove an assigned monitor from a device #
GET /api/v1/devices/{deviceId}/monitors/- Return assigned monitors for a device #
POST /api/v1/devices/{deviceId}/monitors/- Assign monitor to a device #
DELETE /api/v1/devices/{deviceId}/monitors/- Remove assigned monitors from device #
PATCH /api/v1/devices/{deviceId}/monitors/- Batch modify monitor assignments for given device #
GET /api/v1/devices/{deviceId}/config/polling Return the device general polling configuration summary #
PUT /api/v1/devices/{deviceId}/config/polling Update device general polling configuration #
PUT /api/v1/devices/{deviceId}/config/maintenance Update maintenance mode settings for a given device #
PUT /api/v1/devices/{deviceId}/config/maintenance/schedule Update maintenance mode settings for a given device (scheduled) #
PUT /api/v1/devices/{deviceId}/poll-now Request the polling service to poll this device immediately #
PATCH /api/v1/devices/-/config/maintenance Update maintenance mode settings for batch of devices #
PATCH /api/v1/devices/-/config/maintenance/schedule Update maintenance mode settings for a set of devices (scheduled) #
PATCH /api/v1/devices/-/config/polling Update a set of devices with general polling configuration. #
PATCH /api/v1/devices/-/poll-now Request polling service to poll multiple devices immediately #
GET /api/v1/devices/{deviceId}/properties Returns device properties #
PUT /api/v1/devices/{deviceId}/properties Updates the properties on the device #
PATCH /api/v1/devices/-/properties Updates the properties on the device #
PUT /api/v1/devices/{deviceId}/refresh Request a device to refresh configuration based on the phyiscal device #
PATCH /api/v1/devices/-/refresh Request a set of devices to refresh configuration based on the phyiscal device #
DELETE /api/v1/devices/{deviceId}/roles/{roleId} Remove assigned role from a device #
GET /api/v1/devices/{deviceId}/roles/- Return roles assignment for a given device #
PUT /api/v1/devices/{deviceId}/roles/- Assign a role to a device #
DELETE /api/v1/devices/{deviceId}/roles/- Remove device role assignment by role type #
PUT /api/v1/devices/{deviceId}/roles/brand Assign a brand to a device #
PATCH /api/v1/devices/-/roles/brand Assign a brand to multiple devices #
PUT /api/v1/devices/{deviceId}/roles/os Assign operating system to a device #
PATCH /api/v1/devices/-/roles/os Assign a operating system to multiple devices #
PUT /api/v1/devices/{deviceId}/roles/primary Assign primary role to a device #
PATCH /api/v1/devices/-/roles/primary Assign a primary role to multiple devices #
PUT /api/v1/devices/{deviceId}/roles/sub-role Sub role operations on a device #
PATCH /api/v1/devices/-/roles/sub-role Perform a sub role operation on multiple devices #
GET /api/v1/devices/{deviceId}/config/template Returns a template for the device. #
PATCH /api/v1/devices/-/config/template Apply a set of device templates #
GET /api/v1/devices/{deviceId} Return device overview for a given device #
DELETE /api/v1/devices/{deviceId} Remove a given device #
GET /api/v1/devices/{deviceId}/status Return status for the device. This does not include all of the monitor status. #
PATCH /api/v1/devices/- Operate on a set of devices #
GET /api/v1/device-groups/- Return a list of groups #
GET /api/v1/device-groups/{groupId} Returns the summary data for a given device group. #
DELETE /api/v1/device-groups/{groupId} Delete a group. Group must have no child groups or devices #
GET /api/v1/device-groups/{groupId}/definition Retrieve a device group definition #
PUT /api/v1/device-groups/{groupId}/definition Update the device group definition #
POST /api/v1/device-groups/{groupId}/child Add a new child device group to a parent group #
GET /api/v1/device-groups/{groupId}/children Return the child groups given a device group #
PUT /api/v1/device-groups/{groupId}/poll-now Request the polling service to poll all devices in a group immediately #
PUT /api/v1/device-groups/{groupId}/refresh Request the discovery service to refresh all devices in a group immediately #
PUT /api/v1/device-groups/{groupId}/newDevice Add a new device to be monitored #
PATCH /api/v1/device-groups/{groupId}/newDevice Bulk add of new devices to be monitored #
GET /api/v1/device-groups/{groupId}/status Returns the overall status summary across all devices in a group. #
GET /api/v1/device-groups/{groupId}/devices Returns the summary data for a given device group. #
GET /api/v1/device-groups/{groupId}/devices/- Returns the summary data for a given device group. #
POST /api/v1/device-groups/{groupId}/devices/- Add a set of devices to a group. #
DELETE /api/v1/device-groups/{groupId}/devices/- Remove a set of devices from a group #
DELETE /api/v1/device-groups/{groupId}/devices/{deviceId} Remove a device from group #
GET /api/v1/device-groups/{groupId}/devices/-/config/template Returns the device templates for the devices in a group #
GET /api/v1/device-groups/{groupId}/devices/-/credentials Return the child groups given a device group #
PUT /api/v1/device-groups/{groupId}/roles/brand Assign a brand to a device #
PUT /api/v1/device-groups/{groupId}/roles/os Assign operating system to a device #
PUT /api/v1/device-groups/{groupId}/roles/primary Assign primary role to a device #
PUT /api/v1/device-groups/{groupId}/roles/sub-role Sub role operations on a device #
GET /api/v1/device-groups/{groupId}/devices/reports/cpu-utilization Return CPU utilization report for device group #
GET /api/v1/device-groups/{groupId}/devices/reports/disk-free-space Return disk free space report for device group #
GET /api/v1/device-groups/{groupId}/devices/reports/disk-utilization Return disk utilization report for device group #
GET /api/v1/device-groups/{groupId}/devices/reports/interface-discards Return interface discards report for device group #
GET /api/v1/device-groups/{groupId}/devices/reports/interface-errors Return interface errors report for device group #
GET /api/v1/device-groups/{groupId}/devices/reports/interface-traffic Return interface traffic report for device group #
GET /api/v1/device-groups/{groupId}/devices/reports/interface-utilization Return interface utilization report for device group #
GET /api/v1/device-groups/{groupId}/devices/reports/memory-utilization Return memory utilization report for device group #
GET /api/v1/device-groups/{groupId}/devices/reports/ping-availability Return ping availability report for device group #
GET /api/v1/device-groups/{groupId}/devices/reports/ping-response-time Return ping response time report for device group #
GET /api/v1/device-groups/{groupId}/devices/reports/state-change Return the state change time line for device group #
GET /api/v1/device-groups/{groupId}/devices/reports/device-maintenance-mode Return the maintenance mode for device group #
GET /api/v1/devices/{deviceId}/reports/cpu-utilization Return CPU utilization report for a device #
GET /api/v1/devices/{deviceId}/reports/disk-free-space Return disk free space report for a device #
GET /api/v1/devices/{deviceId}/reports/disk-utilization Return disk utilization report for a device #
GET /api/v1/devices/{deviceId}/reports/interface-discards Return interface discards report for a device #
GET /api/v1/devices/{deviceId}/reports/interface-errors Return interface errors report for a device #
GET /api/v1/devices/{deviceId}/reports/interface-traffic Return interface traffic report for a device #
GET /api/v1/devices/{deviceId}/reports/interface-utilization Return interface utilization report for a device #
GET /api/v1/devices/{deviceId}/reports/memory-utilization Return memory utilization report for a device #
GET /api/v1/devices/{deviceId}/reports/ping-availability Return disk ping availability report for a device #
GET /api/v1/devices/{deviceId}/reports/ping-response-time Return ping response time report for a device #
GET /api/v1/devices/{deviceId}/reports/state-change Device state change timeline report #
GET /api/v1/device-role/{roleId} Return device role information #
DELETE /api/v1/device-role/{roleId} Delete a role from the library #
GET /api/v1/device-role/{roleId}/config/template Return template for a device role #
PUT /api/v1/device-role/{roleId}/enable Enable a device role for use #
PUT /api/v1/device-role/{roleId}/disable Disable a role from being used #
PUT /api/v1/device-role/{roleId}/restore Restore system role to shipped defaults #
GET /api/v1/device-role/{roleId}/assignments/- Returns role assignments to devices #
GET /api/v1/device-role/-/assignments/- Returns all role assignments to devices #
GET /api/v1/device-role/- Return set of device roles #
GET /api/v1/device-role/-/config/template Return set of device role templates #
PATCH /api/v1/device-role/-/config/template Apply multiple device role templates #
POST /api/v1/device-role/-/config/export/content Inventory of a package based on options #
POST /api/v1/device-role/-/config/export Generate a package for delivery to another WhatsUp Gold System #
POST /api/v1/device-role/-/config/import/verify Inventory/Verify the contents of the a package #
POST /api/v1/device-role/-/config/import Apply a package #
GET /api/v1/device-role/-/percentVariables Return a list of percent variables by type #
GET /api/v1/device-scan/{scanId}/devices Return devices updated using scanned data. #
GET /api/v1/device-scan/{scanId}/status Return current status #
PUT /api/v1/device-scan/{scanId}/cancel Request a active scan to be canceled #
GET /api/v1/device-scan/-/status Status for each scan #
GET /api/v1/errors/{errorType} Utility method to test how errors are handled. #
GET /api/v1/monitors/{monitorId}/assignments/- Get monitor assignments for a single monitor #
DELETE /api/v1/monitors/{monitorId}/assignments/- Delete assignments for a monitor #
GET /api/v1/monitors/-/assignments/- Get active monitor assignments for a single monitor #
DELETE /api/v1/monitors/-/assignments/- Delete assignments for a monitor #
GET /api/v1/monitors/{monitorId} Return single monitor #
PUT /api/v1/monitors/{monitorId} Update a monitor's configuration #
DELETE /api/v1/monitors/{monitorId} Delete a monitor #
GET /api/v1/monitors/- Return set of monitors #
POST /api/v1/monitors/- Add to the monitor library #
DELETE /api/v1/monitors/- Delete a set of monitors #
PATCH /api/v1/monitors/- Do multiple operations against the monitor library #
GET /api/v1/monitors/-/config/supported-types Return set of supported monitor types #
GET /api/v1/monitors/{monitorId}/config/template Return template for a monitor #
GET /api/v1/monitors/-/config/template Return set of monitor templates #
PATCH /api/v1/monitors/-/config/template Apply multiple monitor templates #
GET /api/v1/pollers Get All configured pollers and their status #
POST /api/v1/pollers Create a new poller #
GET /api/v1/pollers/{pollerId} Get a single Poller by ID #
PUT /api/v1/pollers/{pollerId} Update poller config #
DELETE /api/v1/pollers/{pollerId} Remove poller config #
POST /api/v1/pollers/by-name/{name} Create a new poller (called by the Scalability Poller Install to ensure there is a poller with the given name) If there is already a poller with the given name, it is returned inst #
GET /api/v1/product/api Return current API version and information #
GET /api/v1/product/version Return product version information #
GET /api/v1/product/whoAmI Return current user information #
GET /api/v1/product/installationId Returns an ID uniquely identifying this install of WUG #
GET /api/v1/product/timezone Gets the Local Timezone of the WUG Server #

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-whatsup-gold"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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-whatsup-gold-openapi-original.json Raw ↑
{
 "swagger": "2.0",
 "info": {
  "version": "v1",
  "title": "WhatsUp Gold API",
  "x-logo": {
   "url": "images/wug_logo.svg"
  },
  "description": "**Version 2026.0**\n\n\n       \n       *Use WhatsUp Gold REST API to deploy network and device monitoring and management scripts.*\n\n           \n       \n![ Contexts ](images/Contexts.png)\n \n             \n       # Overview\n\n\n       \n       The REST API enables you to connect systems and\n       clients to WhatsUp Gold using simple HTTP calls. In general, REST APIs\n       are language and platform-independent and your best choice to\n       converge information systems, circumvent the unending need for\n       client-server dependency maintenance, and span any combination of\n       environments (including IoT, mobile, and much more).\n\n       \n       \n       > **Tip**\n       The REST API runs at the WhatsUp Gold Server (for example: https://`your-WhatsUp-Gold-server`:9644/api/v1/).\n\n\n       \n       > **Note**\n       In general, this REST API expects the following verbs: GET (query record), POST (create record), PUT (update record), PATCH (batch modify/update record), or DELETE (remove record).\n\n\n       \n       Num     | This REST Endpoint                                     | Provides These Resources\n \n       ------- | ------------------------------------------------------ | -----------------------------------------------------------\n\n       **1.**  | [`/api/v1/token`]( #section/Handling-Session-Tokens )  | Get, renew, refresh a session token.\n\n       **2.**  | [`/api/v1/credentials`]( #tag/Credential )             | Create, return, update or delete a credential.\n\n       **3.**  | [`/api/v1/device-groups`]( #tag/DeviceGroup )          | Create, return, update or delete a device group.\n\n       **4.**  | [`/api/v1/devices`]( #tag/Devices )                    | Manage, monitor, and poll devices in WhatsUp Gold.\n\n       **5.**  | [`/api/v1/device-role/`]( #tag/DeviceRole )            | Create, return, update or delete a device's role category.\n\n       **6.**  | [`/api/v1/product`]( #tag/Product )                    | Get product and versioning information.\n\n       **7.**  | [`/api/v1/devices/{deviceId}/reports/`]( #tag/DeviceReport ) [`/api/v1/device-groups/{groupId}/devices/reports/`]( #tag/DeviceGroupReport ) | Get a report for a given device or group of devices\n\n       **8.**  | [`/api/v1/errors/`]( #tag/Error )                      | Utility endpoint for getting error template information.\n \n       **9.**  | [`/api/v1/monitors/`]( #tag/Monitor )                  | Get, configure, and apply monitor templates.\n\n       **10.** | [`/api/v1/swagger/`]( #section/Before-You-Begin/Interactive-REST-API-Client-Swagger-UI )                   | Live Swagger UI interactive documentation (WhatsUp Gold installation required).\n\n       \n       # Before You Begin\n\n       \n       Before you begin using the WhatsUp Gold RESTful API, you will need the following:\n       \n       - The hostname for a deployed WhatsUp Gold system.\n       \n       - Username and password for a user on the target WhatsUp Gold system.\n       \n       - Your favorite HTTP client (the examples that follow use the cURL utility).\n\n\n       \n       Listener     | URL                                                           | Purpose \n \n       ------------ | ------------------------------------------------------------- | ------------------------------\n\n       Swagger UI   | `https://<your-WhatsUp-Gold-server>:9644/swagger/ui/index#/`  | Browsable/interactive UI service available for exercising the REST API.\n\n       REST API     | `https://<your-WhatsUp-Gold-server>:9644/swagger/api/v1`      | Primary REST API URL. \n\n       Swagger API Specification and Documentation | `https://<your-WhatsUp-Gold-server>:9644/swagger/docs/v1` | Swagger specification.\n\n       \n       ## A quick check of the API\n       \n       If you are unsure whether or not the REST API is already listening for\n       requests at the WhatsUp Gold host, here is a quick check. Type into\n       your web browser\n       `https://<your-WhatsUp-Gold-server-host>:9644/swagger/docs/v1`. (Where\n       `<your-WhatsUp-Gold-server-host>` is the hostname of the WhatsUp Gold\n       system.) If this call returns a JSON object, your API is running, and\n       you can begin the steps that follow using this hostname.\n       \n       > **Tip**\n       You can also use the Swagger spec object (`https://<your-WhatsUp-Gold-server>:9644/swagger/docs/v1/`) in tools such as Postman, Swagger Inspector, and more.\n\n       \n       ## Interactive REST API Client - Swagger UI\n\n       \n       Swagger UI libraries integrated with WhatsUp Gold at install time\n       provide the following:\n\n       \n       -   A way to browse the WhatsUp Gold REST documentation with live\n           examples.\n       \n       -   A simple development client for testing WhatsUp Gold REST calls.\n\n       \n       > **Caution**\n       The examples in the Swagger UI are live calls (not simulated) that run against your WhatsUp Gold Environment. If you are just testing and exploring the\n       capabilities of the REST API for development purposes, it is best practice to run against a non-production instance of WhatsUp Gold.\n       \n       \nTo open the interactive WhatsUp Gold REST client:\n\n       \n       1.  Open a browser to `https://my-whatsup-gold-host:9644/swagger/`\n\n           --Where `my-whatsup-gold-host` is the host where you installed\n           WhatsUp Gold\n\n           \n       2.  Add your user/password pair like so: *myusername* **:** *mypassword*\n\n       \n       3.  Click the **Login** button.\n\n       \n       4.  Browse and build queries and view JSON result objects.\n\n       \n![SwaggerUI](images/SwaggerUI.png)\n       \n       # Getting Started\n\n       \n       This section walks you through how to fetch user properties for the\n       current user. \n\n\n       \n       >**Tip** If you are running an API token request against a non-production host\n       with a self-signed SSL certificate needed to run HTTPS, remember to set the flag to ignore the self-signed certificate warning. (In the cURL example shown below this is the `-k` option.) \n\n\n       \n       To set your session up with the WhatsUp Gold RESTful API, you must\n       retrieve an access token. Syntax, usage, and fields supported by the\n       token endpoint are detailed in [Retrieve API Token](#_transfer-token).\n\n       \n       ```\n\n       curl -k --request POST --url https://my-whatsup-gold-host:9644/api/v1/token --data \"grant_type=password&username=emmacurtis&password=1a2B3cA1b2C3\"\n\n       ```\n\n       \n       \n### Example Output\n\n       \n       ```\n\n       {\n\n             \t\"access_token\": \"X03w.....dziTwmA\",\n\n             \t\"token_type\": \"bearer\",\n\n             \t\"expires_in\": 86399,\n\n             \t\"refresh_token\": \"X03w.....dziTwmA\"\n\n       }\n\n       ```\n\n\n       \n       --Where `my-whatsup-gold-host` is the hostname where your WhatsUp Gold\n       UI is running.  \n\n       --And, where you supply values for the username and password (such as\n       the WhatsUp Gold user you created for this RESTful client application).\n\n       \n       Now, pass the access token as a header argument, type &quot;Bearer&quot; and get\n\n       your user information.\n       \n       ``` \n\n       curl -X GET --header 'Accept: application/json' --header 'Authorization: Bearer X03w.....dziTwmA' 'http://my-whatsup-gold-host:9644/api/v1/device-groups/0/devices'\n\n       ```\n\n\n       \n       --Where `my-whatsup-gold-host` is the hostname where your WhatsUp Gold\n       WebUI is running.  \n\n       --And, where you should replace the placeholder string `X03w....dziTwmA`\n       with your 278 Byte access token. \n  \n       --And, where a group ID of zero ('0') denotes the entire body of devices\n       managed by MY NETWORK. \n\n       \n       ### Example Output\n\n       \n       ```\n\n\n           {\n\n             \t\"paging\": {\n\n             \t\t\"size\": 96\n\n             \t},\n\n             \t\"data\": {\n\n               \t\t\"devices\": [\n\n                  \t\t{\n\n                   \t\t \"hostName\": \"192.168.37.1\",\n\n                   \t\t \"networkAddress\": \"192.168.37.1\",\n\n                   \t\t\"bestState\": \"Up\",\n\n                   \t\t\"worstState\": \"Up\",\n\n                   \t\t \"name\": \"192.168.37.1\",\n\n                   \t\t \"id\": \"14\"\n\n               \t\t  },\n\n               \t\t  {\n\n               \t\t  \"hostName\": \"192.168.37.100\",\n\n               \t\t  \"networkAddress\": \"192.168.37.100\",\n\n               \t\t  \"bestState\": \"Maintenance\",\n\n               \t\t  \"worstState\": \"Maintenance\",\n\n               \t\t  \"name\": \"192.168.37.100\",\n\n               \t\t  \"id\": \"16\"\n\n                 \t\t}, ... ]\n\n                 [list shortened for purposes of documentation]\n\n          \t }\n\n         ```\n\n           \n       # Handling Session Tokens\n\n       \n       Before you can be authorized to access WhatsUp Gold resources using this\n       RESTful API, you must request an access token. Only authenticated\n       clients can fetch or renew an access token.\n\n       \n       ## Request/refresh an access token\n\n       \n       HTTPS sessions with WhatsUp Gold begin with a token request. It must be\n       sent as an HTTP POST.\n\n       \n           `POST /api/v{version}/token`\n       \n       ### *Example*\n\n       \n       > **Tip** If you are running an API token request against a non-production host with a self-signed SSL certificate needed to run HTTPS, remember to set the flag to ignore the self-signed certificate warning. (In the cURL example shown below this is the `-k` option.)\n\n        \n       ```\n\n       curl -k --request POST --url https://my-whatsup-gold-host/api/v1/token --data \"grant_type=password&username=${username}&password=${password}\" \n\n       ```\n\n       --Where `my-whatsup-gold-host` is the hostname where your WhatsUp Gold\n       WebUI is running.\n\n       --And, where `${username}` and `${password}` are the username and\n       password you created for the current client application.\n\n\n       \n       >**Note** For logging purposes, it is best practice to create an new API user using the WhatsUp Gold WebUI.\n\n       \n       ## Token response messages\n\n       \n       Response Content Type: application/json\n\n       \n       HTTP Status Code | Meaning                                  | Response Model\n \n       ---------------- | -----------------------------------------| -----------------------------------------------------------\n\n       200              | SUCCESS                                  | `{ \"access_token\": \"_acaxffz2p3cl1ek8...\", \"token_type\": \"bearer\", \"expires_in\": 86399, \"refresh_token\": \"_ACAXFFZ2P3CL1EK8U,,,\" }`\n\n       400 \t        | BAD REQUEST                              | `{ \"error\": \"invalid_grant\", \"error_description\": \"Invalid username/password or not allowed to sign on from this location.\" }`\n\n       \n       ## Use token in request \n\n       \n       After you get your session token you can use the token in subsequent requests. You pass the token in the HTTP header as type Bearer. \n       For example, to get information such as user directory, name, user ID, and more for the current user, you would send this cURL GET request \n       that passes the token using the -H option.\n\n       \n       ### *Example*\n\n       ```\n\n           curl -X GET --header 'Accept: application/json' --header 'Authorization: Bearer X03w....dziTwmA' 'http://my-whatsup-gold-host:9644/api/v1/device-groups/0/devices'\n\n       ```\n\n       --Where `my-whatsup-gold-host` is the hostname where your WhatsUp Gold WebUI is running.\n\n\t   \n\t   # Paging through REST API calls \n\n\t   Any time a call potentially returns a large number of results, WhatsUp Gold uses the paging model to return those results to the user. The paging model consists of two parameters: limit and pageId. Limit controls the number of objects returned in each call and is defaulted to the optimal amount of data for the service to gather and return. When working with REST APIs, limit can be reduced by requesting fewer results, but it cannot be increased beyond the optimal size. The pageId is a token which starts out as empty to begin a request. In each return request header, there is a nextPageId which the token used in the next request for data to continue the query. The same parameters must be used in each request to successfully continue the query. All available data has been received when the nextPageId is empty. \n\n\n\t   >**Note** The pageId should not be interpreted or changed and may change from release to release. \n\n       "
 },
 "host": "10.40.67.158:9644",
 "schemes": [
  "https"
 ],
 "paths": {
  "/api/v1/credentials/{credentialId}": {
   "get": {
    "tags": [
     "Credential"
    ],
    "summary": "Return a credential",
    "operationId": "Credential_Get",
    "consumes": [],
    "produces": [
     "application/json",
     "text/json"
    ],
    "parameters": [
     {
      "name": "credentialId",
      "in": "path",
      "description": "ID of the credential",
      "required": true,
      "type": "string"
     },
     {
      "name": "view",
      "in": "query",
      "description": "type of credential information being requested, default=basic",
      "required": false,
      "type": "string",
      "enum": [
       "id",
       "basic",
       "summary",
       "details"
      ]
     },
     {
      "name": "Authorization",
      "in": "header",
      "description": "oauth2 access_token",
      "required": true,
      "type": "string"
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "schema": {
       "$ref": "#/definitions/Result[Credential]"
      }
     }
    },
    "security": [
     {
      "oauth2": []
     }
    ]
   },
   "put": {
    "tags": [
     "Credential"
    ],
    "summary": "Update credential with new values",
    "description": "The following fields have restrictions\r\n* Name - must be unique, lowercase compare\r\n            \r\n**Note:** The property bag entries are minimally validated.\r\n      It is the responsibility of the caller to ensure a credential is filled in with all data and usable.",
    "operationId": "Credential_UpdateCredential",
    "consumes": [
     "application/json",
     "text/json"
    ],
    "produces": [
     "application/json",
     "text/json"
    ],
    "parameters": [
     {
      "name": "credentialId",
      "in": "path",
      "description": "ID of credential to be modified",
      "required": true,
      "type": "string"
     },
     {
      "name": "credential",
      "in": "body",
      "description": "new values for credential",
      "required": true,
      "schema": {
       "$ref": "#/definitions/CredentialModify"
      }
     },
     {
      "name": "Authorization",
      "in": "header",
      "description": "oauth2 access_token",
      "required": true,
      "type": "string"
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "schema": {
       "$ref": "#/definitions/SuccessResult"
      }
     }
    },
    "security": [
     {
      "oauth2": []
     }
    ]
   },
   "delete": {
    "tags": [
     "Credential"
    ],
    "summary": "Remove credential from credential library",
    "operationId": "Credential_DeleteCredential",
    "consumes": [],
    "produces": [
     "application/json",
     "text/json"
    ],
    "parameters": [
     {
      "name": "credentialId",
      "in": "path",
      "description": "ID of the credential",
      "required": true,
      "type": "string"
     },
     {
      "name": "Authorization",
      "in": "header",
      "description": "oauth2 access_token",
      "required": true,
      "type": "string"
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "schema": {
       "$ref": "#/definitions/SuccessResult"
      }
     }
    },
    "security": [
     {
      "oauth2": []
     }
    ]
   }
  },
  "/api/v1/credentials/{credentialId}/assignments/-": {
   "get": {
    "tags": [
     "Credential"
    ],
    "summary": "Return a credential",
    "operationId": "Credential_GetAssignments",
    "consumes": [],
    "produces": [
     "application/json",
     "text/json"
    ],
    "parameters": [
     {
      "name": "credentialId",
      "in": "path",
      "description": "ID of the credential",
      "required": true,
      "type": "string"
     },
     {
      "name": "view",
      "in": "query",
      "description": "type of credential information being requested, default=basic",
      "required": false,
      "type": "string",
      "enum": [
       "id",
       "basic",
       "summary",
       "details"
      ]
     },
     {
      "name": "deviceView",
      "in": "query",
      "description": "type of assigned device information to be returned, default=id",
      "required": false,
      "type": "string",
      "enum": [
       "id",
       "basic",
       "card",
       "overview"
      ]
     },
     {
      "name": "pageId",
      "in": "query",
      "description": "page for the device assignments. Paging is only used for assignment view",
      "required": false,
      "type": "string"
     },
     {
      "name": "limit",
      "in": "query",
      "description": "number of device assignments to include per page",
      "required": false,
      "type": "integer",
      "format": "int32"
     },
     {
      "name": "Authorization",
      "in": "header",
      "description": "oauth2 access_token",
      "required": true,
      "type": "string"
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "schema": {
       "$ref": "#/definitions/PageResult[Credential]"
      }
     }
    },
    "security": [
     {
      "oauth2": []
     }
    ]
   },
   "delete": {
    "tags": [
     "Credential"
    ],
    "summary": "Remove assigned credential from all devices user has access to",
    "operationId": "Credential_RemoveCredentialFromAllDevice",
    "consumes": [],
    "produces": [
     "application/json",
     "text/json"
    ],
    "parameters": [
     {
      "name": "credentialId",
      "in": "path",
      "description": "ID for credential to be unassigned",
      "required": true,
      "type": "string"
     },
     {
      "name": "preventOrphanActiveMonitors",
      "in": "query",
      "description": "prevent operation if an active monitor will be orphaned, default=true",
      "required": false,
      "type": "boolean"
     },
     {
      "name": "Authorization",
      "in": "header",
      "description": "oauth2 access_token",
      "required": true,
      "type": "string"
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "schema": {
       "$ref": "#/definitions/CountedSuccessResult"
      }
     }
    },
    "security": [
     {
      "oauth2": []
     }
    ]
   }
  },
  "/api/v1/credentials/-": {
   "get": {
    "tags": [
     "Credential"
    ],
    "summary": "Return page of credentials from credential library",
    "operationId": "Credential_Find",
    "consumes": [],
    "produces": [
     "application/json",
     "text/json"
    ],
    "parameters": [
     {
      "name": "view",
      "in": "query",
      "description": "type of credential information being requested, default=basic",
      "required": false,
      "type": "string",
      "enum": [
       "id",
       "basic",
       "summary",
       "details"
      ]
     },
     {
      "name": "type",
      "in": "query",
      "description": "filter for type of credential. Default=all",
      "required": false,
      "type": "string",
      "enum": [
       "all",
       "snmpV1",
       "snmpV2",
       "snmpV3",
       "windows",
       "ado",
       "telnet",
       "ssh",
       "vmware",
       "jmx",
       "smis",
       "aws",
       "azure",
       "meraki",
       "restapi",
       "ubiquiti",
       "redfish"
      ]
     },
     {
      "name": "search",
      "in": "query",
      "description": "return only credentials that contain this string in display name, description or type. Case-insensitive, empty value is ignored",
      "required": false,
      "type": "string"
     },
     {
      "name": "pageId",
      "in": "query",
      "description": "the pageId, empty will return first page",
      "required": false,
      "type": "string"
     },
     {
      "name": "limit",
      "in": "query",
      "description": "limit the number of entries per page, is also limited by service. 0 or empty will give the maximum number per page",
      "required": false,
      "type": "integer",
      "format": "int32"
     },
     {
      "name": "Authorization",
      "in": "header",
      "description": "oauth2 access_token",
      "required": true,
      "type": "string"
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "schema": {
       "$ref": "#/definitions/PageResult[List[Credential]]"
      }
     }
    },
    "security": [
     {
      "oauth2": []
     }
    ]
   },
   "post": {
    "tags": [
     "Credential"
    ],
    "summary": "Add credential to library",
    "description": " The following field has restrictions\r\n\t**Name** - must be unique within type, lowercase compare\r\n\r\n **Note:** The property bag entries are minimally validated.\r\n       It is the responsibility of the caller to ensure a credential is filled in with all data and usable.",
    "operationId": "Credential_AddCredential",
    "consumes": [
     "application/json",
     "text/json"
    ],
    "produces": [
     "application/json",
     "text/json"
    ],
    "parameters": [
     {
      "name": "credential",
      "in": "body",
      "description": "new values for credential",
      "required": true,
      "schema": {
       "$ref": "#/definitions/CredentialAdd"
      }
     },
     {
      "name": "Authorization",
      "in": "header",
      "description": "oauth2 access_token",
      "required": true,
      "type": "string"
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "schema": {
       "$ref": "#/definitions/Result[Credential]"
      }
     }
    },
    "security": [
     {
      "oauth2": []
     }
    ]
   }
  },
  "/api/v1/credentials/-/helper": {
   "get": {
    "tags": [
     "Credential"
    ],
    "summary": "Return information to help creating credential",
    "description": "'meraki_organization' helper\r\n* input - API key for the organization.\r\n* return - list of information needed to build a Cisco Meraki credential.",
    "operationId": "Credential_GetHelper",
    "consumes": [],
    "produces": [
     "application/json",
     "text/json"
    ],
    "parameters": [
     {
      "name": "input",
      "in": "query",
      "description": "optional input field for the helper",
      "required": true,
      "type": "string"
     },
     {
      "name": "type",
      "in": "query",
      "description": "Type of credential helper request should be sent to, default='meraki_organization'",
      "required": false,
      "type": "string",
      "enum": [
       "meraki_organization"
      ]
     },
     {
      "name": "Authorization",
      "in": "header",
      "description": "oauth2 access_token",
      "required": true,
      "type": "string"
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "schema": {
       "$ref": "#/definitions/Result[CredentialHelperResults]"
      }
     }
    },
    "security": [
     {
      "oauth2": []
     }
    ]
   }
  },
  "/api/v1/credentials/-/assignments/-": {
   "get": {
    "tags": [
     "Credential"
    ],
    "summary": "Return information about credential assignments",
    "operationId": "Credential_FindAssignments",
    "consumes": [],
    "produces": [
     "application/json",
     "text/json"
    ],
    "parameters": [
     {
      "name": "view",
      "in": "query",
      "description": "type of credential information being requested, default=basic",
      "required": false,
      "type": "string",
      "enum": [
       "id",
       "basic",
       "summary",
       "details"
      ]
     },
     {
      "name": "type",
      "in": "query",
      "description": "filter for type of credential. default=all",
      "required": false,
      "type": "string",
      "enum": [
       "all",
       "snmpV1",
       "snmpV2",
       "snmpV3",
       "windows",
       "ado",
       "telnet",
       "ssh",
       "vmware",
       "jmx",
       "smis",
       "aws",
       "azure",
       "meraki",
       "restapi",
       "ubiquiti",
       "redfish"
      ]
     },
     {
      "name": "search",
      "in": "query",
      "description": "return only credentials that contain this string in display name, description or type. Case-insensitive, empty value is ignored",
      "required": false,
      "type": "string"
     },
     {
      "name": "deviceView",
      "in": "query",
      "description": "level of device information to be included when 'includeAssignments' is true, default='id'",
      "required": false,
      "type": "string",
      "enum": [
       "id",
       "basic",
       "card",
       "overview"
      ]
     },
     {
      "name": "pageId",
      "in": "query",
      "description": "the pageId, empty will return first page",
      "required": false,
      "type": "string"
     },
     {
      "name": "limit",
      "in": "query",
      "description": "limit the number of entries per page, is also limited by service. 0 or empty will give the maximum number per page",
      "required": false,
      "type": "integer",
      "format": "int32"
     },
     {
      "name": "Authorization",
      "in": "header",
      "description": "oauth2 access_token",
      "required": true,
      "type": "string"
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "schema": {
       "$ref": "#/definitions/PageResult[List[Credential]]"
      }
     }
    },
    "security": [
     {
      "oauth2": []
     }
    ]
   }
  },
  "/api/v1/credentials/{credentialId}/config/template": {
   "get": {
    "tags": [
     "Credential"
    ],
    "summary": "Return a template for a credential",
    "operationId": "Credential_GetTemplateById",
    "consumes": [],
    "produces": [
     "application/json",
     "text/json"
    ],
    "parameters": [
     {
      "name": "credentialId",
      "in": "path",
      "description": "ID of the credential",
      "required": true,
      "type": "string"
     },
     {
      "name": "key",
      "in": "query",
      "description": "obfuscation key is required to encode sensitive data. if key is empty, then only credentials without sensitive data will be returned",
      "required": false,
      "type": "string"
     },
     {
      "name": "Authorization",
      "in": "header",
      "description": "oauth2 access_token",
      "required": true,
      "type": "string"
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "schema": {
       "$ref": "#/definitions/Result[CredentialTemplateReadResults]"
      }
     }
    },
    "security": [
     {
      "oauth2": []
     }
    ]
   }
  },
  "/api/v1/credentials/-/config/template": {
   "get": {
    "tags": [
     "Credential"
    ],
    "summary": "Return set of credential templates",
    "operationId": "Credential_GetTemplate",
    "consumes": [],
    "produces": [
     "application/json",
     "text/json"
    ],
    "parameters": [
     {
      "name": "key",
      "in": "query",
      "description": "obfuscation key is required to encode sensitive data. if key is empty, then only credentials without sensitive data will be returned",
      "required": false,
      "type": "string"
     },
     {
      "name": "type",
      "in": "query",
      "description": "filter for type of credential. default=all",
      "required": false,
      "type": "string",
      "enum": [
       "all",
       "snmpV1",
       "snmpV2",
       "snmpV3",
       "windows",
       "ado",
       "telnet",
       "ssh",
       "vmware",
       "jmx",
       "smis",
       "aws",
       "azure",
       "meraki",
       "restapi",
       "ubiquiti",
       "redfish"
      ]
     },
     {
      "name": "search",
      "in": "query",
      "description": "return only credentials that contain this string in display name, description or type. Case-insensitive, empty value is ignored",
      "required": false,
      "type": "string"
     },
     {
      "name": "Authorization",
      "in": "header",
      "description": "oauth2 access_token",
      "required": true,
      "type": "string"
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "schema": {
       "$ref": "#/definitions/Result[CredentialTemplateReadResults]"
      }
     }
    },
    "security": [
     {
      "oauth2": []
     }
    ]
   },
   "patch": {
    "tags": [
     "Credential"
    ],
    "summary": "Apply credential templates",
    "operationId": "Credential_ApplyCredentialTemplates",
    "consumes": [
     "application/json",
     "text/json"
    ],
    "produces": [
     "application/json",
     "text/json"
    ],
    "parameters": [
     {
      "name": "templates",
      "in": "body",
      "description": "set of credential templates to apply",
      "required": true,
      "schema": {
       "$ref": "#/definitions/CredentialTemplateBatch"
      }
     },
     {
      "name": "key",
      "in": "query",
      "description": "value used to decode sensitive data. If key is empty, then all sensitive data will be assumed to be in clear text",
      "required": false,
      "type": "string"
     },
     {
      "name": "Authorization",
      "in": "header",
      "description": "oauth2 access_token",
      "required": true,
      "type": "string"
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "schema": {
       "$ref": "#/definitions/Result[ApplyTemplateResults]"
      }
     }
    },
    "security": [
     {
      "oauth2": []
     }
    ]
   }
  },
  "/api/v1/devices/{deviceId}/attributes/{attributeId}": {
   "get": {
    "tags": [
     "Device"
    ],
    "summary": "Return individual attribute",
    "operationId": "Device_GetAttribute",
    "consumes": [],
    "produces": [
     "application/json",
     "text/json"
    ],
    "parameters": [
     {
      "name": "deviceId",
      "in": "path",
      "description": "ID of device",
      "required": true,
      "type": "string"
     },
     {
      "name": "attributeId",
      "in": "path",
      "description": "ID of attribute to return",
      "required": true,
      "type": "string"
     },
     {
      "name": "Authorization",
      "in": "header",
      "description": "oauth2 access_token",
      "required": true,
      "type": "string"
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "schema": {
       "$ref": "#/definitions/Result[DeviceAttribute]"
      }
     }
    },
    "security": [
     {
      "oauth2": []
     }
    ]
   },
   "put": {
    "tags": [
     "Device"
    ],
    "summary": "Update individual attribute",
    "operationId": "Device_UpdateAttribute",
    "consumes": [],
    "produces": [
     "application/json",
     "text/json"
    ],
    "parameters": [
     {
      "name": "deviceId",
      "in": "path",
      "description": "ID of device to update",
      "required": true,
      "type": "string"
     },
     {
      "name": "attributeId",
      "in": "path",
      "description": "ID of attribute to update",
      "required": true,
      "type": "string"
     },
     {
      "name": "name",
      "in": "query",
      "description": "name of device attribute",
      "required": true,
      "type": "string"
     },
     {
      "name": "value",
      "in": "query",
      "description": "value for device attribute",
      "required": false,
      "type": "string"
     },
     {
      "name": "Authorization",
      "in": "header",
      "description": "oauth2 access_token",
      "required": true,
      "type": "string"
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "schema": {
       "$ref": "#/definitions/Result[SuccessResult]"
      }
     }
    },
    "security": [
     {
      "oauth2": []
     }
    ]
   },
   "delete": {
    "tags": [
     "Device"
    ],
    "summary": "Delete individual attribute",
    "operationId": "Device_DeleteAttribute",
    "consumes": [],
    "produces": [
     "application/json",
  

# --- truncated at 32 KB (573 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/progress-software/refs/heads/main/openapi/progress-software-whatsup-gold-openapi-original.json