Capability library / Application package

Zscaler package v1.0.0

Zscaler: read ZIA filtering configuration, stage URL filtering rules and activate all pending tenant changes; read or create ZPA application segments that can grant access through existing policies.

Review state: Reviewed · Distributable: yes, digest matches the release manifest

This page describes AAES Govern’s controls. AAES Operate has private-work permissions, operational reviews and recorded-spend limits; it does not include Govern. About AAES Govern

Before you enable this package

Whether deleting a ZPA API key invalidates already-issued tokens is not stated in vendor documentation. Treat issued tokens as live until expiry. The endpoint hosts 'zscaler-zia.invalid' and 'zscaler-zpa.invalid' are reserved .invalid placeholders that fail closed until you substitute the real hosts in both the endpoint URLs and the egress allowlist. CUSTOMER_ID in the ZPA paths is a placeholder to bind before enabling.

Read each action's effects and exclusions below. Before installation, also read the complete package requirements, including credential issuance, scope, expiry, and provider permissions. These are deployment prerequisites, not capabilities this package supplies.

Capabilities (7)

Each capability below is one registered operation. The complete package JSON includes its exact network destination allowlist. The repository stores it at packs/zscaler.json and embeds a copy in the release binary.

Risk tiers. R0 is the minimum for reads. R2 is the minimum for write, create, update, execute, and invoke. R3 is the minimum for delete, send, pay, deploy, approve, share, and transfer. Operators can raise these levels. A minimum tier does not measure the operation's business or confidentiality risk.

On supported execution paths routed through AAES Govern, the R3 actions listed below require approval by an authorized person. Bypass paths and observation-only registrations are outside that guarantee. A provider's restoration feature does not remove this approval requirement. A provider-side approval, such as approving a GitLab merge request, is also separate from AAES Govern human approval. The capability matrix shows which execution paths are implemented, restricted to lab use, or refused at startup. Live compatibility must be tested in your environment.

Field guide. Endpoint is the service address and request method. Connector is the adapter that makes the call. Custody describes how the credential is held; the credential reference identifies the value to resolve. Data class sets handling requirements: pii means personal data, financial means financial records, and internal means internal organizational data.

zscaler.zia.url_categories.read v1.0.0R0

Kind
tool
Action
read
Endpoint
GET https://zscaler-zia.invalid/api/v1/urlCategories
Connector
http
Custody
customer_vault
Credential ref
secret-ref-zscaler-zia-session
Data class
internal

Read ZIA URL categories.

List the tenant's URL categories from the collection endpoint, including custom categories and their URL membership — the classification data the tenant's web policy is built from. Registered as the collection read.

The host is a reserved placeholder: substitute the customer's ZIA cloud API host before enabling.

zscaler.zia.url_filtering_rules.read v1.0.0R0

Kind
tool
Action
read
Endpoint
GET https://zscaler-zia.invalid/api/v1/urlFilteringRules
Connector
http
Custody
customer_vault
Credential ref
secret-ref-zscaler-zia-session
Data class
internal

Read ZIA URL filtering rules.

List the tenant's URL filtering rules from the collection endpoint: ordered allow/caution/block rules with their category, user, group, department and location scope. Registered as the collection read.

The host is a reserved placeholder: substitute before enabling.

zscaler.zia.firewall_rules.read v1.0.0R0

Kind
tool
Action
read
Endpoint
GET https://zscaler-zia.invalid/api/v1/firewallFilteringRules
Connector
http
Custody
customer_vault
Credential ref
secret-ref-zscaler-zia-session
Data class
internal

Read ZIA firewall rules.

List the tenant's cloud firewall filtering rules from the collection endpoint: ordered rules with network services, applications, destinations and action. Registered as the collection read.

The host is a reserved placeholder: substitute before enabling.

zscaler.zia.url_filtering_rule.create v1.0.0R2

Kind
tool
Action
create
Endpoint
POST https://zscaler-zia.invalid/api/v1/urlFilteringRules
Connector
http
Custody
customer_vault
Credential ref
secret-ref-zscaler-zia-session
Data class
internal

Create ZIA URL filtering rule.

Create one URL filtering rule (for example an emergency block or allow rule for a category or URL list). The new rule is staged in the session and takes no enforcement effect until configuration activation (registered separately as zia.config.activate at R3); the rule itself can be updated or deleted afterwards, so the create is registered as a reversible create at R2. Rule order matters for enforcement — the deployment should fix the rule's rank in the request body rather than letting the cloud place it.

The host is a reserved placeholder: substitute before enabling.

zscaler.zia.config.activate v1.0.0R3

Kind
tool
Action
deploy
Endpoint
POST https://zscaler-zia.invalid/api/v1/status/activate
Connector
http
Custody
customer_vault
Credential ref
secret-ref-zscaler-zia-session
Data class
internal

Activate ZIA config.

Activate the tenant's staged ZIA configuration and apply it to production enforcement. Activation applies every pending change across the tenant, including changes staged by other administrator sessions or console users.

Review the whole pending change set before activating. GET /api/v1/status reports activation status for saved changes; Zscaler's Activation specification does not describe it as a pending-change inventory. Obtain that inventory from the console or another reviewed source; this package does not provide one.

Registered as deploy at R3. Replace the reserved host before enabling.

zscaler.zpa.app_segments.read v1.0.0R0

Kind
tool
Action
read
Endpoint
GET https://zscaler-zpa.invalid/mgmtconfig/v1/admin/customers/CUSTOMER_ID/application
Connector
http
Custody
customer_vault
Credential ref
secret-ref-zscaler-zpa-token
Data class
internal

Read ZPA app segments.

List the tenant's ZPA application segments from the collection endpoint: the internal applications (domain/IP and port ranges) published through ZPA. CUSTOMER_ID is a placeholder the deployment binds to the ZPA tenant id before enabling. This capability overrides the pack credential: ZPA authenticates with an OAuth2 bearer token (see the pack's credential note), injected as the Authorization header.

The host is a reserved placeholder: substitute before enabling.

zscaler.zpa.app_segment.create v1.0.0R3

Kind
tool
Actions
create, deploy, share
Endpoint
POST https://zscaler-zpa.invalid/mgmtconfig/v1/admin/customers/CUSTOMER_ID/application
Connector
http
Custody
customer_vault
Credential ref
secret-ref-zscaler-zpa-token
Data class
internal

Create ZPA app segment.

Create a ZPA application segment and publish an internal application through ZPA. The vendor SDK requires name, domain_names, segment_group_id, and server_group_ids, with optional port ranges, bypass type, health reporting, and clientless-app associations. The endpoint's OpenAPI 3.0.0 schema marks only name as required; use the fuller SDK contract for setup.

Existing policies can immediately grant access when the segment joins a group they already cover. Excluding policy writes from this package does not prevent that effect. The capability therefore declares create, deploy, and share at R3.

On supported execution paths mediated by AAES Govern, deploy and share require approval by an authorized person; this does not prevent calls through bypass or observation-only paths.

Bind CUSTOMER_ID and replace the reserved host before enabling. This capability uses its own ZPA bearer-token reference rather than the package credential; see the credential note.

Credential reference

The credential field names a reference rather than containing credential material. Packs are designed not to contain secrets; the format checks cover only known credential formats and cannot prove that arbitrary text contains no secrets. Installing a package registers its capabilities. Configure the provider credentials, endpoints, and network access, then test the integration in your environment before enabling it.

Reference
secret-ref-zscaler-zia-session
Custody
customer_vault
Injection
header (Cookie)

Configure the value and injection format specified in the package. Assign responsibility for credential rotation and revocation, restrict provider permissions, and keep credential material out of logs and responses.

Complete credential requirements

A ZIA API session cookie, held in the client's own secret manager. The stored material must be the complete Cookie header value: 'JSESSIONID=' followed by the session id returned by the ZIA authenticatedSession call — the raw path (POST /api/v1/authenticatedSession) and the cookie name (JSESSIONID, returned in the Set-Cookie header) are printed verbatim in Zscaler's official API Authentication specification and Getting Started article on help.zscaler.com (retrieved 2026-09-23). ZIA's legacy authentication is a derived session, not a static token: an external deployment process POSTs a JSON body containing an API-enabled admin's username, password and the tenant API key — obfuscated with Zscaler's documented timestamp-based obfuscation, which is obfuscation, not encryption — to /api/v1/authenticatedSession on the customer's ZIA cloud host, and stores the resulting session cookie under this reference.

The three source values (username, password, API key) are separate secrets under their own vault references; the executor injects the stored cookie verbatim and performs no session lifecycle itself, so renewal ownership sits entirely with that external process. Zscaler documents a default JSESSIONID lifetime of 5 minutes and invalidation by an explicit logout (DELETE /authenticatedSession); calls made after expiry or logout fail closed with a 401.

Rotating the API key or disabling the admin stops NEW session issuance, but an already-established session should be treated as valid until it expires or is logged out — stopping issuance is not session invalidation, so on suspicion the custody job must explicitly log out the session, not only rotate the key.

Least privilege: use a dedicated API-only admin whose role permits exactly the registered scope (read-only administration for the reads; URL filtering configuration only where rule creation and activation are enabled), and never a full admin. The ZPA capabilities in this pack override this credential block with their own bearer-token reference (see their inject fields). ZPA legacy authentication is OAuth2 client credentials, verified against Zscaler's ZPA API Getting Started and About API Key Management articles (help.zscaler.com, retrieved 2026-09-23): client_id and client_secret are issued on the ZPA console's API Keys page (Administration > API > Private Access API; earlier SDK documentation named the older Configuration & Control > Public API > API Keys path), the client secret is displayed only when the key is first created, the customer id identifies the tenant and is copyable from the API Keys page menu, and the ZPA cloud value selects the API gateway; the external custody job exchanges the client credentials for an access token at the tenant's ZPA gateway (POST /signin with form-encoded client_id and client_secret, returning token_type Bearer) and stores the complete 'Bearer <token>' Authorization header value.

The retrieved documentation sets the token's default lifetime at 3,600 seconds (one hour); it still does not state whether deleting the API key invalidates already-issued tokens — treat any captured token as live until expiry.

Least privilege: a dedicated API key whose console role permits exactly the registered application-segment read/create scope, never a full admin.

Executor hygiene: the cookie and the bearer value must live only in executor memory for the lifetime of a call, must never be written to logs, traces or diagnostics, and must not appear in crash dumps; a deployment that cannot meet that bar must not enable the pack.

Resources

  • zscaler-zia-tenant (api, internal): https://zscaler-zia.invalid/api/v1
  • zscaler-zpa-tenant (api, internal): https://zscaler-zpa.invalid/mgmtconfig/v1/admin/customers/CUSTOMER_ID

Technical package and review record

Complete provider requirements and exclusions

The endpoint hosts 'zscaler-zia.invalid' and 'zscaler-zpa.invalid' are reserved non-production placeholders (an RFC 2606 reserved TLD): substitute the customer's own ZIA cloud API host (zsapi.<cloud name> for the tenant's cloud) and ZPA gateway host before enabling, in every endpoint, in the resource locators and in every egress allowlist entry — the allowlist matches exactly, so all three must be substituted together, and substitution is a required deployment step.

This pack registers the legacy ZIA session model: ZIA API authentication is a session-cookie flow in which the client POSTs an admin username, password and the tenant's obfuscated API key to /api/v1/authenticatedSession and receives a session cookie; the stored credential is the resulting cookie value, minted and refreshed by an external custody job — see the credential note. ZIA configuration changes are staged per session and only take enforcement effect when activated: zia.config.activate applies ALL staged changes tenant-wide — including changes staged by other sessions and by console users — and is registered with the deploy action at the minimum R3 tier.

The ZPA capabilities override the pack credential: ZPA's API uses OAuth2 client-credentials bearer tokens, not the ZIA session cookie, so the ZPA capabilities name a separate reference and the Authorization header. Zscaler's newer Zidentity OneAPI framework (a single OAuth2 client across ZIA/ZPA) exists and is preferred by the vendor for migrated tenants; the retrieved vendor SDK documentation shows OneAPI is NOT only a credential change: it moves authentication to the Zidentity token endpoint (https://<vanity_domain>.zslogin.net/oauth2/v1/token) and serves the products from a different API base authority (api.<cloud_name>.zsapi.net) with its own path contract, so a migrated tenant must re-review authority, paths and credential wiring together rather than swapping only the credential reference.

Documentation basis: raw endpoint paths and methods are verified against Zscaler's official per-product Swagger/OpenAPI specifications served from help.zscaler.com (retrieved 2026-09-23): the ZIA API Authentication, URL Categories, URL Filtering Policy, Firewall Policies and Activation specifications (host zsapi.[zscaler-cloud-name], basePath /api/v1) and the ZPA Application Segment Management specification (OpenAPI 3.0.0) print every path and method this pack registers. The help site's HTML pages render client-side, but its JSON content API (help.zscaler.com/zapi/fetch-data) exposes each API section's downloadable specification file; the vendor-maintained Python SDK documentation listed in sources corroborated the operation surface in the first phase and remains listed.

Documented exclusions — this pack does not register: any DELETE endpoint (URL filtering rule, firewall rule, URL category or application segment deletion — removing an enforcement rule can silently reopen blocked traffic, and deletion is not part of this pack), admin user, role and API-key management, PAC file management, ZPA connector provisioning or deletion, sandbox file submission (which sends customer files for analysis), sublocation and location VPN credential management, and ZIA DLP dictionary/policy management.

Download the complete package JSON for exact network allowlists, credential requirements, exclusions, and setup notes. Read these requirements before installation.

The full documentation review record is supplied in the evaluation package. The evaluation package runs in your environment and comes only with the paid design partnership. This page reproduces the source links and review block; the full record is available for evaluation. Discuss a design partnership to inspect it before installation.

Review block

This section reproduces the review block recorded in the pack file. The evidence and approval record is separate: for a reviewed pack, it is in the evaluation materials and in the release binary's embedded assets.

Review completed: 2026-09-23

15 sources, retrieved 2026-09-21, 2026-09-23

Current documentation links are navigation aids. They do not change the package, its historical sources or its review date. Review dates describe a documentation review, not a live integration test. No package is provider-endorsed or yet tested against a live provider tenant.

Release identity

SHA-256 of the pack file bytes: 8a4806859be21b1d34fd8d142a37c7f6cd1251bd723ce1fd9252c8b2afde7094

Distributable: yes, digest matches the release manifest. Editing a package changes its release identity. A deployment plan checks its own file digests; it does not restore reviewed status or authenticate approval.