latitudesh-python-sdk 0.0.8__py3-none-any.whl → 1.1.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.

Potentially problematic release.


This version of latitudesh-python-sdk might be problematic. Click here for more details.

Files changed (38) hide show
  1. latitudesh_python_sdk/_version.py +3 -3
  2. latitudesh_python_sdk/events_sdk.py +84 -5
  3. latitudesh_python_sdk/firewalls_sdk.py +130 -9
  4. latitudesh_python_sdk/ipaddresses_sdk.py +78 -5
  5. latitudesh_python_sdk/models/__init__.py +108 -19
  6. latitudesh_python_sdk/models/billing_usage.py +3 -0
  7. latitudesh_python_sdk/models/get_bandwidth_plansop.py +30 -1
  8. latitudesh_python_sdk/models/get_eventsop.py +29 -1
  9. latitudesh_python_sdk/models/get_firewall_assignmentsop.py +37 -2
  10. latitudesh_python_sdk/models/get_ipsop.py +30 -1
  11. latitudesh_python_sdk/models/get_plans_operating_systemop.py +37 -2
  12. latitudesh_python_sdk/models/get_projectsop.py +30 -1
  13. latitudesh_python_sdk/models/get_regionsop.py +42 -0
  14. latitudesh_python_sdk/models/get_rolesop.py +37 -2
  15. latitudesh_python_sdk/models/get_serversop.py +30 -1
  16. latitudesh_python_sdk/models/get_team_membersop.py +42 -0
  17. latitudesh_python_sdk/models/get_virtual_networks_assignmentsop.py +33 -1
  18. latitudesh_python_sdk/models/get_virtual_networksop.py +30 -1
  19. latitudesh_python_sdk/models/list_firewallsop.py +30 -1
  20. latitudesh_python_sdk/models/server.py +11 -11
  21. latitudesh_python_sdk/models/virtual_networks.py +1 -1
  22. latitudesh_python_sdk/operatingsystems_sdk.py +76 -9
  23. latitudesh_python_sdk/plans.py +68 -5
  24. latitudesh_python_sdk/privatenetworks.py +142 -9
  25. latitudesh_python_sdk/projects_sdk.py +78 -5
  26. latitudesh_python_sdk/regions_sdk.py +74 -7
  27. latitudesh_python_sdk/roles.py +74 -7
  28. latitudesh_python_sdk/servers_sdk.py +94 -5
  29. latitudesh_python_sdk/teamsmembers.py +74 -7
  30. latitudesh_python_sdk/utils/__init__.py +1 -0
  31. latitudesh_python_sdk/utils/datetimes.py +23 -0
  32. latitudesh_python_sdk/utils/serializers.py +32 -3
  33. {latitudesh_python_sdk-0.0.8.dist-info → latitudesh_python_sdk-1.1.0.dist-info}/METADATA +31 -5
  34. {latitudesh_python_sdk-0.0.8.dist-info → latitudesh_python_sdk-1.1.0.dist-info}/RECORD +38 -35
  35. latitudesh_python_sdk/models/{deploy_config_error.py → deploy_config.py} +8 -8
  36. latitudesh_python_sdk/models/{virtual_network_error.py → virtual_network.py} +14 -14
  37. {latitudesh_python_sdk-0.0.8.dist-info → latitudesh_python_sdk-1.1.0.dist-info}/LICENSE +0 -0
  38. {latitudesh_python_sdk-0.0.8.dist-info → latitudesh_python_sdk-1.1.0.dist-info}/WHEEL +0 -0
@@ -1,11 +1,12 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from .basesdk import BaseSDK
4
+ from jsonpath import JSONPath
4
5
  from latitudesh_python_sdk import models, utils
5
6
  from latitudesh_python_sdk._hooks import HookContext
6
7
  from latitudesh_python_sdk.types import BaseModel, OptionalNullable, UNSET
7
8
  from latitudesh_python_sdk.utils import get_security_from_env
8
- from typing import Any, Mapping, Optional, Union, cast
9
+ from typing import Any, Dict, List, Mapping, Optional, Union, cast
9
10
 
10
11
 
11
12
  class PrivateNetworks(BaseSDK):
@@ -15,11 +16,13 @@ class PrivateNetworks(BaseSDK):
15
16
  filter_location: Optional[str] = None,
16
17
  filter_project: Optional[str] = None,
17
18
  filter_tags: Optional[str] = None,
19
+ page_size: Optional[int] = 20,
20
+ page_number: Optional[int] = 1,
18
21
  retries: OptionalNullable[utils.RetryConfig] = UNSET,
19
22
  server_url: Optional[str] = None,
20
23
  timeout_ms: Optional[int] = None,
21
24
  http_headers: Optional[Mapping[str, str]] = None,
22
- ) -> models.VirtualNetworks:
25
+ ) -> Optional[models.GetVirtualNetworksResponse]:
23
26
  r"""List all Virtual Networks
24
27
 
25
28
  Lists virtual networks assigned to a project
@@ -28,6 +31,8 @@ class PrivateNetworks(BaseSDK):
28
31
  :param filter_location: The location slug to filter by
29
32
  :param filter_project: The project id or slug to filter by
30
33
  :param filter_tags: The tags ids to filter by, separated by comma, e.g. `filter[tags]=tag_1,tag_2`will return ssh keys with `tag_1` AND `tag_2`
34
+ :param page_size: Number of items to return per page
35
+ :param page_number: Page number to return (starts at 1)
31
36
  :param retries: Override the default retry configuration for this method
32
37
  :param server_url: Override the default server URL for this method
33
38
  :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
@@ -47,6 +52,8 @@ class PrivateNetworks(BaseSDK):
47
52
  filter_location=filter_location,
48
53
  filter_project=filter_project,
49
54
  filter_tags=filter_tags,
55
+ page_size=page_size,
56
+ page_number=page_number,
50
57
  )
51
58
 
52
59
  req = self._build_request(
@@ -87,8 +94,34 @@ class PrivateNetworks(BaseSDK):
87
94
  retry_config=retry_config,
88
95
  )
89
96
 
97
+ def next_func() -> Optional[models.GetVirtualNetworksResponse]:
98
+ body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]])
99
+ page = request.page_number if not request.page_number is None else 1
100
+ next_page = page + 1
101
+
102
+ if not http_res.text:
103
+ return None
104
+ results = JSONPath("$.data").parse(body)
105
+ if len(results) == 0 or len(results[0]) == 0:
106
+ return None
107
+ limit = request.page_size if not request.page_size is None else 20
108
+ if len(results[0]) < limit:
109
+ return None
110
+
111
+ return self.list(
112
+ filter_location=filter_location,
113
+ filter_project=filter_project,
114
+ filter_tags=filter_tags,
115
+ page_size=page_size,
116
+ page_number=next_page,
117
+ retries=retries,
118
+ )
119
+
90
120
  if utils.match_response(http_res, "200", "application/vnd.api+json"):
91
- return utils.unmarshal_json(http_res.text, models.VirtualNetworks)
121
+ return models.GetVirtualNetworksResponse(
122
+ result=utils.unmarshal_json(http_res.text, models.VirtualNetworks),
123
+ next=next_func,
124
+ )
92
125
  if utils.match_response(http_res, "4XX", "*"):
93
126
  http_res_text = utils.stream_to_text(http_res)
94
127
  raise models.APIError(
@@ -115,11 +148,13 @@ class PrivateNetworks(BaseSDK):
115
148
  filter_location: Optional[str] = None,
116
149
  filter_project: Optional[str] = None,
117
150
  filter_tags: Optional[str] = None,
151
+ page_size: Optional[int] = 20,
152
+ page_number: Optional[int] = 1,
118
153
  retries: OptionalNullable[utils.RetryConfig] = UNSET,
119
154
  server_url: Optional[str] = None,
120
155
  timeout_ms: Optional[int] = None,
121
156
  http_headers: Optional[Mapping[str, str]] = None,
122
- ) -> models.VirtualNetworks:
157
+ ) -> Optional[models.GetVirtualNetworksResponse]:
123
158
  r"""List all Virtual Networks
124
159
 
125
160
  Lists virtual networks assigned to a project
@@ -128,6 +163,8 @@ class PrivateNetworks(BaseSDK):
128
163
  :param filter_location: The location slug to filter by
129
164
  :param filter_project: The project id or slug to filter by
130
165
  :param filter_tags: The tags ids to filter by, separated by comma, e.g. `filter[tags]=tag_1,tag_2`will return ssh keys with `tag_1` AND `tag_2`
166
+ :param page_size: Number of items to return per page
167
+ :param page_number: Page number to return (starts at 1)
131
168
  :param retries: Override the default retry configuration for this method
132
169
  :param server_url: Override the default server URL for this method
133
170
  :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
@@ -147,6 +184,8 @@ class PrivateNetworks(BaseSDK):
147
184
  filter_location=filter_location,
148
185
  filter_project=filter_project,
149
186
  filter_tags=filter_tags,
187
+ page_size=page_size,
188
+ page_number=page_number,
150
189
  )
151
190
 
152
191
  req = self._build_request_async(
@@ -187,8 +226,34 @@ class PrivateNetworks(BaseSDK):
187
226
  retry_config=retry_config,
188
227
  )
189
228
 
229
+ def next_func() -> Optional[models.GetVirtualNetworksResponse]:
230
+ body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]])
231
+ page = request.page_number if not request.page_number is None else 1
232
+ next_page = page + 1
233
+
234
+ if not http_res.text:
235
+ return None
236
+ results = JSONPath("$.data").parse(body)
237
+ if len(results) == 0 or len(results[0]) == 0:
238
+ return None
239
+ limit = request.page_size if not request.page_size is None else 20
240
+ if len(results[0]) < limit:
241
+ return None
242
+
243
+ return self.list(
244
+ filter_location=filter_location,
245
+ filter_project=filter_project,
246
+ filter_tags=filter_tags,
247
+ page_size=page_size,
248
+ page_number=next_page,
249
+ retries=retries,
250
+ )
251
+
190
252
  if utils.match_response(http_res, "200", "application/vnd.api+json"):
191
- return utils.unmarshal_json(http_res.text, models.VirtualNetworks)
253
+ return models.GetVirtualNetworksResponse(
254
+ result=utils.unmarshal_json(http_res.text, models.VirtualNetworks),
255
+ next=next_func,
256
+ )
192
257
  if utils.match_response(http_res, "4XX", "*"):
193
258
  http_res_text = await utils.stream_to_text_async(http_res)
194
259
  raise models.APIError(
@@ -1063,11 +1128,13 @@ class PrivateNetworks(BaseSDK):
1063
1128
  filter_server: Optional[str] = None,
1064
1129
  filter_vid: Optional[str] = None,
1065
1130
  filter_virtual_network_id: Optional[str] = None,
1131
+ page_size: Optional[int] = 20,
1132
+ page_number: Optional[int] = 1,
1066
1133
  retries: OptionalNullable[utils.RetryConfig] = UNSET,
1067
1134
  server_url: Optional[str] = None,
1068
1135
  timeout_ms: Optional[int] = None,
1069
1136
  http_headers: Optional[Mapping[str, str]] = None,
1070
- ) -> models.VirtualNetworkAssignments:
1137
+ ) -> Optional[models.GetVirtualNetworksAssignmentsResponse]:
1071
1138
  r"""List all servers assigned to virtual networks
1072
1139
 
1073
1140
  Returns a list of all servers assigned to virtual networks.
@@ -1076,6 +1143,8 @@ class PrivateNetworks(BaseSDK):
1076
1143
  :param filter_server: The server ID to filter by
1077
1144
  :param filter_vid: The vlan ID to filter by
1078
1145
  :param filter_virtual_network_id: The virtual network ID to filter by
1146
+ :param page_size: Number of items to return per page
1147
+ :param page_number: Page number to return (starts at 1)
1079
1148
  :param retries: Override the default retry configuration for this method
1080
1149
  :param server_url: Override the default server URL for this method
1081
1150
  :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
@@ -1095,6 +1164,8 @@ class PrivateNetworks(BaseSDK):
1095
1164
  filter_server=filter_server,
1096
1165
  filter_vid=filter_vid,
1097
1166
  filter_virtual_network_id=filter_virtual_network_id,
1167
+ page_size=page_size,
1168
+ page_number=page_number,
1098
1169
  )
1099
1170
 
1100
1171
  req = self._build_request(
@@ -1135,8 +1206,36 @@ class PrivateNetworks(BaseSDK):
1135
1206
  retry_config=retry_config,
1136
1207
  )
1137
1208
 
1209
+ def next_func() -> Optional[models.GetVirtualNetworksAssignmentsResponse]:
1210
+ body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]])
1211
+ page = request.page_number if not request.page_number is None else 1
1212
+ next_page = page + 1
1213
+
1214
+ if not http_res.text:
1215
+ return None
1216
+ results = JSONPath("$.data").parse(body)
1217
+ if len(results) == 0 or len(results[0]) == 0:
1218
+ return None
1219
+ limit = request.page_size if not request.page_size is None else 20
1220
+ if len(results[0]) < limit:
1221
+ return None
1222
+
1223
+ return self.list_assignments(
1224
+ filter_server=filter_server,
1225
+ filter_vid=filter_vid,
1226
+ filter_virtual_network_id=filter_virtual_network_id,
1227
+ page_size=page_size,
1228
+ page_number=next_page,
1229
+ retries=retries,
1230
+ )
1231
+
1138
1232
  if utils.match_response(http_res, "200", "application/vnd.api+json"):
1139
- return utils.unmarshal_json(http_res.text, models.VirtualNetworkAssignments)
1233
+ return models.GetVirtualNetworksAssignmentsResponse(
1234
+ result=utils.unmarshal_json(
1235
+ http_res.text, models.VirtualNetworkAssignments
1236
+ ),
1237
+ next=next_func,
1238
+ )
1140
1239
  if utils.match_response(http_res, "4XX", "*"):
1141
1240
  http_res_text = utils.stream_to_text(http_res)
1142
1241
  raise models.APIError(
@@ -1163,11 +1262,13 @@ class PrivateNetworks(BaseSDK):
1163
1262
  filter_server: Optional[str] = None,
1164
1263
  filter_vid: Optional[str] = None,
1165
1264
  filter_virtual_network_id: Optional[str] = None,
1265
+ page_size: Optional[int] = 20,
1266
+ page_number: Optional[int] = 1,
1166
1267
  retries: OptionalNullable[utils.RetryConfig] = UNSET,
1167
1268
  server_url: Optional[str] = None,
1168
1269
  timeout_ms: Optional[int] = None,
1169
1270
  http_headers: Optional[Mapping[str, str]] = None,
1170
- ) -> models.VirtualNetworkAssignments:
1271
+ ) -> Optional[models.GetVirtualNetworksAssignmentsResponse]:
1171
1272
  r"""List all servers assigned to virtual networks
1172
1273
 
1173
1274
  Returns a list of all servers assigned to virtual networks.
@@ -1176,6 +1277,8 @@ class PrivateNetworks(BaseSDK):
1176
1277
  :param filter_server: The server ID to filter by
1177
1278
  :param filter_vid: The vlan ID to filter by
1178
1279
  :param filter_virtual_network_id: The virtual network ID to filter by
1280
+ :param page_size: Number of items to return per page
1281
+ :param page_number: Page number to return (starts at 1)
1179
1282
  :param retries: Override the default retry configuration for this method
1180
1283
  :param server_url: Override the default server URL for this method
1181
1284
  :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
@@ -1195,6 +1298,8 @@ class PrivateNetworks(BaseSDK):
1195
1298
  filter_server=filter_server,
1196
1299
  filter_vid=filter_vid,
1197
1300
  filter_virtual_network_id=filter_virtual_network_id,
1301
+ page_size=page_size,
1302
+ page_number=page_number,
1198
1303
  )
1199
1304
 
1200
1305
  req = self._build_request_async(
@@ -1235,8 +1340,36 @@ class PrivateNetworks(BaseSDK):
1235
1340
  retry_config=retry_config,
1236
1341
  )
1237
1342
 
1343
+ def next_func() -> Optional[models.GetVirtualNetworksAssignmentsResponse]:
1344
+ body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]])
1345
+ page = request.page_number if not request.page_number is None else 1
1346
+ next_page = page + 1
1347
+
1348
+ if not http_res.text:
1349
+ return None
1350
+ results = JSONPath("$.data").parse(body)
1351
+ if len(results) == 0 or len(results[0]) == 0:
1352
+ return None
1353
+ limit = request.page_size if not request.page_size is None else 20
1354
+ if len(results[0]) < limit:
1355
+ return None
1356
+
1357
+ return self.list_assignments(
1358
+ filter_server=filter_server,
1359
+ filter_vid=filter_vid,
1360
+ filter_virtual_network_id=filter_virtual_network_id,
1361
+ page_size=page_size,
1362
+ page_number=next_page,
1363
+ retries=retries,
1364
+ )
1365
+
1238
1366
  if utils.match_response(http_res, "200", "application/vnd.api+json"):
1239
- return utils.unmarshal_json(http_res.text, models.VirtualNetworkAssignments)
1367
+ return models.GetVirtualNetworksAssignmentsResponse(
1368
+ result=utils.unmarshal_json(
1369
+ http_res.text, models.VirtualNetworkAssignments
1370
+ ),
1371
+ next=next_func,
1372
+ )
1240
1373
  if utils.match_response(http_res, "4XX", "*"):
1241
1374
  http_res_text = await utils.stream_to_text_async(http_res)
1242
1375
  raise models.APIError(
@@ -1,11 +1,12 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from .basesdk import BaseSDK
4
+ from jsonpath import JSONPath
4
5
  from latitudesh_python_sdk import models, utils
5
6
  from latitudesh_python_sdk._hooks import HookContext
6
7
  from latitudesh_python_sdk.types import BaseModel, OptionalNullable, UNSET
7
8
  from latitudesh_python_sdk.utils import get_security_from_env
8
- from typing import Any, Mapping, Optional, Union, cast
9
+ from typing import Any, Dict, List, Mapping, Optional, Union, cast
9
10
 
10
11
 
11
12
  class ProjectsSDK(BaseSDK):
@@ -19,11 +20,13 @@ class ProjectsSDK(BaseSDK):
19
20
  filter_environment: Optional[str] = None,
20
21
  filter_tags: Optional[str] = None,
21
22
  extra_fields_projects: Optional[str] = None,
23
+ page_size: Optional[int] = 20,
24
+ page_number: Optional[int] = 1,
22
25
  retries: OptionalNullable[utils.RetryConfig] = UNSET,
23
26
  server_url: Optional[str] = None,
24
27
  timeout_ms: Optional[int] = None,
25
28
  http_headers: Optional[Mapping[str, str]] = None,
26
- ) -> models.Projects:
29
+ ) -> Optional[models.GetProjectsResponse]:
27
30
  r"""List all Projects
28
31
 
29
32
  Returns a list of all projects for the current team
@@ -36,6 +39,8 @@ class ProjectsSDK(BaseSDK):
36
39
  :param filter_environment: The environment to filter by
37
40
  :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`
38
41
  :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.
42
+ :param page_size: Number of items to return per page
43
+ :param page_number: Page number to return (starts at 1)
39
44
  :param retries: Override the default retry configuration for this method
40
45
  :param server_url: Override the default server URL for this method
41
46
  :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
@@ -59,6 +64,8 @@ class ProjectsSDK(BaseSDK):
59
64
  filter_environment=filter_environment,
60
65
  filter_tags=filter_tags,
61
66
  extra_fields_projects=extra_fields_projects,
67
+ page_size=page_size,
68
+ page_number=page_number,
62
69
  )
63
70
 
64
71
  req = self._build_request(
@@ -99,8 +106,38 @@ class ProjectsSDK(BaseSDK):
99
106
  retry_config=retry_config,
100
107
  )
101
108
 
109
+ def next_func() -> Optional[models.GetProjectsResponse]:
110
+ body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]])
111
+ page = request.page_number if not request.page_number is None else 1
112
+ next_page = page + 1
113
+
114
+ if not http_res.text:
115
+ return None
116
+ results = JSONPath("$.data").parse(body)
117
+ if len(results) == 0 or len(results[0]) == 0:
118
+ return None
119
+ limit = request.page_size if not request.page_size is None else 20
120
+ if len(results[0]) < limit:
121
+ return None
122
+
123
+ return self.list(
124
+ filter_name=filter_name,
125
+ filter_slug=filter_slug,
126
+ filter_description=filter_description,
127
+ filter_billing_type=filter_billing_type,
128
+ filter_environment=filter_environment,
129
+ filter_tags=filter_tags,
130
+ extra_fields_projects=extra_fields_projects,
131
+ page_size=page_size,
132
+ page_number=next_page,
133
+ retries=retries,
134
+ )
135
+
102
136
  if utils.match_response(http_res, "200", "application/vnd.api+json"):
103
- return utils.unmarshal_json(http_res.text, models.Projects)
137
+ return models.GetProjectsResponse(
138
+ result=utils.unmarshal_json(http_res.text, models.Projects),
139
+ next=next_func,
140
+ )
104
141
  if utils.match_response(http_res, "4XX", "*"):
105
142
  http_res_text = utils.stream_to_text(http_res)
106
143
  raise models.APIError(
@@ -131,11 +168,13 @@ class ProjectsSDK(BaseSDK):
131
168
  filter_environment: Optional[str] = None,
132
169
  filter_tags: Optional[str] = None,
133
170
  extra_fields_projects: Optional[str] = None,
171
+ page_size: Optional[int] = 20,
172
+ page_number: Optional[int] = 1,
134
173
  retries: OptionalNullable[utils.RetryConfig] = UNSET,
135
174
  server_url: Optional[str] = None,
136
175
  timeout_ms: Optional[int] = None,
137
176
  http_headers: Optional[Mapping[str, str]] = None,
138
- ) -> models.Projects:
177
+ ) -> Optional[models.GetProjectsResponse]:
139
178
  r"""List all Projects
140
179
 
141
180
  Returns a list of all projects for the current team
@@ -148,6 +187,8 @@ class ProjectsSDK(BaseSDK):
148
187
  :param filter_environment: The environment to filter by
149
188
  :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`
150
189
  :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.
190
+ :param page_size: Number of items to return per page
191
+ :param page_number: Page number to return (starts at 1)
151
192
  :param retries: Override the default retry configuration for this method
152
193
  :param server_url: Override the default server URL for this method
153
194
  :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
@@ -171,6 +212,8 @@ class ProjectsSDK(BaseSDK):
171
212
  filter_environment=filter_environment,
172
213
  filter_tags=filter_tags,
173
214
  extra_fields_projects=extra_fields_projects,
215
+ page_size=page_size,
216
+ page_number=page_number,
174
217
  )
175
218
 
176
219
  req = self._build_request_async(
@@ -211,8 +254,38 @@ class ProjectsSDK(BaseSDK):
211
254
  retry_config=retry_config,
212
255
  )
213
256
 
257
+ def next_func() -> Optional[models.GetProjectsResponse]:
258
+ body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]])
259
+ page = request.page_number if not request.page_number is None else 1
260
+ next_page = page + 1
261
+
262
+ if not http_res.text:
263
+ return None
264
+ results = JSONPath("$.data").parse(body)
265
+ if len(results) == 0 or len(results[0]) == 0:
266
+ return None
267
+ limit = request.page_size if not request.page_size is None else 20
268
+ if len(results[0]) < limit:
269
+ return None
270
+
271
+ return self.list(
272
+ filter_name=filter_name,
273
+ filter_slug=filter_slug,
274
+ filter_description=filter_description,
275
+ filter_billing_type=filter_billing_type,
276
+ filter_environment=filter_environment,
277
+ filter_tags=filter_tags,
278
+ extra_fields_projects=extra_fields_projects,
279
+ page_size=page_size,
280
+ page_number=next_page,
281
+ retries=retries,
282
+ )
283
+
214
284
  if utils.match_response(http_res, "200", "application/vnd.api+json"):
215
- return utils.unmarshal_json(http_res.text, models.Projects)
285
+ return models.GetProjectsResponse(
286
+ result=utils.unmarshal_json(http_res.text, models.Projects),
287
+ next=next_func,
288
+ )
216
289
  if utils.match_response(http_res, "4XX", "*"):
217
290
  http_res_text = await utils.stream_to_text_async(http_res)
218
291
  raise models.APIError(
@@ -1,28 +1,33 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from .basesdk import BaseSDK
4
+ from jsonpath import JSONPath
4
5
  from latitudesh_python_sdk import models, utils
5
6
  from latitudesh_python_sdk._hooks import HookContext
6
7
  from latitudesh_python_sdk.types import OptionalNullable, UNSET
7
8
  from latitudesh_python_sdk.utils import get_security_from_env
8
- from typing import Any, Mapping, Optional
9
+ from typing import Any, Dict, List, Mapping, Optional, Union
9
10
 
10
11
 
11
12
  class RegionsSDK(BaseSDK):
12
13
  def list(
13
14
  self,
14
15
  *,
16
+ page_size: Optional[int] = 20,
17
+ page_number: Optional[int] = 1,
15
18
  retries: OptionalNullable[utils.RetryConfig] = UNSET,
16
19
  server_url: Optional[str] = None,
17
20
  timeout_ms: Optional[int] = None,
18
21
  http_headers: Optional[Mapping[str, str]] = None,
19
- ) -> models.Regions:
22
+ ) -> Optional[models.GetRegionsResponse]:
20
23
  r"""List all Regions
21
24
 
22
25
  Lists all [available locations](https://latitude.sh/locations). For server availability by location, please see the [Plans API](/reference/get-plans).
23
26
 
24
27
 
25
28
 
29
+ :param page_size: Number of items to return per page
30
+ :param page_number: Page number to return (starts at 1)
26
31
  :param retries: Override the default retry configuration for this method
27
32
  :param server_url: Override the default server URL for this method
28
33
  :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
@@ -37,12 +42,18 @@ class RegionsSDK(BaseSDK):
37
42
  base_url = server_url
38
43
  else:
39
44
  base_url = self._get_url(base_url, url_variables)
45
+
46
+ request = models.GetRegionsRequest(
47
+ page_size=page_size,
48
+ page_number=page_number,
49
+ )
50
+
40
51
  req = self._build_request(
41
52
  method="GET",
42
53
  path="/regions",
43
54
  base_url=base_url,
44
55
  url_variables=url_variables,
45
- request=None,
56
+ request=request,
46
57
  request_body_required=False,
47
58
  request_has_path_params=False,
48
59
  request_has_query_params=True,
@@ -75,8 +86,31 @@ class RegionsSDK(BaseSDK):
75
86
  retry_config=retry_config,
76
87
  )
77
88
 
89
+ def next_func() -> Optional[models.GetRegionsResponse]:
90
+ body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]])
91
+ page = request.page_number if not request.page_number is None else 1
92
+ next_page = page + 1
93
+
94
+ if not http_res.text:
95
+ return None
96
+ results = JSONPath("$.data").parse(body)
97
+ if len(results) == 0 or len(results[0]) == 0:
98
+ return None
99
+ limit = request.page_size if not request.page_size is None else 20
100
+ if len(results[0]) < limit:
101
+ return None
102
+
103
+ return self.list(
104
+ page_size=page_size,
105
+ page_number=next_page,
106
+ retries=retries,
107
+ )
108
+
78
109
  if utils.match_response(http_res, "200", "application/vnd.api+json"):
79
- return utils.unmarshal_json(http_res.text, models.Regions)
110
+ return models.GetRegionsResponse(
111
+ result=utils.unmarshal_json(http_res.text, models.Regions),
112
+ next=next_func,
113
+ )
80
114
  if utils.match_response(http_res, "4XX", "*"):
81
115
  http_res_text = utils.stream_to_text(http_res)
82
116
  raise models.APIError(
@@ -100,17 +134,21 @@ class RegionsSDK(BaseSDK):
100
134
  async def list_async(
101
135
  self,
102
136
  *,
137
+ page_size: Optional[int] = 20,
138
+ page_number: Optional[int] = 1,
103
139
  retries: OptionalNullable[utils.RetryConfig] = UNSET,
104
140
  server_url: Optional[str] = None,
105
141
  timeout_ms: Optional[int] = None,
106
142
  http_headers: Optional[Mapping[str, str]] = None,
107
- ) -> models.Regions:
143
+ ) -> Optional[models.GetRegionsResponse]:
108
144
  r"""List all Regions
109
145
 
110
146
  Lists all [available locations](https://latitude.sh/locations). For server availability by location, please see the [Plans API](/reference/get-plans).
111
147
 
112
148
 
113
149
 
150
+ :param page_size: Number of items to return per page
151
+ :param page_number: Page number to return (starts at 1)
114
152
  :param retries: Override the default retry configuration for this method
115
153
  :param server_url: Override the default server URL for this method
116
154
  :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
@@ -125,12 +163,18 @@ class RegionsSDK(BaseSDK):
125
163
  base_url = server_url
126
164
  else:
127
165
  base_url = self._get_url(base_url, url_variables)
166
+
167
+ request = models.GetRegionsRequest(
168
+ page_size=page_size,
169
+ page_number=page_number,
170
+ )
171
+
128
172
  req = self._build_request_async(
129
173
  method="GET",
130
174
  path="/regions",
131
175
  base_url=base_url,
132
176
  url_variables=url_variables,
133
- request=None,
177
+ request=request,
134
178
  request_body_required=False,
135
179
  request_has_path_params=False,
136
180
  request_has_query_params=True,
@@ -163,8 +207,31 @@ class RegionsSDK(BaseSDK):
163
207
  retry_config=retry_config,
164
208
  )
165
209
 
210
+ def next_func() -> Optional[models.GetRegionsResponse]:
211
+ body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]])
212
+ page = request.page_number if not request.page_number is None else 1
213
+ next_page = page + 1
214
+
215
+ if not http_res.text:
216
+ return None
217
+ results = JSONPath("$.data").parse(body)
218
+ if len(results) == 0 or len(results[0]) == 0:
219
+ return None
220
+ limit = request.page_size if not request.page_size is None else 20
221
+ if len(results[0]) < limit:
222
+ return None
223
+
224
+ return self.list(
225
+ page_size=page_size,
226
+ page_number=next_page,
227
+ retries=retries,
228
+ )
229
+
166
230
  if utils.match_response(http_res, "200", "application/vnd.api+json"):
167
- return utils.unmarshal_json(http_res.text, models.Regions)
231
+ return models.GetRegionsResponse(
232
+ result=utils.unmarshal_json(http_res.text, models.Regions),
233
+ next=next_func,
234
+ )
168
235
  if utils.match_response(http_res, "4XX", "*"):
169
236
  http_res_text = await utils.stream_to_text_async(http_res)
170
237
  raise models.APIError(