latitudesh-python-sdk 2.3.0__py3-none-any.whl

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 (242) hide show
  1. latitudesh_python_sdk/__init__.py +18 -0
  2. latitudesh_python_sdk/_hooks/__init__.py +5 -0
  3. latitudesh_python_sdk/_hooks/registration.py +13 -0
  4. latitudesh_python_sdk/_hooks/sdkhooks.py +76 -0
  5. latitudesh_python_sdk/_hooks/types.py +113 -0
  6. latitudesh_python_sdk/_version.py +17 -0
  7. latitudesh_python_sdk/apikeys.py +703 -0
  8. latitudesh_python_sdk/basesdk.py +374 -0
  9. latitudesh_python_sdk/billing.py +197 -0
  10. latitudesh_python_sdk/events_sdk.py +298 -0
  11. latitudesh_python_sdk/firewalls_sdk.py +1786 -0
  12. latitudesh_python_sdk/httpclient.py +125 -0
  13. latitudesh_python_sdk/ipaddresses_sdk.py +470 -0
  14. latitudesh_python_sdk/models/__init__.py +3581 -0
  15. latitudesh_python_sdk/models/api_key.py +81 -0
  16. latitudesh_python_sdk/models/apierror.py +40 -0
  17. latitudesh_python_sdk/models/assign_server_virtual_networkop.py +43 -0
  18. latitudesh_python_sdk/models/bandwidth_packages.py +67 -0
  19. latitudesh_python_sdk/models/bandwidth_plan_data.py +72 -0
  20. latitudesh_python_sdk/models/bandwidth_plans.py +26 -0
  21. latitudesh_python_sdk/models/billing_usage.py +249 -0
  22. latitudesh_python_sdk/models/container_plan_data.py +163 -0
  23. latitudesh_python_sdk/models/create_api_key.py +40 -0
  24. latitudesh_python_sdk/models/create_firewall_assignmentop.py +61 -0
  25. latitudesh_python_sdk/models/create_firewallop.py +73 -0
  26. latitudesh_python_sdk/models/create_ipmi_sessionop.py +16 -0
  27. latitudesh_python_sdk/models/create_projectop.py +79 -0
  28. latitudesh_python_sdk/models/create_server_actionop.py +69 -0
  29. latitudesh_python_sdk/models/create_server_out_of_bandop.py +61 -0
  30. latitudesh_python_sdk/models/create_server_reinstallop.py +140 -0
  31. latitudesh_python_sdk/models/create_serverop.py +173 -0
  32. latitudesh_python_sdk/models/create_tagop.py +50 -0
  33. latitudesh_python_sdk/models/create_virtual_machine_actionop.py +63 -0
  34. latitudesh_python_sdk/models/create_virtual_networkop.py +72 -0
  35. latitudesh_python_sdk/models/custom_tag.py +26 -0
  36. latitudesh_python_sdk/models/custom_tag_data.py +54 -0
  37. latitudesh_python_sdk/models/custom_tags.py +26 -0
  38. latitudesh_python_sdk/models/delete_api_keyop.py +16 -0
  39. latitudesh_python_sdk/models/delete_firewall_assignmentop.py +25 -0
  40. latitudesh_python_sdk/models/delete_firewallop.py +18 -0
  41. latitudesh_python_sdk/models/delete_project_ssh_keyop.py +23 -0
  42. latitudesh_python_sdk/models/delete_project_user_dataop.py +23 -0
  43. latitudesh_python_sdk/models/delete_projectop.py +18 -0
  44. latitudesh_python_sdk/models/delete_ssh_keyop.py +16 -0
  45. latitudesh_python_sdk/models/delete_storage_filesystemsop.py +16 -0
  46. latitudesh_python_sdk/models/delete_storage_volumesop.py +16 -0
  47. latitudesh_python_sdk/models/delete_user_dataop.py +16 -0
  48. latitudesh_python_sdk/models/delete_virtual_networks_assignmentsop.py +16 -0
  49. latitudesh_python_sdk/models/delete_vpn_sessionop.py +16 -0
  50. latitudesh_python_sdk/models/deploy_config.py +62 -0
  51. latitudesh_python_sdk/models/destroy_serverop.py +31 -0
  52. latitudesh_python_sdk/models/destroy_tagop.py +16 -0
  53. latitudesh_python_sdk/models/destroy_team_memberop.py +18 -0
  54. latitudesh_python_sdk/models/destroy_virtual_machineop.py +16 -0
  55. latitudesh_python_sdk/models/destroy_virtual_networkop.py +18 -0
  56. latitudesh_python_sdk/models/event_data.py +98 -0
  57. latitudesh_python_sdk/models/events.py +26 -0
  58. latitudesh_python_sdk/models/filesystem_data.py +57 -0
  59. latitudesh_python_sdk/models/firewall.py +26 -0
  60. latitudesh_python_sdk/models/firewall_assignment_data.py +50 -0
  61. latitudesh_python_sdk/models/firewall_assignments.py +29 -0
  62. latitudesh_python_sdk/models/firewall_data.py +75 -0
  63. latitudesh_python_sdk/models/firewall_server.py +36 -0
  64. latitudesh_python_sdk/models/firewalls.py +26 -0
  65. latitudesh_python_sdk/models/get_all_firewall_assignmentsop.py +51 -0
  66. latitudesh_python_sdk/models/get_bandwidth_plansop.py +62 -0
  67. latitudesh_python_sdk/models/get_billing_usageop.py +46 -0
  68. latitudesh_python_sdk/models/get_containers_planop.py +18 -0
  69. latitudesh_python_sdk/models/get_eventsop.py +126 -0
  70. latitudesh_python_sdk/models/get_firewall_assignmentsop.py +53 -0
  71. latitudesh_python_sdk/models/get_firewallop.py +18 -0
  72. latitudesh_python_sdk/models/get_ipop.py +33 -0
  73. latitudesh_python_sdk/models/get_ipsop.py +120 -0
  74. latitudesh_python_sdk/models/get_planop.py +16 -0
  75. latitudesh_python_sdk/models/get_plans_operating_systemop.py +54 -0
  76. latitudesh_python_sdk/models/get_plansop.py +125 -0
  77. latitudesh_python_sdk/models/get_project_ssh_keyop.py +37 -0
  78. latitudesh_python_sdk/models/get_project_ssh_keysop.py +33 -0
  79. latitudesh_python_sdk/models/get_project_user_dataop.py +38 -0
  80. latitudesh_python_sdk/models/get_project_users_dataop.py +46 -0
  81. latitudesh_python_sdk/models/get_projectsop.py +105 -0
  82. latitudesh_python_sdk/models/get_regionop.py +18 -0
  83. latitudesh_python_sdk/models/get_regionsop.py +42 -0
  84. latitudesh_python_sdk/models/get_role_idop.py +16 -0
  85. latitudesh_python_sdk/models/get_rolesop.py +54 -0
  86. latitudesh_python_sdk/models/get_server_deploy_configop.py +18 -0
  87. latitudesh_python_sdk/models/get_server_out_of_bandop.py +18 -0
  88. latitudesh_python_sdk/models/get_serverop.py +33 -0
  89. latitudesh_python_sdk/models/get_serversop.py +185 -0
  90. latitudesh_python_sdk/models/get_ssh_keyop.py +30 -0
  91. latitudesh_python_sdk/models/get_ssh_keysop.py +31 -0
  92. latitudesh_python_sdk/models/get_storage_filesystemsop.py +22 -0
  93. latitudesh_python_sdk/models/get_storage_volumeop.py +32 -0
  94. latitudesh_python_sdk/models/get_storage_volumesop.py +35 -0
  95. latitudesh_python_sdk/models/get_team_membersop.py +42 -0
  96. latitudesh_python_sdk/models/get_traffic_consumptionop.py +49 -0
  97. latitudesh_python_sdk/models/get_traffic_quotaop.py +20 -0
  98. latitudesh_python_sdk/models/get_user_dataop.py +31 -0
  99. latitudesh_python_sdk/models/get_user_profileop.py +19 -0
  100. latitudesh_python_sdk/models/get_users_dataop.py +44 -0
  101. latitudesh_python_sdk/models/get_virtual_networkop.py +32 -0
  102. latitudesh_python_sdk/models/get_virtual_networks_assignmentsop.py +72 -0
  103. latitudesh_python_sdk/models/get_virtual_networksop.py +69 -0
  104. latitudesh_python_sdk/models/get_vpn_sessionsop.py +70 -0
  105. latitudesh_python_sdk/models/index_virtual_machineop.py +31 -0
  106. latitudesh_python_sdk/models/ip_address.py +122 -0
  107. latitudesh_python_sdk/models/ip_addresses.py +15 -0
  108. latitudesh_python_sdk/models/ipmi_session.py +53 -0
  109. latitudesh_python_sdk/models/latitudesherror.py +30 -0
  110. latitudesh_python_sdk/models/list_firewallsop.py +49 -0
  111. latitudesh_python_sdk/models/membership.py +63 -0
  112. latitudesh_python_sdk/models/no_response_error.py +17 -0
  113. latitudesh_python_sdk/models/operating_system_data.py +65 -0
  114. latitudesh_python_sdk/models/operating_systems.py +26 -0
  115. latitudesh_python_sdk/models/out_of_band_connection.py +88 -0
  116. latitudesh_python_sdk/models/patch_current_teamop.py +91 -0
  117. latitudesh_python_sdk/models/patch_storage_filesystemsop.py +79 -0
  118. latitudesh_python_sdk/models/patch_user_dataop.py +69 -0
  119. latitudesh_python_sdk/models/patch_user_profileop.py +88 -0
  120. latitudesh_python_sdk/models/plan.py +15 -0
  121. latitudesh_python_sdk/models/plan_data.py +210 -0
  122. latitudesh_python_sdk/models/post_api_keyop.py +19 -0
  123. latitudesh_python_sdk/models/post_project_ssh_keyop.py +81 -0
  124. latitudesh_python_sdk/models/post_project_user_dataop.py +68 -0
  125. latitudesh_python_sdk/models/post_ssh_keyop.py +63 -0
  126. latitudesh_python_sdk/models/post_storage_filesystemsop.py +63 -0
  127. latitudesh_python_sdk/models/post_storage_volumes_mountop.py +62 -0
  128. latitudesh_python_sdk/models/post_storage_volumesop.py +63 -0
  129. latitudesh_python_sdk/models/post_team_membersop.py +54 -0
  130. latitudesh_python_sdk/models/post_teamop.py +67 -0
  131. latitudesh_python_sdk/models/post_user_dataop.py +50 -0
  132. latitudesh_python_sdk/models/post_vpn_sessionop.py +63 -0
  133. latitudesh_python_sdk/models/project.py +131 -0
  134. latitudesh_python_sdk/models/project_include.py +75 -0
  135. latitudesh_python_sdk/models/projects.py +15 -0
  136. latitudesh_python_sdk/models/put_project_ssh_keyop.py +87 -0
  137. latitudesh_python_sdk/models/put_project_user_dataop.py +76 -0
  138. latitudesh_python_sdk/models/put_ssh_keyop.py +80 -0
  139. latitudesh_python_sdk/models/put_vpn_sessionop.py +16 -0
  140. latitudesh_python_sdk/models/region.py +50 -0
  141. latitudesh_python_sdk/models/region_resource_data.py +37 -0
  142. latitudesh_python_sdk/models/regions.py +50 -0
  143. latitudesh_python_sdk/models/responsevalidationerror.py +27 -0
  144. latitudesh_python_sdk/models/role.py +26 -0
  145. latitudesh_python_sdk/models/role_data.py +35 -0
  146. latitudesh_python_sdk/models/security.py +25 -0
  147. latitudesh_python_sdk/models/server.py +26 -0
  148. latitudesh_python_sdk/models/server_action.py +52 -0
  149. latitudesh_python_sdk/models/server_data.py +280 -0
  150. latitudesh_python_sdk/models/server_exit_rescue_modeop.py +16 -0
  151. latitudesh_python_sdk/models/server_lockop.py +16 -0
  152. latitudesh_python_sdk/models/server_region_resource_data.py +40 -0
  153. latitudesh_python_sdk/models/server_rescue.py +22 -0
  154. latitudesh_python_sdk/models/server_schedule_deletion.py +44 -0
  155. latitudesh_python_sdk/models/server_schedule_deletionop.py +16 -0
  156. latitudesh_python_sdk/models/server_start_rescue_modeop.py +16 -0
  157. latitudesh_python_sdk/models/server_unlockop.py +16 -0
  158. latitudesh_python_sdk/models/server_unschedule_deletionop.py +16 -0
  159. latitudesh_python_sdk/models/servers.py +26 -0
  160. latitudesh_python_sdk/models/show_virtual_machineop.py +16 -0
  161. latitudesh_python_sdk/models/ssh_key_data.py +55 -0
  162. latitudesh_python_sdk/models/ssh_keys.py +26 -0
  163. latitudesh_python_sdk/models/storage_plan_data.py +47 -0
  164. latitudesh_python_sdk/models/storage_plans.py +26 -0
  165. latitudesh_python_sdk/models/team.py +74 -0
  166. latitudesh_python_sdk/models/team_include.py +43 -0
  167. latitudesh_python_sdk/models/team_members.py +51 -0
  168. latitudesh_python_sdk/models/teams.py +26 -0
  169. latitudesh_python_sdk/models/traffic.py +133 -0
  170. latitudesh_python_sdk/models/traffic_quota.py +106 -0
  171. latitudesh_python_sdk/models/update_api_key.py +48 -0
  172. latitudesh_python_sdk/models/update_api_keyop.py +41 -0
  173. latitudesh_python_sdk/models/update_firewallop.py +89 -0
  174. latitudesh_python_sdk/models/update_plans_bandwidthop.py +50 -0
  175. latitudesh_python_sdk/models/update_projectop.py +95 -0
  176. latitudesh_python_sdk/models/update_server_deploy_configop.py +122 -0
  177. latitudesh_python_sdk/models/update_serverop.py +85 -0
  178. latitudesh_python_sdk/models/update_tagop.py +74 -0
  179. latitudesh_python_sdk/models/update_virtual_networkop.py +67 -0
  180. latitudesh_python_sdk/models/user.py +59 -0
  181. latitudesh_python_sdk/models/user_data.py +26 -0
  182. latitudesh_python_sdk/models/user_data_properties.py +46 -0
  183. latitudesh_python_sdk/models/user_include.py +52 -0
  184. latitudesh_python_sdk/models/user_team.py +61 -0
  185. latitudesh_python_sdk/models/user_teams.py +26 -0
  186. latitudesh_python_sdk/models/user_update.py +37 -0
  187. latitudesh_python_sdk/models/virtual_machine.py +29 -0
  188. latitudesh_python_sdk/models/virtual_machine_attributes.py +115 -0
  189. latitudesh_python_sdk/models/virtual_machine_payload.py +47 -0
  190. latitudesh_python_sdk/models/virtual_machine_plans.py +181 -0
  191. latitudesh_python_sdk/models/virtual_network.py +26 -0
  192. latitudesh_python_sdk/models/virtual_network_assignment.py +29 -0
  193. latitudesh_python_sdk/models/virtual_network_assignment_data.py +65 -0
  194. latitudesh_python_sdk/models/virtual_network_assignments.py +29 -0
  195. latitudesh_python_sdk/models/virtual_network_data.py +114 -0
  196. latitudesh_python_sdk/models/virtual_networks.py +26 -0
  197. latitudesh_python_sdk/models/volume_data.py +111 -0
  198. latitudesh_python_sdk/models/vpn_session_data_with_password.py +77 -0
  199. latitudesh_python_sdk/models/vpn_session_with_password.py +18 -0
  200. latitudesh_python_sdk/operatingsystems_sdk.py +238 -0
  201. latitudesh_python_sdk/plans.py +1304 -0
  202. latitudesh_python_sdk/privatenetworks.py +1612 -0
  203. latitudesh_python_sdk/projects_sdk.py +830 -0
  204. latitudesh_python_sdk/py.typed +1 -0
  205. latitudesh_python_sdk/regions_sdk.py +398 -0
  206. latitudesh_python_sdk/roles.py +398 -0
  207. latitudesh_python_sdk/sdk.py +264 -0
  208. latitudesh_python_sdk/sdkconfiguration.py +50 -0
  209. latitudesh_python_sdk/servers_sdk.py +3414 -0
  210. latitudesh_python_sdk/sshkeys_sdk.py +1882 -0
  211. latitudesh_python_sdk/storage.py +1651 -0
  212. latitudesh_python_sdk/tags.py +715 -0
  213. latitudesh_python_sdk/teams_sdk.py +527 -0
  214. latitudesh_python_sdk/teamsmembers.py +576 -0
  215. latitudesh_python_sdk/traffic_sdk.py +357 -0
  216. latitudesh_python_sdk/types/__init__.py +21 -0
  217. latitudesh_python_sdk/types/basemodel.py +39 -0
  218. latitudesh_python_sdk/userdata_sdk.py +1888 -0
  219. latitudesh_python_sdk/userprofile.py +531 -0
  220. latitudesh_python_sdk/utils/__init__.py +200 -0
  221. latitudesh_python_sdk/utils/annotations.py +79 -0
  222. latitudesh_python_sdk/utils/datetimes.py +23 -0
  223. latitudesh_python_sdk/utils/enums.py +74 -0
  224. latitudesh_python_sdk/utils/eventstreaming.py +248 -0
  225. latitudesh_python_sdk/utils/forms.py +234 -0
  226. latitudesh_python_sdk/utils/headers.py +136 -0
  227. latitudesh_python_sdk/utils/logger.py +27 -0
  228. latitudesh_python_sdk/utils/metadata.py +118 -0
  229. latitudesh_python_sdk/utils/queryparams.py +217 -0
  230. latitudesh_python_sdk/utils/requestbodies.py +66 -0
  231. latitudesh_python_sdk/utils/retries.py +281 -0
  232. latitudesh_python_sdk/utils/security.py +192 -0
  233. latitudesh_python_sdk/utils/serializers.py +249 -0
  234. latitudesh_python_sdk/utils/unmarshal_json_response.py +38 -0
  235. latitudesh_python_sdk/utils/url.py +155 -0
  236. latitudesh_python_sdk/utils/values.py +137 -0
  237. latitudesh_python_sdk/virtualmachines.py +941 -0
  238. latitudesh_python_sdk/vpnsessions.py +715 -0
  239. latitudesh_python_sdk-2.3.0.dist-info/METADATA +787 -0
  240. latitudesh_python_sdk-2.3.0.dist-info/RECORD +242 -0
  241. latitudesh_python_sdk-2.3.0.dist-info/WHEEL +4 -0
  242. latitudesh_python_sdk-2.3.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,1786 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from .basesdk import BaseSDK
4
+ from jsonpath import JSONPath
5
+ from latitudesh_python_sdk import models, utils
6
+ from latitudesh_python_sdk._hooks import HookContext
7
+ from latitudesh_python_sdk.types import OptionalNullable, UNSET
8
+ from latitudesh_python_sdk.utils import get_security_from_env
9
+ from latitudesh_python_sdk.utils.unmarshal_json_response import unmarshal_json_response
10
+ from typing import Any, Dict, List, Mapping, Optional, Union
11
+
12
+
13
+ class FirewallsSDK(BaseSDK):
14
+ def get_all_firewall_assignments(
15
+ self,
16
+ *,
17
+ filter_server: Optional[str] = None,
18
+ page_size: Optional[int] = 20,
19
+ page_number: Optional[int] = 1,
20
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
21
+ server_url: Optional[str] = None,
22
+ timeout_ms: Optional[int] = None,
23
+ http_headers: Optional[Mapping[str, str]] = None,
24
+ ) -> Optional[models.GetAllFirewallAssignmentsResponse]:
25
+ r"""List All Firewall Assignments
26
+
27
+ List all firewall assignments
28
+
29
+ :param filter_server: The server ID to filter by
30
+ :param page_size: Number of items to return per page
31
+ :param page_number: Page number to return (starts at 1)
32
+ :param retries: Override the default retry configuration for this method
33
+ :param server_url: Override the default server URL for this method
34
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
35
+ :param http_headers: Additional headers to set or replace on requests.
36
+ """
37
+ base_url = None
38
+ url_variables = None
39
+ if timeout_ms is None:
40
+ timeout_ms = self.sdk_configuration.timeout_ms
41
+
42
+ if server_url is not None:
43
+ base_url = server_url
44
+ else:
45
+ base_url = self._get_url(base_url, url_variables)
46
+
47
+ request = models.GetAllFirewallAssignmentsRequest(
48
+ filter_server=filter_server,
49
+ page_size=page_size,
50
+ page_number=page_number,
51
+ )
52
+
53
+ req = self._build_request(
54
+ method="GET",
55
+ path="/firewalls/assignments",
56
+ base_url=base_url,
57
+ url_variables=url_variables,
58
+ request=request,
59
+ request_body_required=False,
60
+ request_has_path_params=False,
61
+ request_has_query_params=True,
62
+ user_agent_header="user-agent",
63
+ accept_header_value="application/vnd.api+json",
64
+ http_headers=http_headers,
65
+ security=self.sdk_configuration.security,
66
+ allow_empty_value=None,
67
+ timeout_ms=timeout_ms,
68
+ )
69
+
70
+ if retries == UNSET:
71
+ if self.sdk_configuration.retry_config is not UNSET:
72
+ retries = self.sdk_configuration.retry_config
73
+
74
+ retry_config = None
75
+ if isinstance(retries, utils.RetryConfig):
76
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
77
+
78
+ http_res = self.do_request(
79
+ hook_ctx=HookContext(
80
+ config=self.sdk_configuration,
81
+ base_url=base_url or "",
82
+ operation_id="get-all-firewall-assignments",
83
+ oauth2_scopes=None,
84
+ security_source=get_security_from_env(
85
+ self.sdk_configuration.security, models.Security
86
+ ),
87
+ ),
88
+ request=req,
89
+ error_status_codes=["4XX", "5XX"],
90
+ retry_config=retry_config,
91
+ )
92
+
93
+ def next_func() -> Optional[models.GetAllFirewallAssignmentsResponse]:
94
+ body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]])
95
+ page = request.page_number if not request.page_number is None else 1
96
+ next_page = page + 1
97
+
98
+ if not http_res.text:
99
+ return None
100
+ results = JSONPath("$.data").parse(body)
101
+ if len(results) == 0 or len(results[0]) == 0:
102
+ return None
103
+ limit = request.page_size if not request.page_size is None else 20
104
+ if len(results[0]) < limit:
105
+ return None
106
+
107
+ return self.get_all_firewall_assignments(
108
+ filter_server=filter_server,
109
+ page_size=page_size,
110
+ page_number=next_page,
111
+ retries=retries,
112
+ )
113
+
114
+ if utils.match_response(http_res, "200", "application/vnd.api+json"):
115
+ return models.GetAllFirewallAssignmentsResponse(
116
+ result=unmarshal_json_response(models.FirewallAssignments, http_res),
117
+ next=next_func,
118
+ )
119
+ if utils.match_response(http_res, "4XX", "*"):
120
+ http_res_text = utils.stream_to_text(http_res)
121
+ raise models.APIError("API error occurred", http_res, http_res_text)
122
+ if utils.match_response(http_res, "5XX", "*"):
123
+ http_res_text = utils.stream_to_text(http_res)
124
+ raise models.APIError("API error occurred", http_res, http_res_text)
125
+
126
+ raise models.APIError("Unexpected response received", http_res)
127
+
128
+ async def get_all_firewall_assignments_async(
129
+ self,
130
+ *,
131
+ filter_server: Optional[str] = None,
132
+ page_size: Optional[int] = 20,
133
+ page_number: Optional[int] = 1,
134
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
135
+ server_url: Optional[str] = None,
136
+ timeout_ms: Optional[int] = None,
137
+ http_headers: Optional[Mapping[str, str]] = None,
138
+ ) -> Optional[models.GetAllFirewallAssignmentsResponse]:
139
+ r"""List All Firewall Assignments
140
+
141
+ List all firewall assignments
142
+
143
+ :param filter_server: The server ID to filter by
144
+ :param page_size: Number of items to return per page
145
+ :param page_number: Page number to return (starts at 1)
146
+ :param retries: Override the default retry configuration for this method
147
+ :param server_url: Override the default server URL for this method
148
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
149
+ :param http_headers: Additional headers to set or replace on requests.
150
+ """
151
+ base_url = None
152
+ url_variables = None
153
+ if timeout_ms is None:
154
+ timeout_ms = self.sdk_configuration.timeout_ms
155
+
156
+ if server_url is not None:
157
+ base_url = server_url
158
+ else:
159
+ base_url = self._get_url(base_url, url_variables)
160
+
161
+ request = models.GetAllFirewallAssignmentsRequest(
162
+ filter_server=filter_server,
163
+ page_size=page_size,
164
+ page_number=page_number,
165
+ )
166
+
167
+ req = self._build_request_async(
168
+ method="GET",
169
+ path="/firewalls/assignments",
170
+ base_url=base_url,
171
+ url_variables=url_variables,
172
+ request=request,
173
+ request_body_required=False,
174
+ request_has_path_params=False,
175
+ request_has_query_params=True,
176
+ user_agent_header="user-agent",
177
+ accept_header_value="application/vnd.api+json",
178
+ http_headers=http_headers,
179
+ security=self.sdk_configuration.security,
180
+ allow_empty_value=None,
181
+ timeout_ms=timeout_ms,
182
+ )
183
+
184
+ if retries == UNSET:
185
+ if self.sdk_configuration.retry_config is not UNSET:
186
+ retries = self.sdk_configuration.retry_config
187
+
188
+ retry_config = None
189
+ if isinstance(retries, utils.RetryConfig):
190
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
191
+
192
+ http_res = await self.do_request_async(
193
+ hook_ctx=HookContext(
194
+ config=self.sdk_configuration,
195
+ base_url=base_url or "",
196
+ operation_id="get-all-firewall-assignments",
197
+ oauth2_scopes=None,
198
+ security_source=get_security_from_env(
199
+ self.sdk_configuration.security, models.Security
200
+ ),
201
+ ),
202
+ request=req,
203
+ error_status_codes=["4XX", "5XX"],
204
+ retry_config=retry_config,
205
+ )
206
+
207
+ def next_func() -> Optional[models.GetAllFirewallAssignmentsResponse]:
208
+ body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]])
209
+ page = request.page_number if not request.page_number is None else 1
210
+ next_page = page + 1
211
+
212
+ if not http_res.text:
213
+ return None
214
+ results = JSONPath("$.data").parse(body)
215
+ if len(results) == 0 or len(results[0]) == 0:
216
+ return None
217
+ limit = request.page_size if not request.page_size is None else 20
218
+ if len(results[0]) < limit:
219
+ return None
220
+
221
+ return self.get_all_firewall_assignments(
222
+ filter_server=filter_server,
223
+ page_size=page_size,
224
+ page_number=next_page,
225
+ retries=retries,
226
+ )
227
+
228
+ if utils.match_response(http_res, "200", "application/vnd.api+json"):
229
+ return models.GetAllFirewallAssignmentsResponse(
230
+ result=unmarshal_json_response(models.FirewallAssignments, http_res),
231
+ next=next_func,
232
+ )
233
+ if utils.match_response(http_res, "4XX", "*"):
234
+ http_res_text = await utils.stream_to_text_async(http_res)
235
+ raise models.APIError("API error occurred", http_res, http_res_text)
236
+ if utils.match_response(http_res, "5XX", "*"):
237
+ http_res_text = await utils.stream_to_text_async(http_res)
238
+ raise models.APIError("API error occurred", http_res, http_res_text)
239
+
240
+ raise models.APIError("Unexpected response received", http_res)
241
+
242
+ def create(
243
+ self,
244
+ *,
245
+ data: Union[
246
+ models.CreateFirewallFirewallsData,
247
+ models.CreateFirewallFirewallsDataTypedDict,
248
+ ],
249
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
250
+ server_url: Optional[str] = None,
251
+ timeout_ms: Optional[int] = None,
252
+ http_headers: Optional[Mapping[str, str]] = None,
253
+ ) -> models.Firewall:
254
+ r"""Create a firewall
255
+
256
+ Create a firewall
257
+
258
+ :param data:
259
+ :param retries: Override the default retry configuration for this method
260
+ :param server_url: Override the default server URL for this method
261
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
262
+ :param http_headers: Additional headers to set or replace on requests.
263
+ """
264
+ base_url = None
265
+ url_variables = None
266
+ if timeout_ms is None:
267
+ timeout_ms = self.sdk_configuration.timeout_ms
268
+
269
+ if server_url is not None:
270
+ base_url = server_url
271
+ else:
272
+ base_url = self._get_url(base_url, url_variables)
273
+
274
+ request = models.CreateFirewallFirewallsRequestBody(
275
+ data=utils.get_pydantic_model(data, models.CreateFirewallFirewallsData),
276
+ )
277
+
278
+ req = self._build_request(
279
+ method="POST",
280
+ path="/firewalls",
281
+ base_url=base_url,
282
+ url_variables=url_variables,
283
+ request=request,
284
+ request_body_required=True,
285
+ request_has_path_params=False,
286
+ request_has_query_params=True,
287
+ user_agent_header="user-agent",
288
+ accept_header_value="application/vnd.api+json",
289
+ http_headers=http_headers,
290
+ security=self.sdk_configuration.security,
291
+ get_serialized_body=lambda: utils.serialize_request_body(
292
+ request, False, False, "json", models.CreateFirewallFirewallsRequestBody
293
+ ),
294
+ allow_empty_value=None,
295
+ timeout_ms=timeout_ms,
296
+ )
297
+
298
+ if retries == UNSET:
299
+ if self.sdk_configuration.retry_config is not UNSET:
300
+ retries = self.sdk_configuration.retry_config
301
+
302
+ retry_config = None
303
+ if isinstance(retries, utils.RetryConfig):
304
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
305
+
306
+ http_res = self.do_request(
307
+ hook_ctx=HookContext(
308
+ config=self.sdk_configuration,
309
+ base_url=base_url or "",
310
+ operation_id="create-firewall",
311
+ oauth2_scopes=None,
312
+ security_source=get_security_from_env(
313
+ self.sdk_configuration.security, models.Security
314
+ ),
315
+ ),
316
+ request=req,
317
+ error_status_codes=["4XX", "5XX"],
318
+ retry_config=retry_config,
319
+ )
320
+
321
+ if utils.match_response(http_res, "201", "application/vnd.api+json"):
322
+ return unmarshal_json_response(models.Firewall, http_res)
323
+ if utils.match_response(http_res, "4XX", "*"):
324
+ http_res_text = utils.stream_to_text(http_res)
325
+ raise models.APIError("API error occurred", http_res, http_res_text)
326
+ if utils.match_response(http_res, "5XX", "*"):
327
+ http_res_text = utils.stream_to_text(http_res)
328
+ raise models.APIError("API error occurred", http_res, http_res_text)
329
+
330
+ raise models.APIError("Unexpected response received", http_res)
331
+
332
+ async def create_async(
333
+ self,
334
+ *,
335
+ data: Union[
336
+ models.CreateFirewallFirewallsData,
337
+ models.CreateFirewallFirewallsDataTypedDict,
338
+ ],
339
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
340
+ server_url: Optional[str] = None,
341
+ timeout_ms: Optional[int] = None,
342
+ http_headers: Optional[Mapping[str, str]] = None,
343
+ ) -> models.Firewall:
344
+ r"""Create a firewall
345
+
346
+ Create a firewall
347
+
348
+ :param data:
349
+ :param retries: Override the default retry configuration for this method
350
+ :param server_url: Override the default server URL for this method
351
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
352
+ :param http_headers: Additional headers to set or replace on requests.
353
+ """
354
+ base_url = None
355
+ url_variables = None
356
+ if timeout_ms is None:
357
+ timeout_ms = self.sdk_configuration.timeout_ms
358
+
359
+ if server_url is not None:
360
+ base_url = server_url
361
+ else:
362
+ base_url = self._get_url(base_url, url_variables)
363
+
364
+ request = models.CreateFirewallFirewallsRequestBody(
365
+ data=utils.get_pydantic_model(data, models.CreateFirewallFirewallsData),
366
+ )
367
+
368
+ req = self._build_request_async(
369
+ method="POST",
370
+ path="/firewalls",
371
+ base_url=base_url,
372
+ url_variables=url_variables,
373
+ request=request,
374
+ request_body_required=True,
375
+ request_has_path_params=False,
376
+ request_has_query_params=True,
377
+ user_agent_header="user-agent",
378
+ accept_header_value="application/vnd.api+json",
379
+ http_headers=http_headers,
380
+ security=self.sdk_configuration.security,
381
+ get_serialized_body=lambda: utils.serialize_request_body(
382
+ request, False, False, "json", models.CreateFirewallFirewallsRequestBody
383
+ ),
384
+ allow_empty_value=None,
385
+ timeout_ms=timeout_ms,
386
+ )
387
+
388
+ if retries == UNSET:
389
+ if self.sdk_configuration.retry_config is not UNSET:
390
+ retries = self.sdk_configuration.retry_config
391
+
392
+ retry_config = None
393
+ if isinstance(retries, utils.RetryConfig):
394
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
395
+
396
+ http_res = await self.do_request_async(
397
+ hook_ctx=HookContext(
398
+ config=self.sdk_configuration,
399
+ base_url=base_url or "",
400
+ operation_id="create-firewall",
401
+ oauth2_scopes=None,
402
+ security_source=get_security_from_env(
403
+ self.sdk_configuration.security, models.Security
404
+ ),
405
+ ),
406
+ request=req,
407
+ error_status_codes=["4XX", "5XX"],
408
+ retry_config=retry_config,
409
+ )
410
+
411
+ if utils.match_response(http_res, "201", "application/vnd.api+json"):
412
+ return unmarshal_json_response(models.Firewall, http_res)
413
+ if utils.match_response(http_res, "4XX", "*"):
414
+ http_res_text = await utils.stream_to_text_async(http_res)
415
+ raise models.APIError("API error occurred", http_res, http_res_text)
416
+ if utils.match_response(http_res, "5XX", "*"):
417
+ http_res_text = await utils.stream_to_text_async(http_res)
418
+ raise models.APIError("API error occurred", http_res, http_res_text)
419
+
420
+ raise models.APIError("Unexpected response received", http_res)
421
+
422
+ def list(
423
+ self,
424
+ *,
425
+ filter_project: Optional[str] = None,
426
+ page_size: Optional[int] = 20,
427
+ page_number: Optional[int] = 1,
428
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
429
+ server_url: Optional[str] = None,
430
+ timeout_ms: Optional[int] = None,
431
+ http_headers: Optional[Mapping[str, str]] = None,
432
+ ) -> Optional[models.ListFirewallsResponse]:
433
+ r"""List firewalls
434
+
435
+ List firewalls
436
+
437
+ :param filter_project:
438
+ :param page_size: Number of items to return per page
439
+ :param page_number: Page number to return (starts at 1)
440
+ :param retries: Override the default retry configuration for this method
441
+ :param server_url: Override the default server URL for this method
442
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
443
+ :param http_headers: Additional headers to set or replace on requests.
444
+ """
445
+ base_url = None
446
+ url_variables = None
447
+ if timeout_ms is None:
448
+ timeout_ms = self.sdk_configuration.timeout_ms
449
+
450
+ if server_url is not None:
451
+ base_url = server_url
452
+ else:
453
+ base_url = self._get_url(base_url, url_variables)
454
+
455
+ request = models.ListFirewallsRequest(
456
+ filter_project=filter_project,
457
+ page_size=page_size,
458
+ page_number=page_number,
459
+ )
460
+
461
+ req = self._build_request(
462
+ method="GET",
463
+ path="/firewalls",
464
+ base_url=base_url,
465
+ url_variables=url_variables,
466
+ request=request,
467
+ request_body_required=False,
468
+ request_has_path_params=False,
469
+ request_has_query_params=True,
470
+ user_agent_header="user-agent",
471
+ accept_header_value="application/vnd.api+json",
472
+ http_headers=http_headers,
473
+ security=self.sdk_configuration.security,
474
+ allow_empty_value=None,
475
+ timeout_ms=timeout_ms,
476
+ )
477
+
478
+ if retries == UNSET:
479
+ if self.sdk_configuration.retry_config is not UNSET:
480
+ retries = self.sdk_configuration.retry_config
481
+
482
+ retry_config = None
483
+ if isinstance(retries, utils.RetryConfig):
484
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
485
+
486
+ http_res = self.do_request(
487
+ hook_ctx=HookContext(
488
+ config=self.sdk_configuration,
489
+ base_url=base_url or "",
490
+ operation_id="list-firewalls",
491
+ oauth2_scopes=None,
492
+ security_source=get_security_from_env(
493
+ self.sdk_configuration.security, models.Security
494
+ ),
495
+ ),
496
+ request=req,
497
+ error_status_codes=["4XX", "5XX"],
498
+ retry_config=retry_config,
499
+ )
500
+
501
+ def next_func() -> Optional[models.ListFirewallsResponse]:
502
+ body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]])
503
+ page = request.page_number if not request.page_number is None else 1
504
+ next_page = page + 1
505
+
506
+ if not http_res.text:
507
+ return None
508
+ results = JSONPath("$.data").parse(body)
509
+ if len(results) == 0 or len(results[0]) == 0:
510
+ return None
511
+ limit = request.page_size if not request.page_size is None else 20
512
+ if len(results[0]) < limit:
513
+ return None
514
+
515
+ return self.list(
516
+ filter_project=filter_project,
517
+ page_size=page_size,
518
+ page_number=next_page,
519
+ retries=retries,
520
+ )
521
+
522
+ if utils.match_response(http_res, "200", "application/vnd.api+json"):
523
+ return models.ListFirewallsResponse(
524
+ result=unmarshal_json_response(models.Firewalls, http_res),
525
+ next=next_func,
526
+ )
527
+ if utils.match_response(http_res, "4XX", "*"):
528
+ http_res_text = utils.stream_to_text(http_res)
529
+ raise models.APIError("API error occurred", http_res, http_res_text)
530
+ if utils.match_response(http_res, "5XX", "*"):
531
+ http_res_text = utils.stream_to_text(http_res)
532
+ raise models.APIError("API error occurred", http_res, http_res_text)
533
+
534
+ raise models.APIError("Unexpected response received", http_res)
535
+
536
+ async def list_async(
537
+ self,
538
+ *,
539
+ filter_project: Optional[str] = None,
540
+ page_size: Optional[int] = 20,
541
+ page_number: Optional[int] = 1,
542
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
543
+ server_url: Optional[str] = None,
544
+ timeout_ms: Optional[int] = None,
545
+ http_headers: Optional[Mapping[str, str]] = None,
546
+ ) -> Optional[models.ListFirewallsResponse]:
547
+ r"""List firewalls
548
+
549
+ List firewalls
550
+
551
+ :param filter_project:
552
+ :param page_size: Number of items to return per page
553
+ :param page_number: Page number to return (starts at 1)
554
+ :param retries: Override the default retry configuration for this method
555
+ :param server_url: Override the default server URL for this method
556
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
557
+ :param http_headers: Additional headers to set or replace on requests.
558
+ """
559
+ base_url = None
560
+ url_variables = None
561
+ if timeout_ms is None:
562
+ timeout_ms = self.sdk_configuration.timeout_ms
563
+
564
+ if server_url is not None:
565
+ base_url = server_url
566
+ else:
567
+ base_url = self._get_url(base_url, url_variables)
568
+
569
+ request = models.ListFirewallsRequest(
570
+ filter_project=filter_project,
571
+ page_size=page_size,
572
+ page_number=page_number,
573
+ )
574
+
575
+ req = self._build_request_async(
576
+ method="GET",
577
+ path="/firewalls",
578
+ base_url=base_url,
579
+ url_variables=url_variables,
580
+ request=request,
581
+ request_body_required=False,
582
+ request_has_path_params=False,
583
+ request_has_query_params=True,
584
+ user_agent_header="user-agent",
585
+ accept_header_value="application/vnd.api+json",
586
+ http_headers=http_headers,
587
+ security=self.sdk_configuration.security,
588
+ allow_empty_value=None,
589
+ timeout_ms=timeout_ms,
590
+ )
591
+
592
+ if retries == UNSET:
593
+ if self.sdk_configuration.retry_config is not UNSET:
594
+ retries = self.sdk_configuration.retry_config
595
+
596
+ retry_config = None
597
+ if isinstance(retries, utils.RetryConfig):
598
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
599
+
600
+ http_res = await self.do_request_async(
601
+ hook_ctx=HookContext(
602
+ config=self.sdk_configuration,
603
+ base_url=base_url or "",
604
+ operation_id="list-firewalls",
605
+ oauth2_scopes=None,
606
+ security_source=get_security_from_env(
607
+ self.sdk_configuration.security, models.Security
608
+ ),
609
+ ),
610
+ request=req,
611
+ error_status_codes=["4XX", "5XX"],
612
+ retry_config=retry_config,
613
+ )
614
+
615
+ def next_func() -> Optional[models.ListFirewallsResponse]:
616
+ body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]])
617
+ page = request.page_number if not request.page_number is None else 1
618
+ next_page = page + 1
619
+
620
+ if not http_res.text:
621
+ return None
622
+ results = JSONPath("$.data").parse(body)
623
+ if len(results) == 0 or len(results[0]) == 0:
624
+ return None
625
+ limit = request.page_size if not request.page_size is None else 20
626
+ if len(results[0]) < limit:
627
+ return None
628
+
629
+ return self.list(
630
+ filter_project=filter_project,
631
+ page_size=page_size,
632
+ page_number=next_page,
633
+ retries=retries,
634
+ )
635
+
636
+ if utils.match_response(http_res, "200", "application/vnd.api+json"):
637
+ return models.ListFirewallsResponse(
638
+ result=unmarshal_json_response(models.Firewalls, http_res),
639
+ next=next_func,
640
+ )
641
+ if utils.match_response(http_res, "4XX", "*"):
642
+ http_res_text = await utils.stream_to_text_async(http_res)
643
+ raise models.APIError("API error occurred", http_res, http_res_text)
644
+ if utils.match_response(http_res, "5XX", "*"):
645
+ http_res_text = await utils.stream_to_text_async(http_res)
646
+ raise models.APIError("API error occurred", http_res, http_res_text)
647
+
648
+ raise models.APIError("Unexpected response received", http_res)
649
+
650
+ def get(
651
+ self,
652
+ *,
653
+ firewall_id: str,
654
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
655
+ server_url: Optional[str] = None,
656
+ timeout_ms: Optional[int] = None,
657
+ http_headers: Optional[Mapping[str, str]] = None,
658
+ ) -> models.Firewall:
659
+ r"""Retrieve Firewall
660
+
661
+ Retrieve a firewall
662
+
663
+ :param firewall_id: The Firewall ID
664
+ :param retries: Override the default retry configuration for this method
665
+ :param server_url: Override the default server URL for this method
666
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
667
+ :param http_headers: Additional headers to set or replace on requests.
668
+ """
669
+ base_url = None
670
+ url_variables = None
671
+ if timeout_ms is None:
672
+ timeout_ms = self.sdk_configuration.timeout_ms
673
+
674
+ if server_url is not None:
675
+ base_url = server_url
676
+ else:
677
+ base_url = self._get_url(base_url, url_variables)
678
+
679
+ request = models.GetFirewallRequest(
680
+ firewall_id=firewall_id,
681
+ )
682
+
683
+ req = self._build_request(
684
+ method="GET",
685
+ path="/firewalls/{firewall_id}",
686
+ base_url=base_url,
687
+ url_variables=url_variables,
688
+ request=request,
689
+ request_body_required=False,
690
+ request_has_path_params=True,
691
+ request_has_query_params=True,
692
+ user_agent_header="user-agent",
693
+ accept_header_value="application/vnd.api+json",
694
+ http_headers=http_headers,
695
+ security=self.sdk_configuration.security,
696
+ allow_empty_value=None,
697
+ timeout_ms=timeout_ms,
698
+ )
699
+
700
+ if retries == UNSET:
701
+ if self.sdk_configuration.retry_config is not UNSET:
702
+ retries = self.sdk_configuration.retry_config
703
+
704
+ retry_config = None
705
+ if isinstance(retries, utils.RetryConfig):
706
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
707
+
708
+ http_res = self.do_request(
709
+ hook_ctx=HookContext(
710
+ config=self.sdk_configuration,
711
+ base_url=base_url or "",
712
+ operation_id="get-firewall",
713
+ oauth2_scopes=None,
714
+ security_source=get_security_from_env(
715
+ self.sdk_configuration.security, models.Security
716
+ ),
717
+ ),
718
+ request=req,
719
+ error_status_codes=["4XX", "5XX"],
720
+ retry_config=retry_config,
721
+ )
722
+
723
+ if utils.match_response(http_res, "200", "application/vnd.api+json"):
724
+ return unmarshal_json_response(models.Firewall, http_res)
725
+ if utils.match_response(http_res, "4XX", "*"):
726
+ http_res_text = utils.stream_to_text(http_res)
727
+ raise models.APIError("API error occurred", http_res, http_res_text)
728
+ if utils.match_response(http_res, "5XX", "*"):
729
+ http_res_text = utils.stream_to_text(http_res)
730
+ raise models.APIError("API error occurred", http_res, http_res_text)
731
+
732
+ raise models.APIError("Unexpected response received", http_res)
733
+
734
+ async def get_async(
735
+ self,
736
+ *,
737
+ firewall_id: str,
738
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
739
+ server_url: Optional[str] = None,
740
+ timeout_ms: Optional[int] = None,
741
+ http_headers: Optional[Mapping[str, str]] = None,
742
+ ) -> models.Firewall:
743
+ r"""Retrieve Firewall
744
+
745
+ Retrieve a firewall
746
+
747
+ :param firewall_id: The Firewall ID
748
+ :param retries: Override the default retry configuration for this method
749
+ :param server_url: Override the default server URL for this method
750
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
751
+ :param http_headers: Additional headers to set or replace on requests.
752
+ """
753
+ base_url = None
754
+ url_variables = None
755
+ if timeout_ms is None:
756
+ timeout_ms = self.sdk_configuration.timeout_ms
757
+
758
+ if server_url is not None:
759
+ base_url = server_url
760
+ else:
761
+ base_url = self._get_url(base_url, url_variables)
762
+
763
+ request = models.GetFirewallRequest(
764
+ firewall_id=firewall_id,
765
+ )
766
+
767
+ req = self._build_request_async(
768
+ method="GET",
769
+ path="/firewalls/{firewall_id}",
770
+ base_url=base_url,
771
+ url_variables=url_variables,
772
+ request=request,
773
+ request_body_required=False,
774
+ request_has_path_params=True,
775
+ request_has_query_params=True,
776
+ user_agent_header="user-agent",
777
+ accept_header_value="application/vnd.api+json",
778
+ http_headers=http_headers,
779
+ security=self.sdk_configuration.security,
780
+ allow_empty_value=None,
781
+ timeout_ms=timeout_ms,
782
+ )
783
+
784
+ if retries == UNSET:
785
+ if self.sdk_configuration.retry_config is not UNSET:
786
+ retries = self.sdk_configuration.retry_config
787
+
788
+ retry_config = None
789
+ if isinstance(retries, utils.RetryConfig):
790
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
791
+
792
+ http_res = await self.do_request_async(
793
+ hook_ctx=HookContext(
794
+ config=self.sdk_configuration,
795
+ base_url=base_url or "",
796
+ operation_id="get-firewall",
797
+ oauth2_scopes=None,
798
+ security_source=get_security_from_env(
799
+ self.sdk_configuration.security, models.Security
800
+ ),
801
+ ),
802
+ request=req,
803
+ error_status_codes=["4XX", "5XX"],
804
+ retry_config=retry_config,
805
+ )
806
+
807
+ if utils.match_response(http_res, "200", "application/vnd.api+json"):
808
+ return unmarshal_json_response(models.Firewall, http_res)
809
+ if utils.match_response(http_res, "4XX", "*"):
810
+ http_res_text = await utils.stream_to_text_async(http_res)
811
+ raise models.APIError("API error occurred", http_res, http_res_text)
812
+ if utils.match_response(http_res, "5XX", "*"):
813
+ http_res_text = await utils.stream_to_text_async(http_res)
814
+ raise models.APIError("API error occurred", http_res, http_res_text)
815
+
816
+ raise models.APIError("Unexpected response received", http_res)
817
+
818
+ def update(
819
+ self,
820
+ *,
821
+ firewall_id: str,
822
+ data: Union[
823
+ models.UpdateFirewallFirewallsData,
824
+ models.UpdateFirewallFirewallsDataTypedDict,
825
+ ],
826
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
827
+ server_url: Optional[str] = None,
828
+ timeout_ms: Optional[int] = None,
829
+ http_headers: Optional[Mapping[str, str]] = None,
830
+ ) -> models.Firewall:
831
+ r"""Update Firewall
832
+
833
+ Update a firewall
834
+
835
+ :param firewall_id: The Firewall ID
836
+ :param data:
837
+ :param retries: Override the default retry configuration for this method
838
+ :param server_url: Override the default server URL for this method
839
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
840
+ :param http_headers: Additional headers to set or replace on requests.
841
+ """
842
+ base_url = None
843
+ url_variables = None
844
+ if timeout_ms is None:
845
+ timeout_ms = self.sdk_configuration.timeout_ms
846
+
847
+ if server_url is not None:
848
+ base_url = server_url
849
+ else:
850
+ base_url = self._get_url(base_url, url_variables)
851
+
852
+ request = models.UpdateFirewallRequest(
853
+ firewall_id=firewall_id,
854
+ request_body=models.UpdateFirewallFirewallsRequestBody(
855
+ data=utils.get_pydantic_model(data, models.UpdateFirewallFirewallsData),
856
+ ),
857
+ )
858
+
859
+ req = self._build_request(
860
+ method="PATCH",
861
+ path="/firewalls/{firewall_id}",
862
+ base_url=base_url,
863
+ url_variables=url_variables,
864
+ request=request,
865
+ request_body_required=True,
866
+ request_has_path_params=True,
867
+ request_has_query_params=True,
868
+ user_agent_header="user-agent",
869
+ accept_header_value="application/vnd.api+json",
870
+ http_headers=http_headers,
871
+ security=self.sdk_configuration.security,
872
+ get_serialized_body=lambda: utils.serialize_request_body(
873
+ request.request_body,
874
+ False,
875
+ False,
876
+ "json",
877
+ models.UpdateFirewallFirewallsRequestBody,
878
+ ),
879
+ allow_empty_value=None,
880
+ timeout_ms=timeout_ms,
881
+ )
882
+
883
+ if retries == UNSET:
884
+ if self.sdk_configuration.retry_config is not UNSET:
885
+ retries = self.sdk_configuration.retry_config
886
+
887
+ retry_config = None
888
+ if isinstance(retries, utils.RetryConfig):
889
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
890
+
891
+ http_res = self.do_request(
892
+ hook_ctx=HookContext(
893
+ config=self.sdk_configuration,
894
+ base_url=base_url or "",
895
+ operation_id="update-firewall",
896
+ oauth2_scopes=None,
897
+ security_source=get_security_from_env(
898
+ self.sdk_configuration.security, models.Security
899
+ ),
900
+ ),
901
+ request=req,
902
+ error_status_codes=["4XX", "5XX"],
903
+ retry_config=retry_config,
904
+ )
905
+
906
+ if utils.match_response(http_res, "200", "application/vnd.api+json"):
907
+ return unmarshal_json_response(models.Firewall, http_res)
908
+ if utils.match_response(http_res, "4XX", "*"):
909
+ http_res_text = utils.stream_to_text(http_res)
910
+ raise models.APIError("API error occurred", http_res, http_res_text)
911
+ if utils.match_response(http_res, "5XX", "*"):
912
+ http_res_text = utils.stream_to_text(http_res)
913
+ raise models.APIError("API error occurred", http_res, http_res_text)
914
+
915
+ raise models.APIError("Unexpected response received", http_res)
916
+
917
+ async def update_async(
918
+ self,
919
+ *,
920
+ firewall_id: str,
921
+ data: Union[
922
+ models.UpdateFirewallFirewallsData,
923
+ models.UpdateFirewallFirewallsDataTypedDict,
924
+ ],
925
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
926
+ server_url: Optional[str] = None,
927
+ timeout_ms: Optional[int] = None,
928
+ http_headers: Optional[Mapping[str, str]] = None,
929
+ ) -> models.Firewall:
930
+ r"""Update Firewall
931
+
932
+ Update a firewall
933
+
934
+ :param firewall_id: The Firewall ID
935
+ :param data:
936
+ :param retries: Override the default retry configuration for this method
937
+ :param server_url: Override the default server URL for this method
938
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
939
+ :param http_headers: Additional headers to set or replace on requests.
940
+ """
941
+ base_url = None
942
+ url_variables = None
943
+ if timeout_ms is None:
944
+ timeout_ms = self.sdk_configuration.timeout_ms
945
+
946
+ if server_url is not None:
947
+ base_url = server_url
948
+ else:
949
+ base_url = self._get_url(base_url, url_variables)
950
+
951
+ request = models.UpdateFirewallRequest(
952
+ firewall_id=firewall_id,
953
+ request_body=models.UpdateFirewallFirewallsRequestBody(
954
+ data=utils.get_pydantic_model(data, models.UpdateFirewallFirewallsData),
955
+ ),
956
+ )
957
+
958
+ req = self._build_request_async(
959
+ method="PATCH",
960
+ path="/firewalls/{firewall_id}",
961
+ base_url=base_url,
962
+ url_variables=url_variables,
963
+ request=request,
964
+ request_body_required=True,
965
+ request_has_path_params=True,
966
+ request_has_query_params=True,
967
+ user_agent_header="user-agent",
968
+ accept_header_value="application/vnd.api+json",
969
+ http_headers=http_headers,
970
+ security=self.sdk_configuration.security,
971
+ get_serialized_body=lambda: utils.serialize_request_body(
972
+ request.request_body,
973
+ False,
974
+ False,
975
+ "json",
976
+ models.UpdateFirewallFirewallsRequestBody,
977
+ ),
978
+ allow_empty_value=None,
979
+ timeout_ms=timeout_ms,
980
+ )
981
+
982
+ if retries == UNSET:
983
+ if self.sdk_configuration.retry_config is not UNSET:
984
+ retries = self.sdk_configuration.retry_config
985
+
986
+ retry_config = None
987
+ if isinstance(retries, utils.RetryConfig):
988
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
989
+
990
+ http_res = await self.do_request_async(
991
+ hook_ctx=HookContext(
992
+ config=self.sdk_configuration,
993
+ base_url=base_url or "",
994
+ operation_id="update-firewall",
995
+ oauth2_scopes=None,
996
+ security_source=get_security_from_env(
997
+ self.sdk_configuration.security, models.Security
998
+ ),
999
+ ),
1000
+ request=req,
1001
+ error_status_codes=["4XX", "5XX"],
1002
+ retry_config=retry_config,
1003
+ )
1004
+
1005
+ if utils.match_response(http_res, "200", "application/vnd.api+json"):
1006
+ return unmarshal_json_response(models.Firewall, http_res)
1007
+ if utils.match_response(http_res, "4XX", "*"):
1008
+ http_res_text = await utils.stream_to_text_async(http_res)
1009
+ raise models.APIError("API error occurred", http_res, http_res_text)
1010
+ if utils.match_response(http_res, "5XX", "*"):
1011
+ http_res_text = await utils.stream_to_text_async(http_res)
1012
+ raise models.APIError("API error occurred", http_res, http_res_text)
1013
+
1014
+ raise models.APIError("Unexpected response received", http_res)
1015
+
1016
+ def delete(
1017
+ self,
1018
+ *,
1019
+ firewall_id: str,
1020
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
1021
+ server_url: Optional[str] = None,
1022
+ timeout_ms: Optional[int] = None,
1023
+ http_headers: Optional[Mapping[str, str]] = None,
1024
+ ):
1025
+ r"""Delete Firewall
1026
+
1027
+ Delete a firewall
1028
+
1029
+ :param firewall_id: The Firewall ID
1030
+ :param retries: Override the default retry configuration for this method
1031
+ :param server_url: Override the default server URL for this method
1032
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
1033
+ :param http_headers: Additional headers to set or replace on requests.
1034
+ """
1035
+ base_url = None
1036
+ url_variables = None
1037
+ if timeout_ms is None:
1038
+ timeout_ms = self.sdk_configuration.timeout_ms
1039
+
1040
+ if server_url is not None:
1041
+ base_url = server_url
1042
+ else:
1043
+ base_url = self._get_url(base_url, url_variables)
1044
+
1045
+ request = models.DeleteFirewallRequest(
1046
+ firewall_id=firewall_id,
1047
+ )
1048
+
1049
+ req = self._build_request(
1050
+ method="DELETE",
1051
+ path="/firewalls/{firewall_id}",
1052
+ base_url=base_url,
1053
+ url_variables=url_variables,
1054
+ request=request,
1055
+ request_body_required=False,
1056
+ request_has_path_params=True,
1057
+ request_has_query_params=True,
1058
+ user_agent_header="user-agent",
1059
+ accept_header_value="*/*",
1060
+ http_headers=http_headers,
1061
+ security=self.sdk_configuration.security,
1062
+ allow_empty_value=None,
1063
+ timeout_ms=timeout_ms,
1064
+ )
1065
+
1066
+ if retries == UNSET:
1067
+ if self.sdk_configuration.retry_config is not UNSET:
1068
+ retries = self.sdk_configuration.retry_config
1069
+
1070
+ retry_config = None
1071
+ if isinstance(retries, utils.RetryConfig):
1072
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
1073
+
1074
+ http_res = self.do_request(
1075
+ hook_ctx=HookContext(
1076
+ config=self.sdk_configuration,
1077
+ base_url=base_url or "",
1078
+ operation_id="delete-firewall",
1079
+ oauth2_scopes=None,
1080
+ security_source=get_security_from_env(
1081
+ self.sdk_configuration.security, models.Security
1082
+ ),
1083
+ ),
1084
+ request=req,
1085
+ error_status_codes=["4XX", "5XX"],
1086
+ retry_config=retry_config,
1087
+ )
1088
+
1089
+ if utils.match_response(http_res, "204", "*"):
1090
+ return
1091
+ if utils.match_response(http_res, "4XX", "*"):
1092
+ http_res_text = utils.stream_to_text(http_res)
1093
+ raise models.APIError("API error occurred", http_res, http_res_text)
1094
+ if utils.match_response(http_res, "5XX", "*"):
1095
+ http_res_text = utils.stream_to_text(http_res)
1096
+ raise models.APIError("API error occurred", http_res, http_res_text)
1097
+
1098
+ raise models.APIError("Unexpected response received", http_res)
1099
+
1100
+ async def delete_async(
1101
+ self,
1102
+ *,
1103
+ firewall_id: str,
1104
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
1105
+ server_url: Optional[str] = None,
1106
+ timeout_ms: Optional[int] = None,
1107
+ http_headers: Optional[Mapping[str, str]] = None,
1108
+ ):
1109
+ r"""Delete Firewall
1110
+
1111
+ Delete a firewall
1112
+
1113
+ :param firewall_id: The Firewall ID
1114
+ :param retries: Override the default retry configuration for this method
1115
+ :param server_url: Override the default server URL for this method
1116
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
1117
+ :param http_headers: Additional headers to set or replace on requests.
1118
+ """
1119
+ base_url = None
1120
+ url_variables = None
1121
+ if timeout_ms is None:
1122
+ timeout_ms = self.sdk_configuration.timeout_ms
1123
+
1124
+ if server_url is not None:
1125
+ base_url = server_url
1126
+ else:
1127
+ base_url = self._get_url(base_url, url_variables)
1128
+
1129
+ request = models.DeleteFirewallRequest(
1130
+ firewall_id=firewall_id,
1131
+ )
1132
+
1133
+ req = self._build_request_async(
1134
+ method="DELETE",
1135
+ path="/firewalls/{firewall_id}",
1136
+ base_url=base_url,
1137
+ url_variables=url_variables,
1138
+ request=request,
1139
+ request_body_required=False,
1140
+ request_has_path_params=True,
1141
+ request_has_query_params=True,
1142
+ user_agent_header="user-agent",
1143
+ accept_header_value="*/*",
1144
+ http_headers=http_headers,
1145
+ security=self.sdk_configuration.security,
1146
+ allow_empty_value=None,
1147
+ timeout_ms=timeout_ms,
1148
+ )
1149
+
1150
+ if retries == UNSET:
1151
+ if self.sdk_configuration.retry_config is not UNSET:
1152
+ retries = self.sdk_configuration.retry_config
1153
+
1154
+ retry_config = None
1155
+ if isinstance(retries, utils.RetryConfig):
1156
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
1157
+
1158
+ http_res = await self.do_request_async(
1159
+ hook_ctx=HookContext(
1160
+ config=self.sdk_configuration,
1161
+ base_url=base_url or "",
1162
+ operation_id="delete-firewall",
1163
+ oauth2_scopes=None,
1164
+ security_source=get_security_from_env(
1165
+ self.sdk_configuration.security, models.Security
1166
+ ),
1167
+ ),
1168
+ request=req,
1169
+ error_status_codes=["4XX", "5XX"],
1170
+ retry_config=retry_config,
1171
+ )
1172
+
1173
+ if utils.match_response(http_res, "204", "*"):
1174
+ return
1175
+ if utils.match_response(http_res, "4XX", "*"):
1176
+ http_res_text = await utils.stream_to_text_async(http_res)
1177
+ raise models.APIError("API error occurred", http_res, http_res_text)
1178
+ if utils.match_response(http_res, "5XX", "*"):
1179
+ http_res_text = await utils.stream_to_text_async(http_res)
1180
+ raise models.APIError("API error occurred", http_res, http_res_text)
1181
+
1182
+ raise models.APIError("Unexpected response received", http_res)
1183
+
1184
+ def assign(
1185
+ self,
1186
+ *,
1187
+ firewall_id: str,
1188
+ data: Union[
1189
+ models.CreateFirewallAssignmentFirewallsData,
1190
+ models.CreateFirewallAssignmentFirewallsDataTypedDict,
1191
+ ],
1192
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
1193
+ server_url: Optional[str] = None,
1194
+ timeout_ms: Optional[int] = None,
1195
+ http_headers: Optional[Mapping[str, str]] = None,
1196
+ ) -> models.FirewallServer:
1197
+ r"""Firewall Assignment
1198
+
1199
+ Assign a server to a firewall
1200
+
1201
+ :param firewall_id: The Firewall ID
1202
+ :param data:
1203
+ :param retries: Override the default retry configuration for this method
1204
+ :param server_url: Override the default server URL for this method
1205
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
1206
+ :param http_headers: Additional headers to set or replace on requests.
1207
+ """
1208
+ base_url = None
1209
+ url_variables = None
1210
+ if timeout_ms is None:
1211
+ timeout_ms = self.sdk_configuration.timeout_ms
1212
+
1213
+ if server_url is not None:
1214
+ base_url = server_url
1215
+ else:
1216
+ base_url = self._get_url(base_url, url_variables)
1217
+
1218
+ request = models.CreateFirewallAssignmentRequest(
1219
+ firewall_id=firewall_id,
1220
+ request_body=models.CreateFirewallAssignmentFirewallsRequestBody(
1221
+ data=utils.get_pydantic_model(
1222
+ data, models.CreateFirewallAssignmentFirewallsData
1223
+ ),
1224
+ ),
1225
+ )
1226
+
1227
+ req = self._build_request(
1228
+ method="POST",
1229
+ path="/firewalls/{firewall_id}/assignments",
1230
+ base_url=base_url,
1231
+ url_variables=url_variables,
1232
+ request=request,
1233
+ request_body_required=True,
1234
+ request_has_path_params=True,
1235
+ request_has_query_params=True,
1236
+ user_agent_header="user-agent",
1237
+ accept_header_value="application/vnd.api+json",
1238
+ http_headers=http_headers,
1239
+ security=self.sdk_configuration.security,
1240
+ get_serialized_body=lambda: utils.serialize_request_body(
1241
+ request.request_body,
1242
+ False,
1243
+ False,
1244
+ "json",
1245
+ models.CreateFirewallAssignmentFirewallsRequestBody,
1246
+ ),
1247
+ allow_empty_value=None,
1248
+ timeout_ms=timeout_ms,
1249
+ )
1250
+
1251
+ if retries == UNSET:
1252
+ if self.sdk_configuration.retry_config is not UNSET:
1253
+ retries = self.sdk_configuration.retry_config
1254
+
1255
+ retry_config = None
1256
+ if isinstance(retries, utils.RetryConfig):
1257
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
1258
+
1259
+ http_res = self.do_request(
1260
+ hook_ctx=HookContext(
1261
+ config=self.sdk_configuration,
1262
+ base_url=base_url or "",
1263
+ operation_id="create-firewall-assignment",
1264
+ oauth2_scopes=None,
1265
+ security_source=get_security_from_env(
1266
+ self.sdk_configuration.security, models.Security
1267
+ ),
1268
+ ),
1269
+ request=req,
1270
+ error_status_codes=["4XX", "5XX"],
1271
+ retry_config=retry_config,
1272
+ )
1273
+
1274
+ if utils.match_response(http_res, "201", "application/vnd.api+json"):
1275
+ return unmarshal_json_response(models.FirewallServer, http_res)
1276
+ if utils.match_response(http_res, "4XX", "*"):
1277
+ http_res_text = utils.stream_to_text(http_res)
1278
+ raise models.APIError("API error occurred", http_res, http_res_text)
1279
+ if utils.match_response(http_res, "5XX", "*"):
1280
+ http_res_text = utils.stream_to_text(http_res)
1281
+ raise models.APIError("API error occurred", http_res, http_res_text)
1282
+
1283
+ raise models.APIError("Unexpected response received", http_res)
1284
+
1285
+ async def assign_async(
1286
+ self,
1287
+ *,
1288
+ firewall_id: str,
1289
+ data: Union[
1290
+ models.CreateFirewallAssignmentFirewallsData,
1291
+ models.CreateFirewallAssignmentFirewallsDataTypedDict,
1292
+ ],
1293
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
1294
+ server_url: Optional[str] = None,
1295
+ timeout_ms: Optional[int] = None,
1296
+ http_headers: Optional[Mapping[str, str]] = None,
1297
+ ) -> models.FirewallServer:
1298
+ r"""Firewall Assignment
1299
+
1300
+ Assign a server to a firewall
1301
+
1302
+ :param firewall_id: The Firewall ID
1303
+ :param data:
1304
+ :param retries: Override the default retry configuration for this method
1305
+ :param server_url: Override the default server URL for this method
1306
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
1307
+ :param http_headers: Additional headers to set or replace on requests.
1308
+ """
1309
+ base_url = None
1310
+ url_variables = None
1311
+ if timeout_ms is None:
1312
+ timeout_ms = self.sdk_configuration.timeout_ms
1313
+
1314
+ if server_url is not None:
1315
+ base_url = server_url
1316
+ else:
1317
+ base_url = self._get_url(base_url, url_variables)
1318
+
1319
+ request = models.CreateFirewallAssignmentRequest(
1320
+ firewall_id=firewall_id,
1321
+ request_body=models.CreateFirewallAssignmentFirewallsRequestBody(
1322
+ data=utils.get_pydantic_model(
1323
+ data, models.CreateFirewallAssignmentFirewallsData
1324
+ ),
1325
+ ),
1326
+ )
1327
+
1328
+ req = self._build_request_async(
1329
+ method="POST",
1330
+ path="/firewalls/{firewall_id}/assignments",
1331
+ base_url=base_url,
1332
+ url_variables=url_variables,
1333
+ request=request,
1334
+ request_body_required=True,
1335
+ request_has_path_params=True,
1336
+ request_has_query_params=True,
1337
+ user_agent_header="user-agent",
1338
+ accept_header_value="application/vnd.api+json",
1339
+ http_headers=http_headers,
1340
+ security=self.sdk_configuration.security,
1341
+ get_serialized_body=lambda: utils.serialize_request_body(
1342
+ request.request_body,
1343
+ False,
1344
+ False,
1345
+ "json",
1346
+ models.CreateFirewallAssignmentFirewallsRequestBody,
1347
+ ),
1348
+ allow_empty_value=None,
1349
+ timeout_ms=timeout_ms,
1350
+ )
1351
+
1352
+ if retries == UNSET:
1353
+ if self.sdk_configuration.retry_config is not UNSET:
1354
+ retries = self.sdk_configuration.retry_config
1355
+
1356
+ retry_config = None
1357
+ if isinstance(retries, utils.RetryConfig):
1358
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
1359
+
1360
+ http_res = await self.do_request_async(
1361
+ hook_ctx=HookContext(
1362
+ config=self.sdk_configuration,
1363
+ base_url=base_url or "",
1364
+ operation_id="create-firewall-assignment",
1365
+ oauth2_scopes=None,
1366
+ security_source=get_security_from_env(
1367
+ self.sdk_configuration.security, models.Security
1368
+ ),
1369
+ ),
1370
+ request=req,
1371
+ error_status_codes=["4XX", "5XX"],
1372
+ retry_config=retry_config,
1373
+ )
1374
+
1375
+ if utils.match_response(http_res, "201", "application/vnd.api+json"):
1376
+ return unmarshal_json_response(models.FirewallServer, http_res)
1377
+ if utils.match_response(http_res, "4XX", "*"):
1378
+ http_res_text = await utils.stream_to_text_async(http_res)
1379
+ raise models.APIError("API error occurred", http_res, http_res_text)
1380
+ if utils.match_response(http_res, "5XX", "*"):
1381
+ http_res_text = await utils.stream_to_text_async(http_res)
1382
+ raise models.APIError("API error occurred", http_res, http_res_text)
1383
+
1384
+ raise models.APIError("Unexpected response received", http_res)
1385
+
1386
+ def list_assignments(
1387
+ self,
1388
+ *,
1389
+ firewall_id: str,
1390
+ page_size: Optional[int] = 20,
1391
+ page_number: Optional[int] = 1,
1392
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
1393
+ server_url: Optional[str] = None,
1394
+ timeout_ms: Optional[int] = None,
1395
+ http_headers: Optional[Mapping[str, str]] = None,
1396
+ ) -> Optional[models.GetFirewallAssignmentsResponse]:
1397
+ r"""Firewall Assignments
1398
+
1399
+ List servers assigned to a firewall
1400
+
1401
+ :param firewall_id: The Firewall ID
1402
+ :param page_size: Number of items to return per page
1403
+ :param page_number: Page number to return (starts at 1)
1404
+ :param retries: Override the default retry configuration for this method
1405
+ :param server_url: Override the default server URL for this method
1406
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
1407
+ :param http_headers: Additional headers to set or replace on requests.
1408
+ """
1409
+ base_url = None
1410
+ url_variables = None
1411
+ if timeout_ms is None:
1412
+ timeout_ms = self.sdk_configuration.timeout_ms
1413
+
1414
+ if server_url is not None:
1415
+ base_url = server_url
1416
+ else:
1417
+ base_url = self._get_url(base_url, url_variables)
1418
+
1419
+ request = models.GetFirewallAssignmentsRequest(
1420
+ firewall_id=firewall_id,
1421
+ page_size=page_size,
1422
+ page_number=page_number,
1423
+ )
1424
+
1425
+ req = self._build_request(
1426
+ method="GET",
1427
+ path="/firewalls/{firewall_id}/assignments",
1428
+ base_url=base_url,
1429
+ url_variables=url_variables,
1430
+ request=request,
1431
+ request_body_required=False,
1432
+ request_has_path_params=True,
1433
+ request_has_query_params=True,
1434
+ user_agent_header="user-agent",
1435
+ accept_header_value="application/vnd.api+json",
1436
+ http_headers=http_headers,
1437
+ security=self.sdk_configuration.security,
1438
+ allow_empty_value=None,
1439
+ timeout_ms=timeout_ms,
1440
+ )
1441
+
1442
+ if retries == UNSET:
1443
+ if self.sdk_configuration.retry_config is not UNSET:
1444
+ retries = self.sdk_configuration.retry_config
1445
+
1446
+ retry_config = None
1447
+ if isinstance(retries, utils.RetryConfig):
1448
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
1449
+
1450
+ http_res = self.do_request(
1451
+ hook_ctx=HookContext(
1452
+ config=self.sdk_configuration,
1453
+ base_url=base_url or "",
1454
+ operation_id="get-firewall-assignments",
1455
+ oauth2_scopes=None,
1456
+ security_source=get_security_from_env(
1457
+ self.sdk_configuration.security, models.Security
1458
+ ),
1459
+ ),
1460
+ request=req,
1461
+ error_status_codes=["4XX", "5XX"],
1462
+ retry_config=retry_config,
1463
+ )
1464
+
1465
+ def next_func() -> Optional[models.GetFirewallAssignmentsResponse]:
1466
+ body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]])
1467
+ page = request.page_number if not request.page_number is None else 1
1468
+ next_page = page + 1
1469
+
1470
+ if not http_res.text:
1471
+ return None
1472
+ results = JSONPath("$.data").parse(body)
1473
+ if len(results) == 0 or len(results[0]) == 0:
1474
+ return None
1475
+ limit = request.page_size if not request.page_size is None else 20
1476
+ if len(results[0]) < limit:
1477
+ return None
1478
+
1479
+ return self.list_assignments(
1480
+ firewall_id=firewall_id,
1481
+ page_size=page_size,
1482
+ page_number=next_page,
1483
+ retries=retries,
1484
+ )
1485
+
1486
+ if utils.match_response(http_res, "200", "application/vnd.api+json"):
1487
+ return models.GetFirewallAssignmentsResponse(
1488
+ result=unmarshal_json_response(models.FirewallAssignments, http_res),
1489
+ next=next_func,
1490
+ )
1491
+ if utils.match_response(http_res, "4XX", "*"):
1492
+ http_res_text = utils.stream_to_text(http_res)
1493
+ raise models.APIError("API error occurred", http_res, http_res_text)
1494
+ if utils.match_response(http_res, "5XX", "*"):
1495
+ http_res_text = utils.stream_to_text(http_res)
1496
+ raise models.APIError("API error occurred", http_res, http_res_text)
1497
+
1498
+ raise models.APIError("Unexpected response received", http_res)
1499
+
1500
+ async def list_assignments_async(
1501
+ self,
1502
+ *,
1503
+ firewall_id: str,
1504
+ page_size: Optional[int] = 20,
1505
+ page_number: Optional[int] = 1,
1506
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
1507
+ server_url: Optional[str] = None,
1508
+ timeout_ms: Optional[int] = None,
1509
+ http_headers: Optional[Mapping[str, str]] = None,
1510
+ ) -> Optional[models.GetFirewallAssignmentsResponse]:
1511
+ r"""Firewall Assignments
1512
+
1513
+ List servers assigned to a firewall
1514
+
1515
+ :param firewall_id: The Firewall ID
1516
+ :param page_size: Number of items to return per page
1517
+ :param page_number: Page number to return (starts at 1)
1518
+ :param retries: Override the default retry configuration for this method
1519
+ :param server_url: Override the default server URL for this method
1520
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
1521
+ :param http_headers: Additional headers to set or replace on requests.
1522
+ """
1523
+ base_url = None
1524
+ url_variables = None
1525
+ if timeout_ms is None:
1526
+ timeout_ms = self.sdk_configuration.timeout_ms
1527
+
1528
+ if server_url is not None:
1529
+ base_url = server_url
1530
+ else:
1531
+ base_url = self._get_url(base_url, url_variables)
1532
+
1533
+ request = models.GetFirewallAssignmentsRequest(
1534
+ firewall_id=firewall_id,
1535
+ page_size=page_size,
1536
+ page_number=page_number,
1537
+ )
1538
+
1539
+ req = self._build_request_async(
1540
+ method="GET",
1541
+ path="/firewalls/{firewall_id}/assignments",
1542
+ base_url=base_url,
1543
+ url_variables=url_variables,
1544
+ request=request,
1545
+ request_body_required=False,
1546
+ request_has_path_params=True,
1547
+ request_has_query_params=True,
1548
+ user_agent_header="user-agent",
1549
+ accept_header_value="application/vnd.api+json",
1550
+ http_headers=http_headers,
1551
+ security=self.sdk_configuration.security,
1552
+ allow_empty_value=None,
1553
+ timeout_ms=timeout_ms,
1554
+ )
1555
+
1556
+ if retries == UNSET:
1557
+ if self.sdk_configuration.retry_config is not UNSET:
1558
+ retries = self.sdk_configuration.retry_config
1559
+
1560
+ retry_config = None
1561
+ if isinstance(retries, utils.RetryConfig):
1562
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
1563
+
1564
+ http_res = await self.do_request_async(
1565
+ hook_ctx=HookContext(
1566
+ config=self.sdk_configuration,
1567
+ base_url=base_url or "",
1568
+ operation_id="get-firewall-assignments",
1569
+ oauth2_scopes=None,
1570
+ security_source=get_security_from_env(
1571
+ self.sdk_configuration.security, models.Security
1572
+ ),
1573
+ ),
1574
+ request=req,
1575
+ error_status_codes=["4XX", "5XX"],
1576
+ retry_config=retry_config,
1577
+ )
1578
+
1579
+ def next_func() -> Optional[models.GetFirewallAssignmentsResponse]:
1580
+ body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]])
1581
+ page = request.page_number if not request.page_number is None else 1
1582
+ next_page = page + 1
1583
+
1584
+ if not http_res.text:
1585
+ return None
1586
+ results = JSONPath("$.data").parse(body)
1587
+ if len(results) == 0 or len(results[0]) == 0:
1588
+ return None
1589
+ limit = request.page_size if not request.page_size is None else 20
1590
+ if len(results[0]) < limit:
1591
+ return None
1592
+
1593
+ return self.list_assignments(
1594
+ firewall_id=firewall_id,
1595
+ page_size=page_size,
1596
+ page_number=next_page,
1597
+ retries=retries,
1598
+ )
1599
+
1600
+ if utils.match_response(http_res, "200", "application/vnd.api+json"):
1601
+ return models.GetFirewallAssignmentsResponse(
1602
+ result=unmarshal_json_response(models.FirewallAssignments, http_res),
1603
+ next=next_func,
1604
+ )
1605
+ if utils.match_response(http_res, "4XX", "*"):
1606
+ http_res_text = await utils.stream_to_text_async(http_res)
1607
+ raise models.APIError("API error occurred", http_res, http_res_text)
1608
+ if utils.match_response(http_res, "5XX", "*"):
1609
+ http_res_text = await utils.stream_to_text_async(http_res)
1610
+ raise models.APIError("API error occurred", http_res, http_res_text)
1611
+
1612
+ raise models.APIError("Unexpected response received", http_res)
1613
+
1614
+ def delete_assignment(
1615
+ self,
1616
+ *,
1617
+ firewall_id: str,
1618
+ assignment_id: str,
1619
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
1620
+ server_url: Optional[str] = None,
1621
+ timeout_ms: Optional[int] = None,
1622
+ http_headers: Optional[Mapping[str, str]] = None,
1623
+ ):
1624
+ r"""Delete Firewall Assignment
1625
+
1626
+ Remove a server from a firewall
1627
+
1628
+ :param firewall_id: The Firewall ID
1629
+ :param assignment_id: The Assignment ID
1630
+ :param retries: Override the default retry configuration for this method
1631
+ :param server_url: Override the default server URL for this method
1632
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
1633
+ :param http_headers: Additional headers to set or replace on requests.
1634
+ """
1635
+ base_url = None
1636
+ url_variables = None
1637
+ if timeout_ms is None:
1638
+ timeout_ms = self.sdk_configuration.timeout_ms
1639
+
1640
+ if server_url is not None:
1641
+ base_url = server_url
1642
+ else:
1643
+ base_url = self._get_url(base_url, url_variables)
1644
+
1645
+ request = models.DeleteFirewallAssignmentRequest(
1646
+ firewall_id=firewall_id,
1647
+ assignment_id=assignment_id,
1648
+ )
1649
+
1650
+ req = self._build_request(
1651
+ method="DELETE",
1652
+ path="/firewalls/{firewall_id}/assignments/{assignment_id}",
1653
+ base_url=base_url,
1654
+ url_variables=url_variables,
1655
+ request=request,
1656
+ request_body_required=False,
1657
+ request_has_path_params=True,
1658
+ request_has_query_params=True,
1659
+ user_agent_header="user-agent",
1660
+ accept_header_value="*/*",
1661
+ http_headers=http_headers,
1662
+ security=self.sdk_configuration.security,
1663
+ allow_empty_value=None,
1664
+ timeout_ms=timeout_ms,
1665
+ )
1666
+
1667
+ if retries == UNSET:
1668
+ if self.sdk_configuration.retry_config is not UNSET:
1669
+ retries = self.sdk_configuration.retry_config
1670
+
1671
+ retry_config = None
1672
+ if isinstance(retries, utils.RetryConfig):
1673
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
1674
+
1675
+ http_res = self.do_request(
1676
+ hook_ctx=HookContext(
1677
+ config=self.sdk_configuration,
1678
+ base_url=base_url or "",
1679
+ operation_id="delete-firewall-assignment",
1680
+ oauth2_scopes=None,
1681
+ security_source=get_security_from_env(
1682
+ self.sdk_configuration.security, models.Security
1683
+ ),
1684
+ ),
1685
+ request=req,
1686
+ error_status_codes=["4XX", "5XX"],
1687
+ retry_config=retry_config,
1688
+ )
1689
+
1690
+ if utils.match_response(http_res, "204", "*"):
1691
+ return
1692
+ if utils.match_response(http_res, "4XX", "*"):
1693
+ http_res_text = utils.stream_to_text(http_res)
1694
+ raise models.APIError("API error occurred", http_res, http_res_text)
1695
+ if utils.match_response(http_res, "5XX", "*"):
1696
+ http_res_text = utils.stream_to_text(http_res)
1697
+ raise models.APIError("API error occurred", http_res, http_res_text)
1698
+
1699
+ raise models.APIError("Unexpected response received", http_res)
1700
+
1701
+ async def delete_assignment_async(
1702
+ self,
1703
+ *,
1704
+ firewall_id: str,
1705
+ assignment_id: str,
1706
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
1707
+ server_url: Optional[str] = None,
1708
+ timeout_ms: Optional[int] = None,
1709
+ http_headers: Optional[Mapping[str, str]] = None,
1710
+ ):
1711
+ r"""Delete Firewall Assignment
1712
+
1713
+ Remove a server from a firewall
1714
+
1715
+ :param firewall_id: The Firewall ID
1716
+ :param assignment_id: The Assignment ID
1717
+ :param retries: Override the default retry configuration for this method
1718
+ :param server_url: Override the default server URL for this method
1719
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
1720
+ :param http_headers: Additional headers to set or replace on requests.
1721
+ """
1722
+ base_url = None
1723
+ url_variables = None
1724
+ if timeout_ms is None:
1725
+ timeout_ms = self.sdk_configuration.timeout_ms
1726
+
1727
+ if server_url is not None:
1728
+ base_url = server_url
1729
+ else:
1730
+ base_url = self._get_url(base_url, url_variables)
1731
+
1732
+ request = models.DeleteFirewallAssignmentRequest(
1733
+ firewall_id=firewall_id,
1734
+ assignment_id=assignment_id,
1735
+ )
1736
+
1737
+ req = self._build_request_async(
1738
+ method="DELETE",
1739
+ path="/firewalls/{firewall_id}/assignments/{assignment_id}",
1740
+ base_url=base_url,
1741
+ url_variables=url_variables,
1742
+ request=request,
1743
+ request_body_required=False,
1744
+ request_has_path_params=True,
1745
+ request_has_query_params=True,
1746
+ user_agent_header="user-agent",
1747
+ accept_header_value="*/*",
1748
+ http_headers=http_headers,
1749
+ security=self.sdk_configuration.security,
1750
+ allow_empty_value=None,
1751
+ timeout_ms=timeout_ms,
1752
+ )
1753
+
1754
+ if retries == UNSET:
1755
+ if self.sdk_configuration.retry_config is not UNSET:
1756
+ retries = self.sdk_configuration.retry_config
1757
+
1758
+ retry_config = None
1759
+ if isinstance(retries, utils.RetryConfig):
1760
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
1761
+
1762
+ http_res = await self.do_request_async(
1763
+ hook_ctx=HookContext(
1764
+ config=self.sdk_configuration,
1765
+ base_url=base_url or "",
1766
+ operation_id="delete-firewall-assignment",
1767
+ oauth2_scopes=None,
1768
+ security_source=get_security_from_env(
1769
+ self.sdk_configuration.security, models.Security
1770
+ ),
1771
+ ),
1772
+ request=req,
1773
+ error_status_codes=["4XX", "5XX"],
1774
+ retry_config=retry_config,
1775
+ )
1776
+
1777
+ if utils.match_response(http_res, "204", "*"):
1778
+ return
1779
+ if utils.match_response(http_res, "4XX", "*"):
1780
+ http_res_text = await utils.stream_to_text_async(http_res)
1781
+ raise models.APIError("API error occurred", http_res, http_res_text)
1782
+ if utils.match_response(http_res, "5XX", "*"):
1783
+ http_res_text = await utils.stream_to_text_async(http_res)
1784
+ raise models.APIError("API error occurred", http_res, http_res_text)
1785
+
1786
+ raise models.APIError("Unexpected response received", http_res)