Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ ENV/
# Configtree diagram generated by sphinx
docs/_diagrams
local_dev
python_model_generation

.vscode
.claude
Expand Down
176 changes: 176 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,181 @@
# Zscaler Python SDK Changelog

## 1.9.39 (July 27, 2026)

### Notes

- Python Versions: **v3.9, v3.10, v3.11, v3.12**

### Enhancements

### New ZIA Endpoints

[PR #554](https://github.com/zscaler/zscaler-sdk-python/pull/554) - Added the following new ZIA Endpoints
- `GET /webDlpGlobalOptions` Retrieves the DLP Advanced Settings information
- `PUT /webDlpGlobalOptions` Updates the existing DLP Advanced Settings.

[PR #554](https://github.com/zscaler/zscaler-sdk-python/pull/554) - Added the following new ZIA Endpoint DLP Applications endpoints
- `GET /endPointApplications` Retrieves the list of endpoint applications.
- `GET /endPointApplications/lite` Retrieves a lightweight list of endpoint applications.
- `GET /endPointApplications/count` Retrieves the count of all endpoint applications.
- `GET /endPointApplications/cloudApps/count` Retrieves the count of well-known and discovered endpoint applications.
- `GET /endPointApplications/policies` Retrieves the list of policy rules associated with the specified endpoint applications.
- `GET /endPointApplications/getCategoriesWithNonEmptyApps` Retrieves the categories that currently have endpoint applications grouped within them.

[PR #554](https://github.com/zscaler/zscaler-sdk-python/pull/554) - Added the following new ZIA Endpoint DLP Custom Applications endpoints
- `GET /endPointApplications/customApps` Retrieves the list of custom endpoint applications.
- `GET /endPointApplications/customApp/{id}` Retrieves the custom endpoint application based on the specified ID.
- `POST /endPointApplications/customApp` Adds a new custom endpoint application.
- `PUT /endPointApplications/customApp/{id}` Updates the custom endpoint application based on the specified ID.
- `DELETE /endPointApplications/customApp/{id}` Deletes the custom endpoint application based on the specified ID.

[PR #554](https://github.com/zscaler/zscaler-sdk-python/pull/554) - Added the following new ZIA Endpoint DLP Application Groups endpoints
- `GET /endPointApplicationGroups` Retrieves the list of application tag groups.
- `GET /endPointApplicationGroups/policies` Retrieves the list of policy rules associated with the specified application tag groups.
- `POST /endPointApplicationGroups` Adds a new application tag group.
- `PUT /endPointApplicationGroups/{id}` Updates the application tag group based on the specified ID.
- `PUT /endPointApplicationGroups/{id}/resources` Updates the applications associated with the specified tag group.
- `DELETE /endPointApplicationGroups/{id}` Deletes the application tag group based on the specified ID.

[PR #554](https://github.com/zscaler/zscaler-sdk-python/pull/554) - Added the following new ZIA Endpoint DLP Resources endpoints
- `GET /dlpEndpointResource/{channel}` Retrieves the list of DLP resources configured for the specified channel.
- `GET /dlpEndpointResource/{channel}/{id}` Retrieves the DLP resource based on the specified channel and ID.
- `GET /dlpEndpointResource/{id}/groups` Retrieves the list of tags to which the specified DLP resource is associated.
- `POST /dlpEndpointResource` Adds a new DLP endpoint resource.
- `PUT /dlpEndpointResource/{id}` Updates the DLP endpoint resource based on the specified ID.
- `DELETE /dlpEndpointResource/{id}` Deletes the DLP endpoint resource based on the specified ID.

[PR #554](https://github.com/zscaler/zscaler-sdk-python/pull/554) - Added the following new ZIA Endpoint DLP Resource Groups endpoints
- `GET /endPointDlpResourceGroups/{channel}` Retrieves the list of DLP resource tags added for the specified channel.
- `GET /endPointDlpResourceGroups/{id}/resources` Retrieves the DLP resources associated with the specified tag group.
- `PUT /endPointDlpResourceGroups/{id}/resources` Updates the DLP resources associated with the specified tag group.
- `POST /endPointDlpResourceGroups` Adds a new DLP resource tag group.
- `PUT /endPointDlpResourceGroups/{id}` Updates the DLP resource tag group based on the specified ID.
- `DELETE /endPointDlpResourceGroups/{id}` Deletes the DLP resource tag group based on the specified ID.

[PR #554](https://github.com/zscaler/zscaler-sdk-python/pull/554) - Added the following new ZIA Endpoint DLP Rules endpoints
- `GET /endPointDlpRules` Retrieves a list of Endpoint DLP rules.
- `GET /endPointDlpRules/{id}` Retrieves the Endpoint DLP rule based on the specified ID.
- `GET /endPointDlpRules/fileTypeCategories` Retrieves the file type categories supported by Endpoint DLP rules.
- `POST /endPointDlpRules` Adds a new Endpoint DLP rule.
- `PUT /endPointDlpRules/{id}` Updates the Endpoint DLP rule based on the specified ID.
- `DELETE /endPointDlpRules/{id}` Deletes the Endpoint DLP rule based on the specified ID.

[PR #554](https://github.com/zscaler/zscaler-sdk-python/pull/554) - Added the following new ZIA Endpoint DLP Exception (Sub) Rules endpoints
- `POST /endPointDlpRules/{id}/subRule` Adds a new exception (sub) rule to an existing Endpoint DLP rule.
- `PUT /endPointDlpRules/{id}/subRule/{subRuleId}` Updates the Endpoint DLP exception (sub) rule based on the specified IDs.
- `DELETE /endPointDlpRules/{id}/subRule/{subRuleId}` Deletes the Endpoint DLP exception (sub) rule based on the specified IDs.

[PR #554](https://github.com/zscaler/zscaler-sdk-python/pull/554) - Added the following new ZIA Outbound Email DLP endpoint
- `GET /emailDlpRules/actions` Retrieves the supported Outbound Email DLP rule actions for the specified email tenants as a CSV file.

[PR #554](https://github.com/zscaler/zscaler-sdk-python/pull/554) - Added the following new ZIA DNS Application Groups endpoints
- `GET /dnsApplicationGroups` Retrieves a list of DNS application groups.
- `GET /dnsApplicationGroups/{id}` Retrieves the DNS application group based on the specified ID.
- `POST /dnsApplicationGroups` Adds a new DNS application group.
- `PUT /dnsApplicationGroups/{id}` Updates the DNS application group based on the specified ID.
- `DELETE /dnsApplicationGroups/{id}` Deletes the DNS application group based on the specified ID.

[PR #554](https://github.com/zscaler/zscaler-sdk-python/pull/554) - Added the following new ZIA End User Notification endpoints
- `GET /eunTemplate/{templateType}/product/{product}` Retrieves the browser-based/ZCC end user notification template for the specified template type and product.
- `GET /eunTemplate/{templateType}/featureEnablementStatus` Retrieves the feature enablement status for the specified end user notification template type.
- `GET /userConfirmation/product/{product}` Retrieves the user confirmation template by policy for the specified product.
- `GET /userConfirmation/globalDefaultTemplates` Retrieves the global default user confirmation templates.
- `GET /userConfirmation/{templateType}/featureEnablementStatus` Retrieves the notification enablement feature status for the specified template type.

### New ZPA Endpoints

[PR #554](https://github.com/zscaler/zscaler-sdk-python/pull/554) - Added the following new ZPA Policy Group Controller Endpoints
- `GET /policyGroupSet/{groupSetId}/group/{groupId}` Get a specific Policy Group by ID within a Policy Group Set
- `PUT /policyGroupSet/{groupSetId}/group/{groupId}` Update an existing Policy Group.
- `DELETE /policyGroupSet/{groupSetId}/group/{groupId}` Delete an existing Policy Group.
- `POST /policyGroupSet/{groupSetId}/group/search` Get All Policy Groups within a Policy Group Set with advanced search and pagination.
- `POST /policyGroupSet/{groupSetId}/group/{groupId}/reorder/{newOrder}` Update an existing Policy Group Order.
- `GET /policyGroupSet/{groupSetId}/group/all` Get All Policy Groups within a Policy Group Set.
- `GET /policyGroupSet/{groupSetId}/group` Add a new Policy Group to a Policy Group Set.

[PR #554](https://github.com/zscaler/zscaler-sdk-python/pull/554) - Added the following new ZPA Policy Group Rule Controller Endpoints
- `GET /policyGroupSet/{groupSetId}/group/{groupId}/rule/{ruleId}` Get a policy rule within a policy group
- `DELETE /policyGroupSet/{groupSetId}/group/{groupId}/rule/{ruleId}` Delete a policy rule within a policy group
- `GET /policyGroupSet/{groupSetId}/group/{groupId}/rule` Get All Policy Groups Rules within a Policy Group with advanced search and pagination.
- `POST /policyGroupSet/{groupSetId}/group/{groupId}/rule` Add a new policy rule for a given policy group.
- `PUT /policyGroupSet/{groupSetId}/group/{groupId}/rule/{ruleId}/reorder/{newOrder}` Update rule order of a rule within policy group

[PR #554](https://github.com/zscaler/zscaler-sdk-python/pull/554) - Added the following new ZPA Policy Group Set Controller Endpoints
- `GET /policyGroupSet/{groupSetId}` Get a specific Policy Group Set by ID.
- `GET /policyGroupSet` Get all Policy Group Sets for a customer.
- `GET /policyGroupSet/policyType/{policyType}/rules` Get paginated rules across groups within a Policy Group Set.
- `GET /policyGroupSet/policyType/{policyType}/summary` Get Policy Group Set Summary fo a customer for policy type.
- `GET /policyGroupSet/policyType/{policyType}` Get Policy Group Set fo a customer for policy type.
- `GET /policyGroupSet/policyType/{policyType}/summaryStats` Get summary stats for groups and rules within a Policy Group Set.

#### Zscaler AI Guard (AIGuard) New Service and Endpoints
[PR #554](https://github.com/zscaler/zscaler-sdk-python/pull/554) - Added full OneAPI support for the Zscaler AI Guard (`aiguard`) service. AI Guard resources are now accessible via `client.aiguard`. All AI Guard configuration resources are supported through the OneAPI client (Zidentity); the policy detection endpoints (`/v1/detection/*`) are **not** exposed through OneAPI and remain available via `LegacyAIGuardClient` (see below). The following new AI Guard API endpoints were added:
- Added `GET /detections/policies` to retrieve the list of detection policies.
- Added `GET /detections/policies/{policyId}` to retrieve a detection policy by ID.
- Added `GET /detections/policies/name/{name}` to retrieve a detection policy by name.
- Added `POST /detections/policies` to create a new detection policy.
- Added `PUT /detections/policies/{policyId}` to update a detection policy.
- Added `DELETE /detections/policies/{policyId}` to delete a detection policy.
- Added `GET /detections/policy-match-rules` to retrieve the list of policy match rules.
- Added `GET /detections/policy-match-rules/{ruleId}` to retrieve a policy match rule by ID.
- Added `GET /detections/policy-match-rules/name/{name}` to retrieve a policy match rule by name.
- Added `POST /detections/policy-match-rules` to create a new policy match rule.
- Added `PUT /detections/policy-match-rules/{ruleId}` to update a policy match rule.
- Added `DELETE /detections/policy-match-rules/{ruleId}` to delete a policy match rule.
- Added `GET /llm-providers` to retrieve the list of LLM providers.
- Added `GET /llm-providers/{providerId}` to retrieve an LLM provider by ID.
- Added `GET /llm-providers/name/{name}` to retrieve an LLM provider by name.
- Added `GET /llm-providers/{providerId}/referential-check` to retrieve resources referencing an LLM provider.
- Added `GET /llm-provider-types` to retrieve the list of supported LLM provider types.
- Added `GET /llm-provider-types/{type}` to retrieve a specific LLM provider type.
- Added `POST /llm-providers` to create a new LLM provider.
- Added `PUT /llm-providers/{providerId}` to update an LLM provider.
- Added `DELETE /llm-providers/{providerId}` to delete an LLM provider.
- Added `GET /llm-provider-credentials` to retrieve the list of LLM provider credentials.
- Added `GET /llm-provider-credentials/{credentialId}` to retrieve an LLM provider credential by ID.
- Added `GET /llm-provider-credentials/name/{name}` to retrieve an LLM provider credential by name.
- Added `GET /llm-provider-credentials/{credentialId}/referential-check` to retrieve resources referencing an LLM provider credential.
- Added `POST /llm-provider-credentials` to create a new LLM provider credential.
- Added `PUT /llm-provider-credentials/{credentialId}` to update an LLM provider credential.
- Added `DELETE /llm-provider-credentials/{credentialId}` to delete an LLM provider credential.
- Added `GET /llm-applications` to retrieve the list of LLM applications.
- Added `GET /llm-applications/{applicationId}` to retrieve an LLM application by ID.
- Added `GET /llm-applications/name/{name}` to retrieve an LLM application by name.
- Added `GET /llm-applications/{applicationId}/referential-check` to retrieve resources referencing an LLM application.
- Added `POST /llm-applications` to create a new LLM application.
- Added `PUT /llm-applications/{applicationId}` to update an LLM application.
- Added `DELETE /llm-applications/{applicationId}` to delete an LLM application.
- Added `GET /llm-application-credentials` to retrieve the list of LLM application credentials.
- Added `GET /llm-application-credentials/{credentialId}` to retrieve an LLM application credential by ID.
- Added `GET /llm-application-credentials/name/{name}` to retrieve an LLM application credential by name.
- Added `GET /llm-application-credentials/{credentialId}/referential-check` to retrieve resources referencing an LLM application credential.
- Added `POST /llm-application-credentials` to create a new LLM application credential.
- Added `POST /llm-application-credentials/{credentialId}/regenerate` to regenerate an LLM application credential.
- Added `PUT /llm-application-credentials/{credentialId}` to update an LLM application credential.
- Added `DELETE /llm-application-credentials/{credentialId}` to delete an LLM application credential.

#### Zscaler AI Guard (AIGuard) Policy Detection via Legacy Client
[PR #554](https://github.com/zscaler/zscaler-sdk-python/pull/554) - The AI Guard policy detection endpoints are **not** exposed through OneAPI and are therefore served by the AI Guard legacy client, `LegacyAIGuardClient`:
- `POST /v1/detection/execute-policy` - executes a specific detection policy against content.
- `POST /v1/detection/resolve-and-execute-policy` - resolves the applicable detection policy and executes it against content.

These are reached via `client.aiguard.policy_detection` on a `LegacyAIGuardClient`, which authenticates with an AI Guard API key (`api_key` / `AIGUARD_API_KEY`) against `https://api.<cloud>.zseclipse.net`. All other AI Guard resources remain OneAPI only via `ZscalerClient`.

```py
from zscaler.oneapi_client import LegacyAIGuardClient

with LegacyAIGuardClient({"api_key": "<api key>", "cloud": "us1"}) as client:
result, _, err = client.aiguard.policy_detection.resolve_and_execute_policy(
content="User prompt or AI response to scan",
direction="IN",
)
```

### Deprecations

* [PR #549](https://github.com/zscaler/zscaler-sdk-python/pull/549) - AI Guard configuration resources are supported via the OneAPI client. The AI Guard legacy client is retained as `LegacyAIGuardClient` **solely** for policy detection (`client.aiguard.policy_detection`), because `/v1/detection/execute-policy` and `/v1/detection/resolve-and-execute-policy` are not exposed through OneAPI. The `client.zguard` property remains as a deprecated alias for `client.aiguard`.

## 1.9.38 (July 14, 2026)

### Notes
Expand Down
Loading
Loading