Workload Operations
This Public Stable API allows you to perform workload operations, such as create an unmanaged workload, update workload information, unpair a workload, and delete a workload.
Workload Methods
Functionality | HTTP | URI |
---|---|---|
Get a collection of all workloads |
|
|
Get a specified workload |
|
|
Create an unmanaged workload |
|
|
Update a workload or mark as suspended |
|
|
Unpair a workload |
|
|
Delete an unpaired workload |
|
|
Query Parameters
Parameter | Description | Type | Required |
---|---|---|---|
| Organization | Integer | Yes |
| FQDN of the PCE | String | No |
| List of container cluster URIs, encoded as a JSON string | String | No |
| Enforcement mode of workload(s) to return. | String | No |
| The data source from which a resource originates | ||
| A unique identifier within the external data source | String | No |
| Hostname of workload(s) to return. Supports partial matches | String | No |
| Include deleted workloads | Boolean | No |
| IP address of workload(s) to return. Supports partial matches | String | No |
| List of lists of label URIs, encoded as a JSON string. From release 22.3.0, this API is not referencing | String | No |
| Greater than or equal to value for last heartbeat on timestamp | Integer | No |
| Less than or equal to value for last heartbeat on timestamp | Integer | No |
| Whether we want to log traffic events from this workload | Boolean | No |
| Return managed or unmanaged workloads using this filter. | Boolean | No |
| Maximum number of workloads to return. | Integer | No |
| Management mode of workload(s) to return. DEPRECATED AND REPLACED (Use enforcement_mode) | String | No |
| Name of workload(s) to return. Supports partial matches | String | No |
| Return online/offline workloads using this filter | Boolean | No |
| Operating System of workload(s) to return. Supports partial matches | String | No |
| Policy of health of workload(s) to return. Valid values: active, warning, error, suspended | String | No |
| Advanced search option for workload based on policy sync state | String | No |
| Advanced search option for workload based on security policy update mode | String | No |
| DEPRECATED WITH NO REPLACEMENT: Only soft-deleted workloads | Boolean | No |
| URI of the VEN to filter by. From release 22.3.0,iIn addition to providing the VENs HREF, it is required to give its The { "properties": { "ven_type": { "$ref": "../common/ven_type.schema.json" } | String | No |
| Filter by visibility level | No | |
| Greater than or equal to value for | Integer | No |
| Less than or equal to value for | Integer | No |
Response Properties
Parameter | Description | Type | Required |
---|---|---|---|
| This workload has been deleted | Boolean | Yes |
| Short, friendly name of the workload. | String | Yes |
| True if the workload is managed, else false | Boolean | Yes |
| The hostname of this workload | String | Yes |
| The Kerberos Service Principal Name (SPN) | String | Yes |
| The public IP address of the workload. | String Null | Yes |
| List of all functioning network interfaces on the workload. Properties for workload network interfaces:
| Array | Yes |
| Name of the service provider that is hosting the workload. | String | Yes |
| The name of the data center where the workload is being hosted. | Yes | |
| The zone inside the data center hosting the workload. | String | Yes |
| Unique OS identifier given by Illumio to the workload. | String | Yes |
| Additional descriptive information about the workload OS | String | Yes |
| Indicates whether the workload is online and can communicate with the PCE. | Boolean | Yes |
| Labels that are attached to the workload: | Array | Yes |
| This field contains the following data:
| Yes | |
| DEPRECATED AND REPLACED (USE 'ven' INSTEAD). Information about the agent that manages this workload | Yes | |
| VEN Health. If there are no errors or warnings, then the array value will be empty | Array | No |
| The time (rfc3339 timestamp) at which this workload was created | String date/time | Yes |
| The time (rfc3339 timestamp) at which this workload was last updated | String date/time | Yes |
| The X.509 Subject distinguished name, used if you want this workload to use machine authentication between VENs and other hosts. This property has an API exposure level of Public Experimental, which means it is not intended for production use and might change in future releases. For more information, see API Classification and Version. | String | No |
| Reference to | ||
| Reference to | ||
| An external data set identifier. For example, if this workload information is stored in an external database. | String, NULL | No |
| An external data set reference path. For example, if this workload information is stored in an external database. | String, NULL | No |
| Reference to | No | |
| Reference to | ||
| Required properties are:
| Object |
Vulnerability Computation State
The new field vulnerability_computation_state
is added to vulnerability_summary
for all APIs that return the namespace. It defines three computation states:
not_applicable
(N/A) indicates that the vulnerability exposure score cannot be calculated and happens in the following cases:Unmanaged workloads
Idle workloads
Vulnerabilities that have no port associated with them.
syncing
: For managed workloads, when the vulnerability exposure score hasn't been calculated yet and the value is not available.in_sync
: For managed workloads, when the workload with the VES value is calculated and available.
The following APIs have been updated to return vulnerability_computation_state
:
workloads
(get collection) APIworkloads/detailed_vulnerability
workloads
(get instance)workloads/:uuid/detected_vulnerabilities
aggregated_detected_vulnerabilities
Example of Computation States:
syncing: Workload is in syncing state (VES is calculable but hasn't been calculated yet):
"vulnerability_summary": { "num_vulnerabilities": 30, "max_vulnerability_score": 88, "vulnerability_score": 1248, "vulnerable_port_exposure": null, "vulnerable_port_wide_exposure": { "any": null, "ip_list": null }, "vulnerability_exposure_score": null, "vulnerability_computation_state": "syncing" },
Vulnerability Exposure Score (VES) Filters
The workloads GET collection API include query parameters to filter returned workloads based on their Vulnerability Exposure Score .
These vulnerability filters are considered to be experimental and might be changed in the future.
Specify these parameters to get all the workloads that have a specific score.
Note
To use these new query parameters, you must also include the query parameter representation=workload_labels_vulnerabilities
; otherwise, the PCE won't perform any vulnerability calculations.
Some examples for using the filters are:
GET api/v1/orgs/:xorg_id/workloads?representation=workload_labels_vulnerabilities&vulnerability_summary.vulnerability_exposure_score%5Blte%5D=50
GET api/v1/orgs/:xorg_id/workloads?representation=workload_labels_vulnerabilities&vulnerability_summary.vulnerability_exposure_score%5Bgte%5D=50&vulnerability_summary.vulnerability_exposure_score%5Blte%5D=999
Update Workload Information
This API allows you to update information about a workload. To make this call, you need the URI of the workload you want to update, which is returned in the form of an HREF path when you get either a single or a collection of workloads in an organization.
URI to Update an Individual Workload's Information
PUT [api_version][workload_href]
Example Payload
This example shows what the JSON payload looks like for changing the policy state (called mode
in the API) of a workload from its current state to enforced.
{"agent":{"config":{"mode":"enforced","log_traffic":true}}}
Curl Command to Update a Workload
A workload state can be build, test, or enforced. This example shows how to use curl to update a workload policy state from its current state to enforced.
This example assumes that you want to update the state of a single workload in an organization. You can obtain an organization ID when you use the Users API to log in a user to Illumio.
curl -i -X PUT https://pce.my-company.com/api/v2/orgs/3/workloads/043902c883d133fa -H "Content-Type:application/json" -u $KEY:$TOKEN -d '{"agent":{"config":{"mode":"enforced","log_traffic":true}}}'
Mark Workload as Suspended
You can use this API to mark a workload VEN as either suspended or unsuspended.
URI to Mark a Workload VEN as Suspended or Unsuspended
PUT [api_version][workload_href]
Example Payload
This example shows what the JSON payload looks like for marking a workload VEN as suspended, with the status property for the agent
(the VEN) set to suspended
.
To mark a workload VEN as unsuspended, use the same JSON body but replace suspend
with unsuspend
.
{ "agent": { "status": { "status": "suspended" } } }
Curl Command to Mark Workload as Suspended
This example shows you how to use curl to mark a workload VEN as suspended.
This example assumes that you want to mark a single workload VEN as suspended. You can obtain an organization ID when you use the Users API to log in a user to Illumio.
curl -i -X PUT https://pce.my-company.com/api/v2/orgs/3/workloads/043902c883d133 -H "Content-Type:application/json" -u $KEY:$TOKEN -d '{"agent":{"status":{"status":"suspended"}}}'
Create an Unmanaged Workload
The Unmanaged Workload API enables you to create a workload without installing the VEN on it. This API is commonly used if you are using Kerberos authentication between the VEN and the PCE.
URI to Create an Unmanaged Workload
POST [api_version][org_href]/workloads
Example Payload
For example, to create an unmanaged workload by providing a name, hostname, public IP address, and its Kerberos Service Principal Name, construct the JSON payload as follows:
{ "name":"web_tier1", "hostname":"web_workload1.example.com", "public_ip":"10.10.10.10", "service_principal_name":"my_company-device-auth/web_workload1.example.com", }
Curl Command to Create an Unmanaged Workload
curl -i -X POST https://pce.my-company.com:8443/api/v2/orgs/4/workloads -H "Content-Type: application/json" -u $KEY:$TOKEN -d '{"name":"web_tier1", "hostname":"web_workload1.example.com","public_ip": "10.10.10.10","service_principal_name":"my_company-device-auth/web_workload1.example.com"}'
Delete a Workload Record
If you have unpaired a workload, you can use this API to delete the workload's record from the PCE.
URI to Delete a Workload Record
DELETE [api_version][workload_href]
Unpair Workloads
This API allows you to unpair workloads from the PCE by uninstalling the Illumio VEN from each workload. You can unpair up to 1,000 workloads at a time.
Pairing a workload installs the Illumio VEN on a workload. Unpairing a workload uninstalls the VEN from the workload so that the workload no longer reports any information to the PCE, and the workload can no longer receive any policy information.
When you unpair workloads with this API, you can set the state for the workloadʼs iptables (Linux) or WFP (Windows) configuration.
URI to Unpair a Workload
PUT [api_version][org_href]/workloads/unpair
Important
The endpoint workloads/unpai
r is DEPRECATED. Use /vens/unpair instead. See Curl Commands for Unpairing and Suspending VENs for more details.
Request Parameters for workloads_unpair_put
Parameter | Description | Type | Required |
---|---|---|---|
| Defines the list of workloads you want to unpair. You must specify at least one workload to unpair by defining the workload HREF. You can define up to 1,000 workloads to unpair with this API. Required property:
| Object | Yes |
Properties for workloads_unpair_put
Parameter | Description | Type | Required |
---|---|---|---|
| Defines the list of workloads you want to unpair. You must specify at least one workload to unpair by defining the workload HREF. You can define up to 1,000 workloads to unpair with this API. Required property:
| Array | Yes |
| ImportantUse This property allows you to determine the state of the workload iptables (Linux) or WFP (Windows) configuration after the workload is unpaired. Options include:
| String | Yes |
Example Payload for Unpairing Workloads
{ "workloads": [ {"href":"/orgs/7/workloads/XXXXXXXx-9611-44aa-ae06-fXXX8903db65"}, {"href":"/orgs/7/workloads/xxxxxxxx-9611-xxxx-ae06-f7bXXX03db71"} ], "firewall_restore":"saved" }
Curl Command for Unpairing Workload
curl -i -X PUT https://pce.my-company.com/api/v2/orgs/3/workloads/unpair -H "Content-Type:application/json" -u $KEY:$TOKEN -d '{"workloads": [{"href": "/orgs/7/workloads/xxxxxxxx-9611-44aa-ae06-fXXX8903db65", "href": "/orgs/7/workloads/xxxxxxxx-9611-xxxx-ae06-f7bXXX03db71"}], "firewall_restore": "default"}'
Workloads Going Offline
Three new properties are now available to describe LOG_INFO
level notification, LOG_WARNING
level notification, and LOG_ERR
level notification for workloads going offline.
When a VEN does not contact the PCE within a set time interval, it is marked as being offline. Previously, before that happened, a notification was created when the VEN was AWOL (missing) for 25% of the offline time.
These three new optional settings generate different levels of notifications at different intervals so the user can customize the timing and levels of notification.
They are described in the schema resource_canonical_representations
:
Properties for Workloads Disconnection
Property | Description | Type |
---|---|---|
| Disconnected timeout in seconds | Integer |
| Goodbye timeout in seconds | Integer |
| Threshold in seconds for | Integer |
| Threshold in seconds for | Integer |
| Threshold in seconds for | Integer |