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,830 @@
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 ProjectsSDK(BaseSDK):
14
+ def list(
15
+ self,
16
+ *,
17
+ filter_name: Optional[str] = None,
18
+ filter_slug: Optional[str] = None,
19
+ filter_description: Optional[str] = None,
20
+ filter_billing_type: Optional[str] = None,
21
+ filter_environment: Optional[str] = None,
22
+ filter_tags: Optional[str] = None,
23
+ extra_fields_projects: Optional[str] = None,
24
+ page_size: Optional[int] = 20,
25
+ page_number: Optional[int] = 1,
26
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
27
+ server_url: Optional[str] = None,
28
+ timeout_ms: Optional[int] = None,
29
+ http_headers: Optional[Mapping[str, str]] = None,
30
+ ) -> Optional[models.GetProjectsResponse]:
31
+ r"""List all Projects
32
+
33
+ Returns a list of all projects for the current team
34
+
35
+
36
+ :param filter_name: The project name to filter by
37
+ :param filter_slug: The project slug to filter by
38
+ :param filter_description: The project description to filter by
39
+ :param filter_billing_type: The billing type to filter by
40
+ :param filter_environment: The environment to filter by
41
+ :param filter_tags: The tags ids to filter by, separated by comma, e.g. `filter[tags]=tag_1,tag_2`will return projects with `tag_1` AND `tag_2`
42
+ :param extra_fields_projects: The `last_renewal_date` and `next_renewal_date` are provided as extra attributes that show previous and future billing cycle dates. To request it, just set `extra_fields[projects]=last_renewal_date,next_renewal_date` in the query string.
43
+ :param page_size: Number of items to return per page
44
+ :param page_number: Page number to return (starts at 1)
45
+ :param retries: Override the default retry configuration for this method
46
+ :param server_url: Override the default server URL for this method
47
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
48
+ :param http_headers: Additional headers to set or replace on requests.
49
+ """
50
+ base_url = None
51
+ url_variables = None
52
+ if timeout_ms is None:
53
+ timeout_ms = self.sdk_configuration.timeout_ms
54
+
55
+ if server_url is not None:
56
+ base_url = server_url
57
+ else:
58
+ base_url = self._get_url(base_url, url_variables)
59
+
60
+ request = models.GetProjectsRequest(
61
+ filter_name=filter_name,
62
+ filter_slug=filter_slug,
63
+ filter_description=filter_description,
64
+ filter_billing_type=filter_billing_type,
65
+ filter_environment=filter_environment,
66
+ filter_tags=filter_tags,
67
+ extra_fields_projects=extra_fields_projects,
68
+ page_size=page_size,
69
+ page_number=page_number,
70
+ )
71
+
72
+ req = self._build_request(
73
+ method="GET",
74
+ path="/projects",
75
+ base_url=base_url,
76
+ url_variables=url_variables,
77
+ request=request,
78
+ request_body_required=False,
79
+ request_has_path_params=False,
80
+ request_has_query_params=True,
81
+ user_agent_header="user-agent",
82
+ accept_header_value="application/vnd.api+json",
83
+ http_headers=http_headers,
84
+ security=self.sdk_configuration.security,
85
+ allow_empty_value=None,
86
+ timeout_ms=timeout_ms,
87
+ )
88
+
89
+ if retries == UNSET:
90
+ if self.sdk_configuration.retry_config is not UNSET:
91
+ retries = self.sdk_configuration.retry_config
92
+
93
+ retry_config = None
94
+ if isinstance(retries, utils.RetryConfig):
95
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
96
+
97
+ http_res = self.do_request(
98
+ hook_ctx=HookContext(
99
+ config=self.sdk_configuration,
100
+ base_url=base_url or "",
101
+ operation_id="get-projects",
102
+ oauth2_scopes=None,
103
+ security_source=get_security_from_env(
104
+ self.sdk_configuration.security, models.Security
105
+ ),
106
+ ),
107
+ request=req,
108
+ error_status_codes=["4XX", "5XX"],
109
+ retry_config=retry_config,
110
+ )
111
+
112
+ def next_func() -> Optional[models.GetProjectsResponse]:
113
+ body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]])
114
+ page = request.page_number if not request.page_number is None else 1
115
+ next_page = page + 1
116
+
117
+ if not http_res.text:
118
+ return None
119
+ results = JSONPath("$.data").parse(body)
120
+ if len(results) == 0 or len(results[0]) == 0:
121
+ return None
122
+ limit = request.page_size if not request.page_size is None else 20
123
+ if len(results[0]) < limit:
124
+ return None
125
+
126
+ return self.list(
127
+ filter_name=filter_name,
128
+ filter_slug=filter_slug,
129
+ filter_description=filter_description,
130
+ filter_billing_type=filter_billing_type,
131
+ filter_environment=filter_environment,
132
+ filter_tags=filter_tags,
133
+ extra_fields_projects=extra_fields_projects,
134
+ page_size=page_size,
135
+ page_number=next_page,
136
+ retries=retries,
137
+ )
138
+
139
+ if utils.match_response(http_res, "200", "application/vnd.api+json"):
140
+ return models.GetProjectsResponse(
141
+ result=unmarshal_json_response(models.Projects, http_res),
142
+ next=next_func,
143
+ )
144
+ if utils.match_response(http_res, "4XX", "*"):
145
+ http_res_text = utils.stream_to_text(http_res)
146
+ raise models.APIError("API error occurred", http_res, http_res_text)
147
+ if utils.match_response(http_res, "5XX", "*"):
148
+ http_res_text = utils.stream_to_text(http_res)
149
+ raise models.APIError("API error occurred", http_res, http_res_text)
150
+
151
+ raise models.APIError("Unexpected response received", http_res)
152
+
153
+ async def list_async(
154
+ self,
155
+ *,
156
+ filter_name: Optional[str] = None,
157
+ filter_slug: Optional[str] = None,
158
+ filter_description: Optional[str] = None,
159
+ filter_billing_type: Optional[str] = None,
160
+ filter_environment: Optional[str] = None,
161
+ filter_tags: Optional[str] = None,
162
+ extra_fields_projects: Optional[str] = None,
163
+ page_size: Optional[int] = 20,
164
+ page_number: Optional[int] = 1,
165
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
166
+ server_url: Optional[str] = None,
167
+ timeout_ms: Optional[int] = None,
168
+ http_headers: Optional[Mapping[str, str]] = None,
169
+ ) -> Optional[models.GetProjectsResponse]:
170
+ r"""List all Projects
171
+
172
+ Returns a list of all projects for the current team
173
+
174
+
175
+ :param filter_name: The project name to filter by
176
+ :param filter_slug: The project slug to filter by
177
+ :param filter_description: The project description to filter by
178
+ :param filter_billing_type: The billing type to filter by
179
+ :param filter_environment: The environment to filter by
180
+ :param filter_tags: The tags ids to filter by, separated by comma, e.g. `filter[tags]=tag_1,tag_2`will return projects with `tag_1` AND `tag_2`
181
+ :param extra_fields_projects: The `last_renewal_date` and `next_renewal_date` are provided as extra attributes that show previous and future billing cycle dates. To request it, just set `extra_fields[projects]=last_renewal_date,next_renewal_date` in the query string.
182
+ :param page_size: Number of items to return per page
183
+ :param page_number: Page number to return (starts at 1)
184
+ :param retries: Override the default retry configuration for this method
185
+ :param server_url: Override the default server URL for this method
186
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
187
+ :param http_headers: Additional headers to set or replace on requests.
188
+ """
189
+ base_url = None
190
+ url_variables = None
191
+ if timeout_ms is None:
192
+ timeout_ms = self.sdk_configuration.timeout_ms
193
+
194
+ if server_url is not None:
195
+ base_url = server_url
196
+ else:
197
+ base_url = self._get_url(base_url, url_variables)
198
+
199
+ request = models.GetProjectsRequest(
200
+ filter_name=filter_name,
201
+ filter_slug=filter_slug,
202
+ filter_description=filter_description,
203
+ filter_billing_type=filter_billing_type,
204
+ filter_environment=filter_environment,
205
+ filter_tags=filter_tags,
206
+ extra_fields_projects=extra_fields_projects,
207
+ page_size=page_size,
208
+ page_number=page_number,
209
+ )
210
+
211
+ req = self._build_request_async(
212
+ method="GET",
213
+ path="/projects",
214
+ base_url=base_url,
215
+ url_variables=url_variables,
216
+ request=request,
217
+ request_body_required=False,
218
+ request_has_path_params=False,
219
+ request_has_query_params=True,
220
+ user_agent_header="user-agent",
221
+ accept_header_value="application/vnd.api+json",
222
+ http_headers=http_headers,
223
+ security=self.sdk_configuration.security,
224
+ allow_empty_value=None,
225
+ timeout_ms=timeout_ms,
226
+ )
227
+
228
+ if retries == UNSET:
229
+ if self.sdk_configuration.retry_config is not UNSET:
230
+ retries = self.sdk_configuration.retry_config
231
+
232
+ retry_config = None
233
+ if isinstance(retries, utils.RetryConfig):
234
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
235
+
236
+ http_res = await self.do_request_async(
237
+ hook_ctx=HookContext(
238
+ config=self.sdk_configuration,
239
+ base_url=base_url or "",
240
+ operation_id="get-projects",
241
+ oauth2_scopes=None,
242
+ security_source=get_security_from_env(
243
+ self.sdk_configuration.security, models.Security
244
+ ),
245
+ ),
246
+ request=req,
247
+ error_status_codes=["4XX", "5XX"],
248
+ retry_config=retry_config,
249
+ )
250
+
251
+ def next_func() -> Optional[models.GetProjectsResponse]:
252
+ body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]])
253
+ page = request.page_number if not request.page_number is None else 1
254
+ next_page = page + 1
255
+
256
+ if not http_res.text:
257
+ return None
258
+ results = JSONPath("$.data").parse(body)
259
+ if len(results) == 0 or len(results[0]) == 0:
260
+ return None
261
+ limit = request.page_size if not request.page_size is None else 20
262
+ if len(results[0]) < limit:
263
+ return None
264
+
265
+ return self.list(
266
+ filter_name=filter_name,
267
+ filter_slug=filter_slug,
268
+ filter_description=filter_description,
269
+ filter_billing_type=filter_billing_type,
270
+ filter_environment=filter_environment,
271
+ filter_tags=filter_tags,
272
+ extra_fields_projects=extra_fields_projects,
273
+ page_size=page_size,
274
+ page_number=next_page,
275
+ retries=retries,
276
+ )
277
+
278
+ if utils.match_response(http_res, "200", "application/vnd.api+json"):
279
+ return models.GetProjectsResponse(
280
+ result=unmarshal_json_response(models.Projects, http_res),
281
+ next=next_func,
282
+ )
283
+ if utils.match_response(http_res, "4XX", "*"):
284
+ http_res_text = await utils.stream_to_text_async(http_res)
285
+ raise models.APIError("API error occurred", http_res, http_res_text)
286
+ if utils.match_response(http_res, "5XX", "*"):
287
+ http_res_text = await utils.stream_to_text_async(http_res)
288
+ raise models.APIError("API error occurred", http_res, http_res_text)
289
+
290
+ raise models.APIError("Unexpected response received", http_res)
291
+
292
+ def create(
293
+ self,
294
+ *,
295
+ data: Optional[
296
+ Union[
297
+ models.CreateProjectProjectsData,
298
+ models.CreateProjectProjectsDataTypedDict,
299
+ ]
300
+ ] = None,
301
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
302
+ server_url: Optional[str] = None,
303
+ timeout_ms: Optional[int] = None,
304
+ http_headers: Optional[Mapping[str, str]] = None,
305
+ ) -> models.CreateProjectResponseBody:
306
+ r"""Create a Project
307
+
308
+ :param data:
309
+ :param retries: Override the default retry configuration for this method
310
+ :param server_url: Override the default server URL for this method
311
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
312
+ :param http_headers: Additional headers to set or replace on requests.
313
+ """
314
+ base_url = None
315
+ url_variables = None
316
+ if timeout_ms is None:
317
+ timeout_ms = self.sdk_configuration.timeout_ms
318
+
319
+ if server_url is not None:
320
+ base_url = server_url
321
+ else:
322
+ base_url = self._get_url(base_url, url_variables)
323
+
324
+ request = models.CreateProjectProjectsRequestBody(
325
+ data=utils.get_pydantic_model(
326
+ data, Optional[models.CreateProjectProjectsData]
327
+ ),
328
+ )
329
+
330
+ req = self._build_request(
331
+ method="POST",
332
+ path="/projects",
333
+ base_url=base_url,
334
+ url_variables=url_variables,
335
+ request=request,
336
+ request_body_required=True,
337
+ request_has_path_params=False,
338
+ request_has_query_params=True,
339
+ user_agent_header="user-agent",
340
+ accept_header_value="application/vnd.api+json",
341
+ http_headers=http_headers,
342
+ security=self.sdk_configuration.security,
343
+ get_serialized_body=lambda: utils.serialize_request_body(
344
+ request, False, False, "json", models.CreateProjectProjectsRequestBody
345
+ ),
346
+ allow_empty_value=None,
347
+ timeout_ms=timeout_ms,
348
+ )
349
+
350
+ if retries == UNSET:
351
+ if self.sdk_configuration.retry_config is not UNSET:
352
+ retries = self.sdk_configuration.retry_config
353
+
354
+ retry_config = None
355
+ if isinstance(retries, utils.RetryConfig):
356
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
357
+
358
+ http_res = self.do_request(
359
+ hook_ctx=HookContext(
360
+ config=self.sdk_configuration,
361
+ base_url=base_url or "",
362
+ operation_id="create-project",
363
+ oauth2_scopes=None,
364
+ security_source=get_security_from_env(
365
+ self.sdk_configuration.security, models.Security
366
+ ),
367
+ ),
368
+ request=req,
369
+ error_status_codes=["4XX", "5XX"],
370
+ retry_config=retry_config,
371
+ )
372
+
373
+ if utils.match_response(http_res, "201", "application/vnd.api+json"):
374
+ return unmarshal_json_response(models.CreateProjectResponseBody, http_res)
375
+ if utils.match_response(http_res, "4XX", "*"):
376
+ http_res_text = utils.stream_to_text(http_res)
377
+ raise models.APIError("API error occurred", http_res, http_res_text)
378
+ if utils.match_response(http_res, "5XX", "*"):
379
+ http_res_text = utils.stream_to_text(http_res)
380
+ raise models.APIError("API error occurred", http_res, http_res_text)
381
+
382
+ raise models.APIError("Unexpected response received", http_res)
383
+
384
+ async def create_async(
385
+ self,
386
+ *,
387
+ data: Optional[
388
+ Union[
389
+ models.CreateProjectProjectsData,
390
+ models.CreateProjectProjectsDataTypedDict,
391
+ ]
392
+ ] = None,
393
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
394
+ server_url: Optional[str] = None,
395
+ timeout_ms: Optional[int] = None,
396
+ http_headers: Optional[Mapping[str, str]] = None,
397
+ ) -> models.CreateProjectResponseBody:
398
+ r"""Create a Project
399
+
400
+ :param data:
401
+ :param retries: Override the default retry configuration for this method
402
+ :param server_url: Override the default server URL for this method
403
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
404
+ :param http_headers: Additional headers to set or replace on requests.
405
+ """
406
+ base_url = None
407
+ url_variables = None
408
+ if timeout_ms is None:
409
+ timeout_ms = self.sdk_configuration.timeout_ms
410
+
411
+ if server_url is not None:
412
+ base_url = server_url
413
+ else:
414
+ base_url = self._get_url(base_url, url_variables)
415
+
416
+ request = models.CreateProjectProjectsRequestBody(
417
+ data=utils.get_pydantic_model(
418
+ data, Optional[models.CreateProjectProjectsData]
419
+ ),
420
+ )
421
+
422
+ req = self._build_request_async(
423
+ method="POST",
424
+ path="/projects",
425
+ base_url=base_url,
426
+ url_variables=url_variables,
427
+ request=request,
428
+ request_body_required=True,
429
+ request_has_path_params=False,
430
+ request_has_query_params=True,
431
+ user_agent_header="user-agent",
432
+ accept_header_value="application/vnd.api+json",
433
+ http_headers=http_headers,
434
+ security=self.sdk_configuration.security,
435
+ get_serialized_body=lambda: utils.serialize_request_body(
436
+ request, False, False, "json", models.CreateProjectProjectsRequestBody
437
+ ),
438
+ allow_empty_value=None,
439
+ timeout_ms=timeout_ms,
440
+ )
441
+
442
+ if retries == UNSET:
443
+ if self.sdk_configuration.retry_config is not UNSET:
444
+ retries = self.sdk_configuration.retry_config
445
+
446
+ retry_config = None
447
+ if isinstance(retries, utils.RetryConfig):
448
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
449
+
450
+ http_res = await self.do_request_async(
451
+ hook_ctx=HookContext(
452
+ config=self.sdk_configuration,
453
+ base_url=base_url or "",
454
+ operation_id="create-project",
455
+ oauth2_scopes=None,
456
+ security_source=get_security_from_env(
457
+ self.sdk_configuration.security, models.Security
458
+ ),
459
+ ),
460
+ request=req,
461
+ error_status_codes=["4XX", "5XX"],
462
+ retry_config=retry_config,
463
+ )
464
+
465
+ if utils.match_response(http_res, "201", "application/vnd.api+json"):
466
+ return unmarshal_json_response(models.CreateProjectResponseBody, http_res)
467
+ if utils.match_response(http_res, "4XX", "*"):
468
+ http_res_text = await utils.stream_to_text_async(http_res)
469
+ raise models.APIError("API error occurred", http_res, http_res_text)
470
+ if utils.match_response(http_res, "5XX", "*"):
471
+ http_res_text = await utils.stream_to_text_async(http_res)
472
+ raise models.APIError("API error occurred", http_res, http_res_text)
473
+
474
+ raise models.APIError("Unexpected response received", http_res)
475
+
476
+ def update(
477
+ self,
478
+ *,
479
+ project_id: str,
480
+ data: Union[
481
+ models.UpdateProjectProjectsData, models.UpdateProjectProjectsDataTypedDict
482
+ ],
483
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
484
+ server_url: Optional[str] = None,
485
+ timeout_ms: Optional[int] = None,
486
+ http_headers: Optional[Mapping[str, str]] = None,
487
+ ) -> models.UpdateProjectResponseBody:
488
+ r"""Update a Project
489
+
490
+ :param project_id: The project ID or Slug
491
+ :param data:
492
+ :param retries: Override the default retry configuration for this method
493
+ :param server_url: Override the default server URL for this method
494
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
495
+ :param http_headers: Additional headers to set or replace on requests.
496
+ """
497
+ base_url = None
498
+ url_variables = None
499
+ if timeout_ms is None:
500
+ timeout_ms = self.sdk_configuration.timeout_ms
501
+
502
+ if server_url is not None:
503
+ base_url = server_url
504
+ else:
505
+ base_url = self._get_url(base_url, url_variables)
506
+
507
+ request = models.UpdateProjectRequest(
508
+ project_id=project_id,
509
+ request_body=models.UpdateProjectProjectsRequestBody(
510
+ data=utils.get_pydantic_model(data, models.UpdateProjectProjectsData),
511
+ ),
512
+ )
513
+
514
+ req = self._build_request(
515
+ method="PATCH",
516
+ path="/projects/{project_id}",
517
+ base_url=base_url,
518
+ url_variables=url_variables,
519
+ request=request,
520
+ request_body_required=False,
521
+ request_has_path_params=True,
522
+ request_has_query_params=True,
523
+ user_agent_header="user-agent",
524
+ accept_header_value="application/vnd.api+json",
525
+ http_headers=http_headers,
526
+ security=self.sdk_configuration.security,
527
+ get_serialized_body=lambda: utils.serialize_request_body(
528
+ request.request_body,
529
+ False,
530
+ True,
531
+ "json",
532
+ Optional[models.UpdateProjectProjectsRequestBody],
533
+ ),
534
+ allow_empty_value=None,
535
+ timeout_ms=timeout_ms,
536
+ )
537
+
538
+ if retries == UNSET:
539
+ if self.sdk_configuration.retry_config is not UNSET:
540
+ retries = self.sdk_configuration.retry_config
541
+
542
+ retry_config = None
543
+ if isinstance(retries, utils.RetryConfig):
544
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
545
+
546
+ http_res = self.do_request(
547
+ hook_ctx=HookContext(
548
+ config=self.sdk_configuration,
549
+ base_url=base_url or "",
550
+ operation_id="update-project",
551
+ oauth2_scopes=None,
552
+ security_source=get_security_from_env(
553
+ self.sdk_configuration.security, models.Security
554
+ ),
555
+ ),
556
+ request=req,
557
+ error_status_codes=["4XX", "5XX"],
558
+ retry_config=retry_config,
559
+ )
560
+
561
+ if utils.match_response(http_res, "200", "application/vnd.api+json"):
562
+ return unmarshal_json_response(models.UpdateProjectResponseBody, http_res)
563
+ if utils.match_response(http_res, "4XX", "*"):
564
+ http_res_text = utils.stream_to_text(http_res)
565
+ raise models.APIError("API error occurred", http_res, http_res_text)
566
+ if utils.match_response(http_res, "5XX", "*"):
567
+ http_res_text = utils.stream_to_text(http_res)
568
+ raise models.APIError("API error occurred", http_res, http_res_text)
569
+
570
+ raise models.APIError("Unexpected response received", http_res)
571
+
572
+ async def update_async(
573
+ self,
574
+ *,
575
+ project_id: str,
576
+ data: Union[
577
+ models.UpdateProjectProjectsData, models.UpdateProjectProjectsDataTypedDict
578
+ ],
579
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
580
+ server_url: Optional[str] = None,
581
+ timeout_ms: Optional[int] = None,
582
+ http_headers: Optional[Mapping[str, str]] = None,
583
+ ) -> models.UpdateProjectResponseBody:
584
+ r"""Update a Project
585
+
586
+ :param project_id: The project ID or Slug
587
+ :param data:
588
+ :param retries: Override the default retry configuration for this method
589
+ :param server_url: Override the default server URL for this method
590
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
591
+ :param http_headers: Additional headers to set or replace on requests.
592
+ """
593
+ base_url = None
594
+ url_variables = None
595
+ if timeout_ms is None:
596
+ timeout_ms = self.sdk_configuration.timeout_ms
597
+
598
+ if server_url is not None:
599
+ base_url = server_url
600
+ else:
601
+ base_url = self._get_url(base_url, url_variables)
602
+
603
+ request = models.UpdateProjectRequest(
604
+ project_id=project_id,
605
+ request_body=models.UpdateProjectProjectsRequestBody(
606
+ data=utils.get_pydantic_model(data, models.UpdateProjectProjectsData),
607
+ ),
608
+ )
609
+
610
+ req = self._build_request_async(
611
+ method="PATCH",
612
+ path="/projects/{project_id}",
613
+ base_url=base_url,
614
+ url_variables=url_variables,
615
+ request=request,
616
+ request_body_required=False,
617
+ request_has_path_params=True,
618
+ request_has_query_params=True,
619
+ user_agent_header="user-agent",
620
+ accept_header_value="application/vnd.api+json",
621
+ http_headers=http_headers,
622
+ security=self.sdk_configuration.security,
623
+ get_serialized_body=lambda: utils.serialize_request_body(
624
+ request.request_body,
625
+ False,
626
+ True,
627
+ "json",
628
+ Optional[models.UpdateProjectProjectsRequestBody],
629
+ ),
630
+ allow_empty_value=None,
631
+ timeout_ms=timeout_ms,
632
+ )
633
+
634
+ if retries == UNSET:
635
+ if self.sdk_configuration.retry_config is not UNSET:
636
+ retries = self.sdk_configuration.retry_config
637
+
638
+ retry_config = None
639
+ if isinstance(retries, utils.RetryConfig):
640
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
641
+
642
+ http_res = await self.do_request_async(
643
+ hook_ctx=HookContext(
644
+ config=self.sdk_configuration,
645
+ base_url=base_url or "",
646
+ operation_id="update-project",
647
+ oauth2_scopes=None,
648
+ security_source=get_security_from_env(
649
+ self.sdk_configuration.security, models.Security
650
+ ),
651
+ ),
652
+ request=req,
653
+ error_status_codes=["4XX", "5XX"],
654
+ retry_config=retry_config,
655
+ )
656
+
657
+ if utils.match_response(http_res, "200", "application/vnd.api+json"):
658
+ return unmarshal_json_response(models.UpdateProjectResponseBody, http_res)
659
+ if utils.match_response(http_res, "4XX", "*"):
660
+ http_res_text = await utils.stream_to_text_async(http_res)
661
+ raise models.APIError("API error occurred", http_res, http_res_text)
662
+ if utils.match_response(http_res, "5XX", "*"):
663
+ http_res_text = await utils.stream_to_text_async(http_res)
664
+ raise models.APIError("API error occurred", http_res, http_res_text)
665
+
666
+ raise models.APIError("Unexpected response received", http_res)
667
+
668
+ def delete(
669
+ self,
670
+ *,
671
+ project_id: str,
672
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
673
+ server_url: Optional[str] = None,
674
+ timeout_ms: Optional[int] = None,
675
+ http_headers: Optional[Mapping[str, str]] = None,
676
+ ):
677
+ r"""Delete a Project
678
+
679
+ :param project_id: The project ID or Slug
680
+ :param retries: Override the default retry configuration for this method
681
+ :param server_url: Override the default server URL for this method
682
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
683
+ :param http_headers: Additional headers to set or replace on requests.
684
+ """
685
+ base_url = None
686
+ url_variables = None
687
+ if timeout_ms is None:
688
+ timeout_ms = self.sdk_configuration.timeout_ms
689
+
690
+ if server_url is not None:
691
+ base_url = server_url
692
+ else:
693
+ base_url = self._get_url(base_url, url_variables)
694
+
695
+ request = models.DeleteProjectRequest(
696
+ project_id=project_id,
697
+ )
698
+
699
+ req = self._build_request(
700
+ method="DELETE",
701
+ path="/projects/{project_id}",
702
+ base_url=base_url,
703
+ url_variables=url_variables,
704
+ request=request,
705
+ request_body_required=False,
706
+ request_has_path_params=True,
707
+ request_has_query_params=True,
708
+ user_agent_header="user-agent",
709
+ accept_header_value="*/*",
710
+ http_headers=http_headers,
711
+ security=self.sdk_configuration.security,
712
+ allow_empty_value=None,
713
+ timeout_ms=timeout_ms,
714
+ )
715
+
716
+ if retries == UNSET:
717
+ if self.sdk_configuration.retry_config is not UNSET:
718
+ retries = self.sdk_configuration.retry_config
719
+
720
+ retry_config = None
721
+ if isinstance(retries, utils.RetryConfig):
722
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
723
+
724
+ http_res = self.do_request(
725
+ hook_ctx=HookContext(
726
+ config=self.sdk_configuration,
727
+ base_url=base_url or "",
728
+ operation_id="delete-project",
729
+ oauth2_scopes=None,
730
+ security_source=get_security_from_env(
731
+ self.sdk_configuration.security, models.Security
732
+ ),
733
+ ),
734
+ request=req,
735
+ error_status_codes=["4XX", "5XX"],
736
+ retry_config=retry_config,
737
+ )
738
+
739
+ if utils.match_response(http_res, "204", "*"):
740
+ return
741
+ if utils.match_response(http_res, "4XX", "*"):
742
+ http_res_text = utils.stream_to_text(http_res)
743
+ raise models.APIError("API error occurred", http_res, http_res_text)
744
+ if utils.match_response(http_res, "5XX", "*"):
745
+ http_res_text = utils.stream_to_text(http_res)
746
+ raise models.APIError("API error occurred", http_res, http_res_text)
747
+
748
+ raise models.APIError("Unexpected response received", http_res)
749
+
750
+ async def delete_async(
751
+ self,
752
+ *,
753
+ project_id: str,
754
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
755
+ server_url: Optional[str] = None,
756
+ timeout_ms: Optional[int] = None,
757
+ http_headers: Optional[Mapping[str, str]] = None,
758
+ ):
759
+ r"""Delete a Project
760
+
761
+ :param project_id: The project ID or Slug
762
+ :param retries: Override the default retry configuration for this method
763
+ :param server_url: Override the default server URL for this method
764
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
765
+ :param http_headers: Additional headers to set or replace on requests.
766
+ """
767
+ base_url = None
768
+ url_variables = None
769
+ if timeout_ms is None:
770
+ timeout_ms = self.sdk_configuration.timeout_ms
771
+
772
+ if server_url is not None:
773
+ base_url = server_url
774
+ else:
775
+ base_url = self._get_url(base_url, url_variables)
776
+
777
+ request = models.DeleteProjectRequest(
778
+ project_id=project_id,
779
+ )
780
+
781
+ req = self._build_request_async(
782
+ method="DELETE",
783
+ path="/projects/{project_id}",
784
+ base_url=base_url,
785
+ url_variables=url_variables,
786
+ request=request,
787
+ request_body_required=False,
788
+ request_has_path_params=True,
789
+ request_has_query_params=True,
790
+ user_agent_header="user-agent",
791
+ accept_header_value="*/*",
792
+ http_headers=http_headers,
793
+ security=self.sdk_configuration.security,
794
+ allow_empty_value=None,
795
+ timeout_ms=timeout_ms,
796
+ )
797
+
798
+ if retries == UNSET:
799
+ if self.sdk_configuration.retry_config is not UNSET:
800
+ retries = self.sdk_configuration.retry_config
801
+
802
+ retry_config = None
803
+ if isinstance(retries, utils.RetryConfig):
804
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
805
+
806
+ http_res = await self.do_request_async(
807
+ hook_ctx=HookContext(
808
+ config=self.sdk_configuration,
809
+ base_url=base_url or "",
810
+ operation_id="delete-project",
811
+ oauth2_scopes=None,
812
+ security_source=get_security_from_env(
813
+ self.sdk_configuration.security, models.Security
814
+ ),
815
+ ),
816
+ request=req,
817
+ error_status_codes=["4XX", "5XX"],
818
+ retry_config=retry_config,
819
+ )
820
+
821
+ if utils.match_response(http_res, "204", "*"):
822
+ return
823
+ if utils.match_response(http_res, "4XX", "*"):
824
+ http_res_text = await utils.stream_to_text_async(http_res)
825
+ raise models.APIError("API error occurred", http_res, http_res_text)
826
+ if utils.match_response(http_res, "5XX", "*"):
827
+ http_res_text = await utils.stream_to_text_async(http_res)
828
+ raise models.APIError("API error occurred", http_res, http_res_text)
829
+
830
+ raise models.APIError("Unexpected response received", http_res)