Workload Operations
This Public Stable API allows you to perform workload operations, such as creating an unmanaged workload, updating workload information, unpairing a workload, and deleting 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 it as suspended. |
|
|
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
Vulnerability Exposure Score (VES) Filters
The workloads GET collection API includes query parameters to filter returned workloads based on their Vulnerability Exposure Score.
These vulnerability filters are considered 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 of using the filters are:
GET api/v2/orgs/:xorg_id/workloads?representation=workload_labels_vulnerabilities&vulnerability_summary.vulnerability_exposure_score%5Blte%5D=50
GET api/v2/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 as 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 a workload's policy state (called mode in the API) from its current state to enforced.
{"agent":{"config":{"mode":"enforced","log_traffic":true}}}
Mark Workload as Suspended
You can use this API to mark a workload VEN as suspended or unsuspended.
URI to Mark a Workload VEN as Suspended or Unsuspended
PUT [api_version][workload_href]
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 for Kerberos authentication between the VEN and the PCE.
URI to Create an Unmanaged Workload
POST [api_version][org_href]/workloads
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]
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 offline. 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 to varying intervals so the user can customize the timing and levels of notification.
They are described in the schema resource_canonical_representations
:
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 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/unpair
is DEPRECATED. Use VEN Unpair instead.
See Curl Commands in VEN API Methods.
Workload Operations Reference
Learn about parameters, properties, and examples of workload operations.
Workload Operations 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 |
| 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 |
| 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,in 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 |
Workload Operations Properties
Property | Description | Type | Required |
---|---|---|---|
| This workload has been deleted | Boolean | Yes |
| Interface name | String | Yes |
| Return managed or unmanaged workloads using this filter. | Boolean | Yes |
| Hostname of workload(s) to return. Supports partial matches | String | Yes |
| The Kerberos Service Principal Name (SPN) | String | Yes |
| The public IP address of the workload. | String Null | Yes |
| ref": "workloads_interfaces_get.schema.json | ||
| 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 | |
| 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 |
| Reference to | No | |
| Reference to | No | |
| This section of the response returns the following data:
| No | |
| Reference to | No | |
| IKE authentication certificate for certificate-based Secure Connect and Machine Auth connections | No | |
| Risk Summary for this workload. These properties have been added to the For
| Object | No |
Properties for Workload 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 |
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" },
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}}}'
Example Payload for marking a workload as suspended
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"}}}'
Example payload for unmanaged workload
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"}'
Parameters to unpair a workload
Parameter | Description | Type | Required |
---|---|---|---|
| Organization | Integer | Yes |
| 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"}'