zscaler-sdk-python 0.5.1__tar.gz → 0.5.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/PKG-INFO +1 -1
  2. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/pyproject.toml +1 -1
  3. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/__init__.py +1 -1
  4. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zia/firewall.py +29 -12
  5. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/LICENSE.md +0 -0
  6. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/README.md +0 -0
  7. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/cache/__init__.py +0 -0
  8. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/cache/cache.py +0 -0
  9. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/cache/no_op_cache.py +0 -0
  10. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/cache/zscaler_cache.py +0 -0
  11. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/constants.py +0 -0
  12. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/errors/__init__.py +0 -0
  13. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/errors/error.py +0 -0
  14. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/errors/http_error.py +0 -0
  15. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/errors/zscaler_api_error.py +0 -0
  16. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/exceptions/__init__.py +0 -0
  17. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/exceptions/exceptions.py +0 -0
  18. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/logger.py +0 -0
  19. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/ratelimiter/__init__.py +0 -0
  20. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/ratelimiter/ratelimiter.py +0 -0
  21. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/user_agent.py +0 -0
  22. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/utils.py +0 -0
  23. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zia/__init__.py +0 -0
  24. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zia/activate.py +0 -0
  25. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zia/admin_and_role_management.py +0 -0
  26. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zia/apptotal.py +0 -0
  27. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zia/audit_logs.py +0 -0
  28. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zia/authentication_settings.py +0 -0
  29. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zia/client.py +0 -0
  30. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zia/cloud_apps.py +0 -0
  31. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zia/device_management.py +0 -0
  32. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zia/dlp.py +0 -0
  33. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zia/errors.py +0 -0
  34. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zia/forwarding_control.py +0 -0
  35. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zia/isolation_profile.py +0 -0
  36. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zia/labels.py +0 -0
  37. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zia/locations.py +0 -0
  38. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zia/sandbox.py +0 -0
  39. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zia/security.py +0 -0
  40. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zia/ssl_inspection.py +0 -0
  41. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zia/traffic.py +0 -0
  42. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zia/url_categories.py +0 -0
  43. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zia/url_filtering.py +0 -0
  44. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zia/users.py +0 -0
  45. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zia/web_dlp.py +0 -0
  46. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zia/workload_groups.py +0 -0
  47. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zia/zpa_gateway.py +0 -0
  48. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zpa/README.md +0 -0
  49. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zpa/__init__.py +0 -0
  50. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zpa/app_segments.py +0 -0
  51. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zpa/app_segments_inspection.py +0 -0
  52. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zpa/app_segments_pra.py +0 -0
  53. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zpa/authdomains.py +0 -0
  54. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zpa/certificates.py +0 -0
  55. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zpa/client.py +0 -0
  56. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zpa/cloud_connector_groups.py +0 -0
  57. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zpa/connectors.py +0 -0
  58. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zpa/emergency_access.py +0 -0
  59. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zpa/errors.py +0 -0
  60. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zpa/idp.py +0 -0
  61. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zpa/inspection.py +0 -0
  62. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zpa/isolation.py +0 -0
  63. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zpa/lss.py +0 -0
  64. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zpa/machine_groups.py +0 -0
  65. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zpa/microtenants.py +0 -0
  66. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zpa/policies.py +0 -0
  67. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zpa/posture_profiles.py +0 -0
  68. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zpa/privileged_remote_access.py +0 -0
  69. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zpa/provisioning.py +0 -0
  70. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zpa/saml_attributes.py +0 -0
  71. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zpa/scim_attributes.py +0 -0
  72. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zpa/scim_groups.py +0 -0
  73. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zpa/segment_groups.py +0 -0
  74. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zpa/server_groups.py +0 -0
  75. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zpa/servers.py +0 -0
  76. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zpa/service_edges.py +0 -0
  77. {zscaler_sdk_python-0.5.1 → zscaler_sdk_python-0.5.2}/zscaler/zpa/trusted_networks.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zscaler-sdk-python
3
- Version: 0.5.1
3
+ Version: 0.5.2
4
4
  Summary: Official Python SDK for the Zscaler Products (Beta)
5
5
  Home-page: https://github.com/zscaler/zscaler-sdk-python
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "zscaler-sdk-python"
3
- version = "0.5.1"
3
+ version = "0.5.2"
4
4
  description = "Official Python SDK for the Zscaler Products (Beta)"
5
5
  authors = ["Zscaler, Inc. <devrel@zscaler.com>"]
6
6
  license = "MIT"
@@ -29,7 +29,7 @@ __license__ = "MIT"
29
29
  __contributors__ = [
30
30
  "William Guilherme",
31
31
  ]
32
- __version__ = "0.5.1"
32
+ __version__ = "0.5.2"
33
33
 
34
34
  from zscaler.zia import ZIAClientHelper # noqa
35
35
  from zscaler.zpa import ZPAClientHelper # noqa
@@ -920,13 +920,11 @@ class FirewallPolicyAPI:
920
920
 
921
921
  response = self.rest.post("networkServices", json=payload)
922
922
  if isinstance(response, Response):
923
- # this is only true when the creation failed (status code is not 2xx)
924
923
  status_code = response.status_code
925
- # Handle error response
926
924
  raise Exception(f"API call failed with status {status_code}: {response.json()}")
927
925
  return response
928
926
 
929
- def update_network_service(self, service_id: str, ports: list = None, **kwargs) -> Box:
927
+ def update_network_service(self, service_id: str, ports: list = None, **kwargs) -> dict:
930
928
  """
931
929
  Updates the specified Network Service.
932
930
 
@@ -952,7 +950,7 @@ class FirewallPolicyAPI:
952
950
  description (str): Additional information on the Network Service.
953
951
 
954
952
  Returns:
955
- :obj:`Box`: The newly created Network Service resource record.
953
+ :obj:`dict`: The updated Network Service resource record.
956
954
 
957
955
  Examples:
958
956
  Update the name and description for a Network Service:
@@ -963,28 +961,47 @@ class FirewallPolicyAPI:
963
961
 
964
962
  Updates the ports for a Network Service, leaving other fields intact:
965
963
 
966
- >>> zia.firewall.add_network_service('959093',
964
+ >>> zia.firewall.update_network_service('959093',
967
965
  ... ports=[
968
966
  ... ('dest', 'tcp', '500', '510')])
969
967
 
970
968
  """
971
- payload = {snake_to_camel(k): v for k, v in self.get_network_service(service_id).items()}
969
+ # Fetch the existing network service details
970
+ existing_service = self.get_network_service(service_id).to_dict()
971
+
972
+ # Build the payload
973
+ payload = {
974
+ "id": service_id,
975
+ "name": existing_service["name"],
976
+ "description": existing_service.get("description", ""),
977
+ "type": existing_service.get("type", "CUSTOM"),
978
+ }
972
979
 
973
980
  # Convert tuple list to dict and add to payload
974
981
  if ports is not None:
975
- # Clear existing ports and set new values
976
982
  for items in ports:
977
- port_key = f"{items[0]}{items[1].title()}Ports"
978
- payload[port_key] = []
979
- payload[port_key].append({"start": items[2]})
983
+ port_dict = {"start": int(items[2])}
980
984
  if len(items) == 4:
981
- payload[port_key].append({"end": items[3]})
985
+ port_dict["end"] = int(items[3])
986
+ payload.setdefault(f"{items[0]}{items[1].title()}Ports", []).append(port_dict)
987
+ else:
988
+ # Use existing ports if not provided
989
+ for key in ["src_tcp_ports", "dest_tcp_ports", "src_udp_ports", "dest_udp_ports"]:
990
+ if key in existing_service:
991
+ payload[snake_to_camel(key)] = existing_service[key]
982
992
 
983
993
  # Add optional parameters to payload
984
994
  for key, value in kwargs.items():
985
995
  payload[snake_to_camel(key)] = value
986
996
 
987
- return self.rest.put(f"networkServices/{service_id}", json=payload)
997
+ # Remove invalid attributes from the payload
998
+ payload.pop("creator_context", None)
999
+ payload.pop("is_name_l10n_tag", None)
1000
+
1001
+ response = self.rest.put(f"networkServices/{service_id}", json=payload)
1002
+ if isinstance(response, Response) and not response.ok:
1003
+ raise Exception(f"API call failed with status {response.status_code}: {response.json()}")
1004
+ return self.get_network_service(service_id)
988
1005
 
989
1006
  def list_time_windows(self) -> Box:
990
1007
  """