Skip to content

Commit 46d6f59

Browse files
authored
fix: Added New Zscaler Cellular API endpoint resources and documentation, New ZPA and ZIA Endpoints (#542)
## 1.9.35 (July 6, 2026) ### Notes - Python Versions: **v3.9, v3.10, v3.11, v3.12** ### Enhancements #### Zscaler Cellular (ZCell) New Endpoints [PR #542](#542) - Added the following new Zscaler Cellular (ZCell) API Endpoints: - Added `GET /customers/{id}/anomaly-policy` to retrieve the list of anomaly policies. - Added `POST /customers/{id}/anomaly-policy` to create a new anomaly policy. - Added `PATCH /customers/{id}/anomaly-policy/{policyId}` to update an anomaly policy. - Added `DELETE /customers/{id}/anomaly-policy/{policyId}` to delete an anomaly policy. - Added `GET /customers/{id}/anomaly-policy/{policyId}/logs` to retrieve past anomaly policy logs. - Added `PATCH /customers/{id}/anomaly-policy/{policyId}/status` to enable or disable an anomaly policy. - Added `GET /customers/{id}/anomaly-policy/{policyId}/violations` to retrieve anomaly policy violations. - Added `GET /customers/{id}/anomaly-policy/{policyId}/violations/{iccid}` to retrieve anomaly policy violations by ICCID. - Added `GET /customers/{id}/sim-location-groups` to retrieve the list of SIM location groups. - Added `GET /customers/{id}/sim-location-groups/{groupId}` to retrieve a SIM location group. - Added `POST /customers/{id}/sim-location-groups` to create a SIM location group. - Added `PUT /customers/{id}/sim-location-groups/{groupId}` to update a SIM location group. - Added `DELETE /customers/{id}/sim-location-groups/{groupId}` to delete a SIM location group. - Added `POST /customers/{id}/sim/analytics/map` to retrieve SIM analytics map data. - Added `GET /customers/{id}/sim/analytics/summary` to retrieve the SIM analytics summary. - Added `GET /customers/{id}/sim/analytics/usage/countries` to retrieve SIM usage by country. - Added `GET /customers/{id}/sim/analytics/usage/day` to retrieve SIM usage by day. - Added `GET /customers/{id}/sim/analytics/usage/sims` to retrieve SIM usage by SIM. - Added `GET /customers/{id}/regions` to retrieve the list of customer regions. - Added `PUT /customers/{id}/regions` to deploy or update customer regions. - Added `GET /customers/{id}/regions/operational-status` to retrieve the operational status of customer regions. - Added `POST /audit/customers/{id}/search` to search customer audit data. - Added `GET /audit/metadata` to retrieve audit metadata. - Added `POST /network-events/{id}/search/startTime/{startTime}/endTime/{endTime}` to search network events within a time window. - Added `GET /customers/{id}/sims/details` to retrieve SIM details by ICCID. - Added `POST /customers/{id}/sims/download` to download SIM data as a CSV file. - Added `PATCH /customers/{id}/sims/assign/tag` to assign a tag to SIMs. - Added `PATCH /customers/{id}/sims/lock` to lock SIMs. - Added `POST /customers/{id}/sims/search` to search SIM data with filtering and pagination. - Added `PATCH /customers/{id}/sims/status` to update the status of SIMs. - Added `PATCH /customers/{id}/sims/{iccid}/assign` to assign an eSIM and return the activation code. - Added `PATCH /customers/{id}/sims/{iccid}/state` to fetch and refresh the provider eSIM state. - Added `GET /customers/{id}/tag` to retrieve the list of tags. - Added `POST /customers/{id}/tag` to create a new tag. - Added `GET /customers/{id}` to retrieve customer data. - Added `PUT /customers/{id}` to activate an end customer. - Added support for a configurable ZCell customer id via the `zcellCustomerId` config attribute and the `ZCELL_CUSTOMER_ID` environment variable, which is automatically injected into the `/customers/{id}` request path so it does not need to be passed on every call. The explicit `id` argument is still supported and takes precedence. This value is independent from ZPA's `customerId`. #### Zscaler Private Access (ZPA) New Endpoints [PR #542](#542) - Added the following new Zscaler Private Access (ZPA) API Endpoints: - Added `GET /application/host/{host_id}` - Get federated applications with search, sorting, and pagination - Added `PUT /application/federate` - Federate an application with guest customers - Added `PUT /policySet/rules/policyType/GLOBAL_POLICY/guest/{guest_id}` - Get policy rules created by partner on federated applications - Added `GET /businessContinuitySettings/certificate` - Download SP Certificate - Added `GET /businessContinuitySettings/metadata` - Download SP Metadata information - Added `GET /businessContinuitySettings` - Gets Business Continuity Setting for customer - Added `POST /businessContinuitySettings` - Creates Business Continuity Setting for the customer - Added `GET /businessContinuitySettings/{id}` - Get Business Continuity Setting for the given customer by Id - Added `PUT /businessContinuitySettings/{id}` - Update Business Continuity Setting for the given customer by Id - Added `DELETE /businessContinuitySettings/{id}` - Delete Business Continuity Setting for the Customer - Added `GET /iamidpmapping` Retrieves the IamIdpMapping details for the customer - Added `GET /privateCloud` Retrieves all configured Private clouds for the specified customer. - Added `GET /privateCloud` Retrieves Private cloud details for the specified ID. - Added `POST /privateCloud` Adds a new Private cloud for the specified customer. - Added `PUT /privateCloud` Updates the Private cloud for the specified ID. - Added `DELETE /privateCloud` Deletes the Private cloud for the specified ID. - Added `GET /tenant-federation/partners` Retrieves active federation partners for a customer. - Added `PUT /tenant-federation/approval` Request approval for tenant federation using token. - Added `POST /tenant-federation/token` Create federation token for a customer by microtenant. - Added `POST /tenant-federation/token/verify` Verify federation token. - Added `GET /tenant-federation` Get provisioning requests for a customer with search, sorting, and pagination. - Added `DELETE /tenant-federation/{federation_id}` Delete tenant federation by Federation ID. - Added `PUT /tenant-federation/{federation_id}/provisioning-state/{status}` Update tenant federation provisioning state (APPROVED, DENIED, TERMINATED). - Added `PUT /tenant-federation/{federation_id}/notes` Update notes for tenant federation provisioning. Initiator updates initiatorNotes, partner updates partnerNotes. - Added `PUT /tenant-federation/{federation_id}/federatopm-state/{status}` Update tenant federation status (ACTIVE or INACTIVE). #### Zscaler Internet Access (ZIA) New Endpoints [PR #542](#542) - Added the following new Zscaler Private Access (ZPA) API Endpoints: - `GET /integrationPartners` Retrieves a list of partners and services integrated with the Zscaler service - `GET /integrationPartners/crowdStrike/endpoints` Retrieves the list of CrowdStrike endpoints based on the indicator of compromise (IOC) query, with pagination support - `POST /integrationPartners/crowdStrike/endpoints` Accepts a list of CrowdStrike endpoint or device IDs in the request body and fetches detailed endpoint or device data for those IDs - `GET /integrationPartners/crowdStrike/whitelistedBaseUrls` Retrieves a list of CrowdStrike configured whitelisted base URLs (allowist URLs). - `POST /integrationPartners/microsoftDefender/endpoints` Configures the integration of Microsoft Defender for Endpoint APIs with Zscaler. - `GET /integrationPartners/sandbox/report/{md5}` Retrieves the MD5 hash of the file required to view the Sandbox Detail Report. - `GET /httpHeaderProfile` Retrieves a list of HTTP header profiles. - `POST /httpHeaderProfile` Adds a new HTTP header profile. - `PUT /httpHeaderProfile/{id}` Updates the HTTP header profile based on the specified ID - `DELETE /httpHeaderProfile/{id}` Deletes the HTTP header profile based on the specified ID - `GET /httpHeaderActionProfile` Retrieves a list of HTTP header insertion profiles. - `POST /httpHeaderActionProfile` Adds a new HTTP header insertion profile. - `PUT /httpHeaderActionProfile/{id}` Updates the HTTP header insertion profile based on the specified ID - `DELETE /httpHeaderActionProfile/{id}` Deletes the HTTP header insertion profile based on the specified ID
1 parent a3a7bee commit 46d6f59

87 files changed

Lines changed: 12634 additions & 650 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 94 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,98 @@
11
# Zscaler Python SDK Changelog
22

3+
## 1.9.35 (July 6, 2026)
4+
5+
### Notes
6+
7+
- Python Versions: **v3.9, v3.10, v3.11, v3.12**
8+
9+
### Enhancements
10+
11+
#### Zscaler Cellular (ZCell) New Endpoints
12+
[PR #542](https://github.com/zscaler/zscaler-sdk-python/pull/542) - Added the following new Zscaler Cellular (ZCell) API Endpoints:
13+
- Added `GET /customers/{id}/anomaly-policy` to retrieve the list of anomaly policies.
14+
- Added `POST /customers/{id}/anomaly-policy` to create a new anomaly policy.
15+
- Added `PATCH /customers/{id}/anomaly-policy/{policyId}` to update an anomaly policy.
16+
- Added `DELETE /customers/{id}/anomaly-policy/{policyId}` to delete an anomaly policy.
17+
- Added `GET /customers/{id}/anomaly-policy/{policyId}/logs` to retrieve past anomaly policy logs.
18+
- Added `PATCH /customers/{id}/anomaly-policy/{policyId}/status` to enable or disable an anomaly policy.
19+
- Added `GET /customers/{id}/anomaly-policy/{policyId}/violations` to retrieve anomaly policy violations.
20+
- Added `GET /customers/{id}/anomaly-policy/{policyId}/violations/{iccid}` to retrieve anomaly policy violations by ICCID.
21+
- Added `GET /customers/{id}/sim-location-groups` to retrieve the list of SIM location groups.
22+
- Added `GET /customers/{id}/sim-location-groups/{groupId}` to retrieve a SIM location group.
23+
- Added `POST /customers/{id}/sim-location-groups` to create a SIM location group.
24+
- Added `PUT /customers/{id}/sim-location-groups/{groupId}` to update a SIM location group.
25+
- Added `DELETE /customers/{id}/sim-location-groups/{groupId}` to delete a SIM location group.
26+
- Added `POST /customers/{id}/sim/analytics/map` to retrieve SIM analytics map data.
27+
- Added `GET /customers/{id}/sim/analytics/summary` to retrieve the SIM analytics summary.
28+
- Added `GET /customers/{id}/sim/analytics/usage/countries` to retrieve SIM usage by country.
29+
- Added `GET /customers/{id}/sim/analytics/usage/day` to retrieve SIM usage by day.
30+
- Added `GET /customers/{id}/sim/analytics/usage/sims` to retrieve SIM usage by SIM.
31+
- Added `GET /customers/{id}/regions` to retrieve the list of customer regions.
32+
- Added `PUT /customers/{id}/regions` to deploy or update customer regions.
33+
- Added `GET /customers/{id}/regions/operational-status` to retrieve the operational status of customer regions.
34+
- Added `POST /audit/customers/{id}/search` to search customer audit data.
35+
- Added `GET /audit/metadata` to retrieve audit metadata.
36+
- Added `POST /network-events/{id}/search/startTime/{startTime}/endTime/{endTime}` to search network events within a time window.
37+
- Added `GET /customers/{id}/sims/details` to retrieve SIM details by ICCID.
38+
- Added `POST /customers/{id}/sims/download` to download SIM data as a CSV file.
39+
- Added `PATCH /customers/{id}/sims/assign/tag` to assign a tag to SIMs.
40+
- Added `PATCH /customers/{id}/sims/lock` to lock SIMs.
41+
- Added `POST /customers/{id}/sims/search` to search SIM data with filtering and pagination.
42+
- Added `PATCH /customers/{id}/sims/status` to update the status of SIMs.
43+
- Added `PATCH /customers/{id}/sims/{iccid}/assign` to assign an eSIM and return the activation code.
44+
- Added `PATCH /customers/{id}/sims/{iccid}/state` to fetch and refresh the provider eSIM state.
45+
- Added `GET /customers/{id}/tag` to retrieve the list of tags.
46+
- Added `POST /customers/{id}/tag` to create a new tag.
47+
- Added `GET /customers/{id}` to retrieve customer data.
48+
- Added `PUT /customers/{id}` to activate an end customer.
49+
- Added support for a configurable ZCell customer id via the `zcellCustomerId` config attribute and the `ZCELL_CUSTOMER_ID` environment variable, which is automatically injected into the `/customers/{id}` request path so it does not need to be passed on every call. The explicit `id` argument is still supported and takes precedence. This value is independent from ZPA's `customerId`.
50+
51+
#### Zscaler Private Access (ZPA) New Endpoints
52+
[PR #542](https://github.com/zscaler/zscaler-sdk-python/pull/542) - Added the following new Zscaler Private Access (ZPA) API Endpoints:
53+
- Added `GET /application/host/{host_id}` - Get federated applications with search, sorting, and pagination
54+
- Added `PUT /application/federate` - Federate an application with guest customers
55+
- Added `PUT /policySet/rules/policyType/GLOBAL_POLICY/guest/{guest_id}` - Get policy rules created by partner on federated applications
56+
- Added `GET /businessContinuitySettings/certificate` - Download SP Certificate
57+
- Added `GET /businessContinuitySettings/metadata` - Download SP Metadata information
58+
- Added `GET /businessContinuitySettings` - Gets Business Continuity Setting for customer
59+
- Added `POST /businessContinuitySettings` - Creates Business Continuity Setting for the customer
60+
- Added `GET /businessContinuitySettings/{id}` - Get Business Continuity Setting for the given customer by Id
61+
- Added `PUT /businessContinuitySettings/{id}` - Update Business Continuity Setting for the given customer by Id
62+
- Added `DELETE /businessContinuitySettings/{id}` - Delete Business Continuity Setting for the Customer
63+
- Added `GET /iamidpmapping` Retrieves the IamIdpMapping details for the customer
64+
- Added `GET /privateCloud` Retrieves all configured Private clouds for the specified customer.
65+
- Added `GET /privateCloud` Retrieves Private cloud details for the specified ID.
66+
- Added `POST /privateCloud` Adds a new Private cloud for the specified customer.
67+
- Added `PUT /privateCloud` Updates the Private cloud for the specified ID.
68+
- Added `DELETE /privateCloud` Deletes the Private cloud for the specified ID.
69+
- Added `GET /tenant-federation/partners` Retrieves active federation partners for a customer.
70+
- Added `PUT /tenant-federation/approval` Request approval for tenant federation using token.
71+
- Added `POST /tenant-federation/token` Create federation token for a customer by microtenant.
72+
- Added `POST /tenant-federation/token/verify` Verify federation token.
73+
- Added `GET /tenant-federation` Get provisioning requests for a customer with search, sorting, and pagination.
74+
- Added `DELETE /tenant-federation/{federation_id}` Delete tenant federation by Federation ID.
75+
- Added `PUT /tenant-federation/{federation_id}/provisioning-state/{status}` Update tenant federation provisioning state (APPROVED, DENIED, TERMINATED).
76+
- Added `PUT /tenant-federation/{federation_id}/notes` Update notes for tenant federation provisioning. Initiator updates initiatorNotes, partner updates partnerNotes.
77+
- Added `PUT /tenant-federation/{federation_id}/federatopm-state/{status}` Update tenant federation status (ACTIVE or INACTIVE).
78+
79+
#### Zscaler Internet Access (ZIA) New Endpoints
80+
[PR #542](https://github.com/zscaler/zscaler-sdk-python/pull/542) - Added the following new Zscaler Private Access (ZPA) API Endpoints:
81+
- `GET /integrationPartners` Retrieves a list of partners and services integrated with the Zscaler service
82+
- `GET /integrationPartners/crowdStrike/endpoints` Retrieves the list of CrowdStrike endpoints based on the indicator of compromise (IOC) query, with pagination support
83+
- `POST /integrationPartners/crowdStrike/endpoints` Accepts a list of CrowdStrike endpoint or device IDs in the request body and fetches detailed endpoint or device data for those IDs
84+
- `GET /integrationPartners/crowdStrike/whitelistedBaseUrls` Retrieves a list of CrowdStrike configured whitelisted base URLs (allowist URLs).
85+
- `POST /integrationPartners/microsoftDefender/endpoints` Configures the integration of Microsoft Defender for Endpoint APIs with Zscaler.
86+
- `GET /integrationPartners/sandbox/report/{md5}` Retrieves the MD5 hash of the file required to view the Sandbox Detail Report.
87+
- `GET /httpHeaderProfile` Retrieves a list of HTTP header profiles.
88+
- `POST /httpHeaderProfile` Adds a new HTTP header profile.
89+
- `PUT /httpHeaderProfile/{id}` Updates the HTTP header profile based on the specified ID
90+
- `DELETE /httpHeaderProfile/{id}` Deletes the HTTP header profile based on the specified ID
91+
- `GET /httpHeaderActionProfile` Retrieves a list of HTTP header insertion profiles.
92+
- `POST /httpHeaderActionProfile` Adds a new HTTP header insertion profile.
93+
- `PUT /httpHeaderActionProfile/{id}` Updates the HTTP header insertion profile based on the specified ID
94+
- `DELETE /httpHeaderActionProfile/{id}` Deletes the HTTP header insertion profile based on the specified ID
95+
396
## 1.9.34 (July 1, 2026)
497

598
### Notes
@@ -4817,4 +4910,4 @@ Refer to the [README](https://github.com/zscaler/zscaler-sdk-python/blob/master/
48174910

48184911
- Python Versions: **v3.8, v3.9, v3.10, v3.11**
48194912

4820-
🎉 **Initial Release** 🎉
4913+
🎉 **Initial Release** 🎉

CLAUDE.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,22 @@ These shadow `transform_common_id_fields` for those fields (the helper finds not
9797

9898
`add_id_groups` (also in `zscaler/utils.py`) is the original ZPA helper and never coerces. It still exists for backwards compatibility and is kept in `application_segment.py`'s `add_segment_provision` flow and `pra_credential_pool.py`. New code in ZPA should prefer `transform_common_id_fields(..., coerce_ids=False)` so the service converges on a single helper.
9999

100+
## ZCell-Specific Architecture
101+
102+
Every ZCell endpoint is scoped to a customer (`/customers/{id}`). Rather than forcing callers to repeat that id on every call, the SDK resolves it once and auto-injects it — analogous to, but **completely independent from**, ZPA's `customerId`. Never conflate `zcellCustomerId` with ZPA's `customerId`.
103+
104+
### `zcellCustomerId` resolution
105+
106+
- **Config key**: `zcellCustomerId` (declared in `zscaler/config/config_setter.py`'s `_DEFAULT_CONFIG["client"]`). **Env var**: `ZCELL_CUSTOMER_ID`. Both are distinct from ZPA's `customerId` / `ZPA_CUSTOMER_ID`.
107+
- `zscaler/oneapi_client.py` resolves `zcellCustomerId` (config → `ZCELL_CUSTOMER_ID` env) and writes the resolved value back into `self._config["client"]["zcellCustomerId"]` after `ConfigValidator`, so the env fallback reaches the service clients.
108+
- `ZCellService.__init__(request_executor, config)` forwards `config` to every ZCell API. Each API `__init__(self, request_executor, config=None)` reads `self._zcell_customer_id = (config or {}).get("client", {}).get("zcellCustomerId")`.
109+
- Every ZCell method keeps `id: str = None` as its first parameter (for backwards compatibility) and resolves `id = id or self._zcell_customer_id` before building the URL. **Precedence**: explicit `id` arg → config `zcellCustomerId``ZCELL_CUSTOMER_ID` env.
110+
- No client-side validation is done when all three are absent (mirrors ZPA): the request proceeds and the API returns the error. For methods whose path requires additional ids after `id` (`policy_id`, `group_id`, `iccid`, `enabled`), those also default to `None` solely to satisfy Python's "no required-argument-after-default" rule — they are still logically required.
111+
112+
### Pagination
113+
114+
ZCell uses **0-based** `page` numbering (default size 10, max 100). The centralized engine (`oneapi_response.py`) has a dedicated `zcell` branch that decrements its internal 1-based page counter before each request. Do not change other services' paging when touching this branch.
115+
100116
## Key Conventions
101117

102118
| Aspect | Convention |

README.md

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ used in your server-side code to interact with the Zscaler API platform across m
5757
* [Z-Insights - ZINS](https://help.zscaler.com/zscaler-analytics/getting-started) — GraphQL Analytics API
5858
* [ZMS - Zscaler Microsegmentation](https://help.zscaler.com/legacy-apis/using-zscaler-microsegmentation-api) — GraphQL Microsegmentation API
5959
* [Business Insights](https://automate.zscaler.com/docs/docs/api-reference-and-guides/api-reference/bi)
60+
* [Zscaler Cellular API (ZCell)](https://help.zscaler.com/)
6061

6162
This SDK is designed to support the new Zscaler API framework [OneAPI](https://automate.zscaler.com/docs/getting-started/getting-started)
6263
via a single OAuth2 HTTP client. The SDK is also backwards compatible with the previous
@@ -234,6 +235,7 @@ In most cases, you won't need to build the SDK from source. If you want to build
234235
* [ZMS - Zscaler Microsegmentation](https://help.zscaler.com/legacy-apis/using-zscaler-microsegmentation-api) — GraphQL Microsegmentation API
235236
* [Zscaler AI Guard API](https://help.zscaler.com/ai-guard)
236237
* [Business Insights](https://automate.zscaler.com/docs/docs/api-reference-and-guides/api-reference/bi)
238+
* [Zscaler Cellular API (ZCell)](https://help.zscaler.com/)
237239

238240
## Usage guide
239241

@@ -268,6 +270,7 @@ As of the publication of SDK version => 1.7.x, OneAPI is available for programma
268270
* [ZMS - Zscaler Microsegmentation](https://help.zscaler.com/legacy-apis/using-zscaler-microsegmentation-api) — GraphQL Microsegmentation API
269271
* [Zscaler AI Guard API](https://help.zscaler.com/ai-guard)
270272
* [Business Insights](https://automate.zscaler.com/docs/docs/api-reference-and-guides/api-reference/bi)
273+
* [Zscaler Cellular API (ZCell)](https://help.zscaler.com/)
271274

272275
**NOTE** All other products such as Zscaler Cloud Connector (ZTW) and Zscaler Digital Experience (ZDX) are supported only via the legacy authentication method described in this README.
273276

@@ -379,6 +382,56 @@ The authentication to Zscaler Private Access (ZPA) via the OneAPI framework, req
379382
| `vanityDomain` | _(String)_ Refers to the domain name used by your organization `https://<vanity_domain>.zslogin.net/oauth2/v1/token` | `ZSCALER_VANITY_DOMAIN` |
380383
| `cloud`
381384

385+
### Authenticating to Zscaler Cellular (ZCell)
386+
387+
The authentication to Zscaler Cellular (ZCell) via the OneAPI framework uses the same Zidentity OAuth2 credentials (`clientId`, `clientSecret`/`privateKey`, `vanityDomain`, `cloud`) as the other products. ZCell API endpoints are scoped to a specific customer (`/customers/{id}`), so the SDK provides a dedicated `zcellCustomerId` attribute — and the `ZCELL_CUSTOMER_ID` environment variable — which is automatically injected into the request path. This value is completely independent from ZPA's `customerId`.
388+
389+
You can supply the ZCell customer id in any of three ways (highest precedence first):
390+
391+
1. Explicitly, as the `id` argument on any ZCell method call.
392+
2. Via the `zcellCustomerId` attribute in the client configuration.
393+
3. Via the `ZCELL_CUSTOMER_ID` environment variable.
394+
395+
| Argument | Description | Environment variable |
396+
|--------------|-------------|-------------------|
397+
| `clientId` | _(String)_ Zscaler API Client ID, used with `clientSecret` or `privateKey` OAuth auth mode.| `ZSCALER_CLIENT_ID` |
398+
| `clientSecret` | _(String)_ A string that contains the password for the API admin.| `ZSCALER_CLIENT_SECRET` |
399+
| `privateKey` | _(String)_ A string Private key value.| `ZSCALER_PRIVATE_KEY` |
400+
| `vanityDomain` | _(String)_ Refers to the domain name used by your organization `https://<vanity_domain>.zslogin.net/oauth2/v1/token` | `ZSCALER_VANITY_DOMAIN` |
401+
| `cloud` | _(String)_ The host and basePath for the cloud services API is `$api.<cloud_name>.zsapi.net`.| `ZSCALER_CLOUD` |
402+
| `zcellCustomerId` | _(String)_ The ZCell customer ID automatically scoped into the `/customers/{id}` request path. Independent from ZPA's `customerId`.| `ZCELL_CUSTOMER_ID` |
403+
404+
Initialize the client with `zcellCustomerId` and call any ZCell service without repeating the customer id on every method:
405+
406+
```py
407+
from zscaler import ZscalerClient
408+
409+
config = {
410+
"clientId": '{yourClientId}',
411+
"clientSecret": '{yourClientSecret}',
412+
"vanityDomain": '{yourvanityDomain}',
413+
"cloud": "beta", # Optional when authenticating to an alternative cloud environment
414+
"zcellCustomerId": "72058304855015424", # ZCell customer id (independent from ZPA's customerId)
415+
"logging": {"enabled": False, "verbose": False},
416+
}
417+
418+
def main():
419+
with ZscalerClient(config) as client:
420+
# zcellCustomerId is injected automatically — no id argument needed
421+
tags, resp, err = client.zcell.tag_handling.list_tag()
422+
if err:
423+
print(f"Error listing ZCell tags: {err}")
424+
return
425+
for tag in tags:
426+
print(tag)
427+
428+
# You can still override the customer id explicitly per call
429+
tags, resp, err = client.zcell.tag_handling.list_tag(id="another-customer-id")
430+
431+
if __name__ == "__main__":
432+
main()
433+
```
434+
382435
### Initialize OneAPI OAuth 2.0 Client
383436

384437
#### OneAPI Client ID and Client Secret Authentication
@@ -626,7 +679,7 @@ The header `x-ratelimit-reset` is returned in the API response for each API call
626679

627680
## Pagination
628681

629-
The pagination system in this SDK is unified across `ZCC`, `ZTW`, `ZDX`, `ZIA`, `ZPA`, `ZWA`
682+
The pagination system in this SDK is unified across `ZCC`, `ZTW`, `ZDX`, `ZIA`, `ZPA`, `ZWA`, `ZCell`
630683
and is applied transparently whether you're using the Legacy API Client or the new OneAPI OAuth2 Client.
631684

632685
✅ This means no code changes are needed when transitioning from the legacy API framework to OneAPI framework.
@@ -765,6 +818,7 @@ Each Zscaler service has its own pagination requirements and limits. The SDK aut
765818
| ZPA | 20 | 500 | Uses `page`, `pagesize` |
766819
| ZTW | 100 | Varies | Uses `page`, `pageSize` |
767820
| ZWA | Varies by endpoint | Varies | Uses `page`, `pageSize` |
821+
| ZCell | 10 | 100 | Uses `page` (0-based) + `pageSize` |
768822

769823
**Important Notes:**
770824
- ✅ The SDK automatically uses each API's default page size when no `page_size` is specified

0 commit comments

Comments
 (0)