latitudesh-python-sdk 1.0.0__py3-none-any.whl → 2.0.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 (96) hide show
  1. latitudesh_python_sdk/_hooks/types.py +7 -0
  2. latitudesh_python_sdk/_version.py +6 -4
  3. latitudesh_python_sdk/apikeys.py +22 -18
  4. latitudesh_python_sdk/basesdk.py +12 -20
  5. latitudesh_python_sdk/billing.py +2 -0
  6. latitudesh_python_sdk/events_sdk.py +86 -5
  7. latitudesh_python_sdk/firewalls_sdk.py +146 -9
  8. latitudesh_python_sdk/httpclient.py +6 -16
  9. latitudesh_python_sdk/ipaddresses_sdk.py +82 -5
  10. latitudesh_python_sdk/models/__init__.py +2597 -1071
  11. latitudesh_python_sdk/models/assign_server_virtual_networkop.py +2 -2
  12. latitudesh_python_sdk/models/{bandwidth_plan.py → bandwidth_plan_data.py} +9 -9
  13. latitudesh_python_sdk/models/bandwidth_plans.py +14 -3
  14. latitudesh_python_sdk/models/billing_usage.py +3 -0
  15. latitudesh_python_sdk/models/custom_tag.py +15 -0
  16. latitudesh_python_sdk/models/custom_tag_data.py +54 -0
  17. latitudesh_python_sdk/models/custom_tags.py +26 -0
  18. latitudesh_python_sdk/models/delete_ssh_keyop.py +16 -0
  19. latitudesh_python_sdk/models/delete_user_dataop.py +16 -0
  20. latitudesh_python_sdk/models/event_data.py +98 -0
  21. latitudesh_python_sdk/models/events.py +16 -1
  22. latitudesh_python_sdk/models/filesystem_data.py +4 -0
  23. latitudesh_python_sdk/models/firewall.py +15 -0
  24. latitudesh_python_sdk/models/firewall_assignment_data.py +50 -0
  25. latitudesh_python_sdk/models/firewall_assignments.py +29 -0
  26. latitudesh_python_sdk/models/firewall_data.py +71 -0
  27. latitudesh_python_sdk/models/firewall_server.py +4 -1
  28. latitudesh_python_sdk/models/firewalls.py +7 -7
  29. latitudesh_python_sdk/models/get_bandwidth_plansop.py +30 -1
  30. latitudesh_python_sdk/models/get_eventsop.py +29 -1
  31. latitudesh_python_sdk/models/get_firewall_assignmentsop.py +37 -2
  32. latitudesh_python_sdk/models/get_ipsop.py +30 -1
  33. latitudesh_python_sdk/models/get_plans_operating_systemop.py +37 -2
  34. latitudesh_python_sdk/models/get_projectsop.py +30 -1
  35. latitudesh_python_sdk/models/get_regionsop.py +42 -0
  36. latitudesh_python_sdk/models/get_rolesop.py +37 -2
  37. latitudesh_python_sdk/models/get_serversop.py +30 -1
  38. latitudesh_python_sdk/models/get_ssh_keyop.py +30 -0
  39. latitudesh_python_sdk/models/get_ssh_keysop.py +22 -0
  40. latitudesh_python_sdk/models/get_team_membersop.py +42 -0
  41. latitudesh_python_sdk/models/get_traffic_consumptionop.py +8 -4
  42. latitudesh_python_sdk/models/get_user_dataop.py +31 -0
  43. latitudesh_python_sdk/models/get_users_dataop.py +35 -0
  44. latitudesh_python_sdk/models/get_virtual_networks_assignmentsop.py +33 -1
  45. latitudesh_python_sdk/models/get_virtual_networksop.py +30 -1
  46. latitudesh_python_sdk/models/list_firewallsop.py +30 -1
  47. latitudesh_python_sdk/models/operating_system_data.py +65 -0
  48. latitudesh_python_sdk/models/operating_systems.py +15 -0
  49. latitudesh_python_sdk/models/out_of_band_connection.py +4 -4
  50. latitudesh_python_sdk/models/patch_user_dataop.py +69 -0
  51. latitudesh_python_sdk/models/post_ssh_keyop.py +58 -0
  52. latitudesh_python_sdk/models/post_user_dataop.py +45 -0
  53. latitudesh_python_sdk/models/project_include.py +3 -0
  54. latitudesh_python_sdk/models/put_ssh_keyop.py +80 -0
  55. latitudesh_python_sdk/models/role.py +11 -0
  56. latitudesh_python_sdk/models/server_data.py +8 -0
  57. latitudesh_python_sdk/models/{ssh_key.py → ssh_keys.py} +13 -2
  58. latitudesh_python_sdk/models/storage_plan_data.py +47 -0
  59. latitudesh_python_sdk/models/storage_plans.py +14 -3
  60. latitudesh_python_sdk/models/update_serverop.py +60 -10
  61. latitudesh_python_sdk/models/user_data.py +11 -0
  62. latitudesh_python_sdk/models/virtual_network.py +19 -1
  63. latitudesh_python_sdk/models/virtual_network1.py +15 -0
  64. latitudesh_python_sdk/models/virtual_network_assignment.py +41 -0
  65. latitudesh_python_sdk/models/virtual_network_assignment_data.py +68 -0
  66. latitudesh_python_sdk/models/virtual_network_assignments.py +5 -5
  67. latitudesh_python_sdk/models/virtual_network_data.py +88 -0
  68. latitudesh_python_sdk/models/virtual_networks.py +3 -3
  69. latitudesh_python_sdk/operatingsystems_sdk.py +78 -9
  70. latitudesh_python_sdk/plans.py +109 -30
  71. latitudesh_python_sdk/privatenetworks.py +185 -36
  72. latitudesh_python_sdk/projects_sdk.py +113 -32
  73. latitudesh_python_sdk/regions_sdk.py +78 -7
  74. latitudesh_python_sdk/roles.py +78 -7
  75. latitudesh_python_sdk/sdk.py +110 -73
  76. latitudesh_python_sdk/sdkconfiguration.py +0 -7
  77. latitudesh_python_sdk/servers_sdk.py +195 -50
  78. latitudesh_python_sdk/{sshkeys.py → sshkeys_sdk.py} +1030 -5
  79. latitudesh_python_sdk/storage.py +8 -0
  80. latitudesh_python_sdk/tags.py +30 -22
  81. latitudesh_python_sdk/teams_sdk.py +6 -0
  82. latitudesh_python_sdk/teamsmembers.py +80 -7
  83. latitudesh_python_sdk/traffic_sdk.py +12 -8
  84. latitudesh_python_sdk/userdata_sdk.py +1029 -0
  85. latitudesh_python_sdk/userprofile.py +6 -0
  86. latitudesh_python_sdk/utils/__init__.py +131 -45
  87. latitudesh_python_sdk/utils/datetimes.py +23 -0
  88. latitudesh_python_sdk/utils/forms.py +49 -28
  89. latitudesh_python_sdk/utils/serializers.py +32 -3
  90. latitudesh_python_sdk/virtualmachines.py +36 -18
  91. latitudesh_python_sdk/vpnsessions.py +38 -26
  92. {latitudesh_python_sdk-1.0.0.dist-info → latitudesh_python_sdk-2.0.0.dist-info}/METADATA +58 -22
  93. {latitudesh_python_sdk-1.0.0.dist-info → latitudesh_python_sdk-2.0.0.dist-info}/RECORD +95 -73
  94. {latitudesh_python_sdk-1.0.0.dist-info → latitudesh_python_sdk-2.0.0.dist-info}/WHEEL +1 -1
  95. latitudesh_python_sdk/models/storage_plan.py +0 -36
  96. {latitudesh_python_sdk-1.0.0.dist-info → latitudesh_python_sdk-2.0.0.dist-info}/LICENSE +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
- from latitudesh_python_sdk.types import BaseModel, OptionalNullable, UNSET
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, Union, cast
9
+ from typing import Any, Dict, List, Mapping, Optional, Union
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(
@@ -87,6 +94,7 @@ class ProjectsSDK(BaseSDK):
87
94
 
88
95
  http_res = self.do_request(
89
96
  hook_ctx=HookContext(
97
+ config=self.sdk_configuration,
90
98
  base_url=base_url or "",
91
99
  operation_id="get-projects",
92
100
  oauth2_scopes=[],
@@ -99,8 +107,38 @@ class ProjectsSDK(BaseSDK):
99
107
  retry_config=retry_config,
100
108
  )
101
109
 
110
+ def next_func() -> Optional[models.GetProjectsResponse]:
111
+ body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]])
112
+ page = request.page_number if not request.page_number is None else 1
113
+ next_page = page + 1
114
+
115
+ if not http_res.text:
116
+ return None
117
+ results = JSONPath("$.data").parse(body)
118
+ if len(results) == 0 or len(results[0]) == 0:
119
+ return None
120
+ limit = request.page_size if not request.page_size is None else 20
121
+ if len(results[0]) < limit:
122
+ return None
123
+
124
+ return self.list(
125
+ filter_name=filter_name,
126
+ filter_slug=filter_slug,
127
+ filter_description=filter_description,
128
+ filter_billing_type=filter_billing_type,
129
+ filter_environment=filter_environment,
130
+ filter_tags=filter_tags,
131
+ extra_fields_projects=extra_fields_projects,
132
+ page_size=page_size,
133
+ page_number=next_page,
134
+ retries=retries,
135
+ )
136
+
102
137
  if utils.match_response(http_res, "200", "application/vnd.api+json"):
103
- return utils.unmarshal_json(http_res.text, models.Projects)
138
+ return models.GetProjectsResponse(
139
+ result=utils.unmarshal_json(http_res.text, models.Projects),
140
+ next=next_func,
141
+ )
104
142
  if utils.match_response(http_res, "4XX", "*"):
105
143
  http_res_text = utils.stream_to_text(http_res)
106
144
  raise models.APIError(
@@ -131,11 +169,13 @@ class ProjectsSDK(BaseSDK):
131
169
  filter_environment: Optional[str] = None,
132
170
  filter_tags: Optional[str] = None,
133
171
  extra_fields_projects: Optional[str] = None,
172
+ page_size: Optional[int] = 20,
173
+ page_number: Optional[int] = 1,
134
174
  retries: OptionalNullable[utils.RetryConfig] = UNSET,
135
175
  server_url: Optional[str] = None,
136
176
  timeout_ms: Optional[int] = None,
137
177
  http_headers: Optional[Mapping[str, str]] = None,
138
- ) -> models.Projects:
178
+ ) -> Optional[models.GetProjectsResponse]:
139
179
  r"""List all Projects
140
180
 
141
181
  Returns a list of all projects for the current team
@@ -148,6 +188,8 @@ class ProjectsSDK(BaseSDK):
148
188
  :param filter_environment: The environment to filter by
149
189
  :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
190
  :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.
191
+ :param page_size: Number of items to return per page
192
+ :param page_number: Page number to return (starts at 1)
151
193
  :param retries: Override the default retry configuration for this method
152
194
  :param server_url: Override the default server URL for this method
153
195
  :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
@@ -171,6 +213,8 @@ class ProjectsSDK(BaseSDK):
171
213
  filter_environment=filter_environment,
172
214
  filter_tags=filter_tags,
173
215
  extra_fields_projects=extra_fields_projects,
216
+ page_size=page_size,
217
+ page_number=page_number,
174
218
  )
175
219
 
176
220
  req = self._build_request_async(
@@ -199,6 +243,7 @@ class ProjectsSDK(BaseSDK):
199
243
 
200
244
  http_res = await self.do_request_async(
201
245
  hook_ctx=HookContext(
246
+ config=self.sdk_configuration,
202
247
  base_url=base_url or "",
203
248
  operation_id="get-projects",
204
249
  oauth2_scopes=[],
@@ -211,8 +256,38 @@ class ProjectsSDK(BaseSDK):
211
256
  retry_config=retry_config,
212
257
  )
213
258
 
259
+ def next_func() -> Optional[models.GetProjectsResponse]:
260
+ body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]])
261
+ page = request.page_number if not request.page_number is None else 1
262
+ next_page = page + 1
263
+
264
+ if not http_res.text:
265
+ return None
266
+ results = JSONPath("$.data").parse(body)
267
+ if len(results) == 0 or len(results[0]) == 0:
268
+ return None
269
+ limit = request.page_size if not request.page_size is None else 20
270
+ if len(results[0]) < limit:
271
+ return None
272
+
273
+ return self.list(
274
+ filter_name=filter_name,
275
+ filter_slug=filter_slug,
276
+ filter_description=filter_description,
277
+ filter_billing_type=filter_billing_type,
278
+ filter_environment=filter_environment,
279
+ filter_tags=filter_tags,
280
+ extra_fields_projects=extra_fields_projects,
281
+ page_size=page_size,
282
+ page_number=next_page,
283
+ retries=retries,
284
+ )
285
+
214
286
  if utils.match_response(http_res, "200", "application/vnd.api+json"):
215
- return utils.unmarshal_json(http_res.text, models.Projects)
287
+ return models.GetProjectsResponse(
288
+ result=utils.unmarshal_json(http_res.text, models.Projects),
289
+ next=next_func,
290
+ )
216
291
  if utils.match_response(http_res, "4XX", "*"):
217
292
  http_res_text = await utils.stream_to_text_async(http_res)
218
293
  raise models.APIError(
@@ -236,10 +311,12 @@ class ProjectsSDK(BaseSDK):
236
311
  def create(
237
312
  self,
238
313
  *,
239
- request: Union[
240
- models.CreateProjectProjectsRequestBody,
241
- models.CreateProjectProjectsRequestBodyTypedDict,
242
- ] = models.CreateProjectProjectsRequestBody(),
314
+ data: Optional[
315
+ Union[
316
+ models.CreateProjectProjectsData,
317
+ models.CreateProjectProjectsDataTypedDict,
318
+ ]
319
+ ] = None,
243
320
  retries: OptionalNullable[utils.RetryConfig] = UNSET,
244
321
  server_url: Optional[str] = None,
245
322
  timeout_ms: Optional[int] = None,
@@ -247,7 +324,7 @@ class ProjectsSDK(BaseSDK):
247
324
  ) -> models.CreateProjectResponseBody:
248
325
  r"""Create a Project
249
326
 
250
- :param request: The request object to send.
327
+ :param data:
251
328
  :param retries: Override the default retry configuration for this method
252
329
  :param server_url: Override the default server URL for this method
253
330
  :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
@@ -263,9 +340,11 @@ class ProjectsSDK(BaseSDK):
263
340
  else:
264
341
  base_url = self._get_url(base_url, url_variables)
265
342
 
266
- if not isinstance(request, BaseModel):
267
- request = utils.unmarshal(request, models.CreateProjectProjectsRequestBody)
268
- request = cast(models.CreateProjectProjectsRequestBody, request)
343
+ request = models.CreateProjectProjectsRequestBody(
344
+ data=utils.get_pydantic_model(
345
+ data, Optional[models.CreateProjectProjectsData]
346
+ ),
347
+ )
269
348
 
270
349
  req = self._build_request(
271
350
  method="POST",
@@ -281,11 +360,7 @@ class ProjectsSDK(BaseSDK):
281
360
  http_headers=http_headers,
282
361
  security=self.sdk_configuration.security,
283
362
  get_serialized_body=lambda: utils.serialize_request_body(
284
- request,
285
- False,
286
- True,
287
- "json",
288
- Optional[models.CreateProjectProjectsRequestBody],
363
+ request, False, False, "json", models.CreateProjectProjectsRequestBody
289
364
  ),
290
365
  timeout_ms=timeout_ms,
291
366
  )
@@ -300,6 +375,7 @@ class ProjectsSDK(BaseSDK):
300
375
 
301
376
  http_res = self.do_request(
302
377
  hook_ctx=HookContext(
378
+ config=self.sdk_configuration,
303
379
  base_url=base_url or "",
304
380
  operation_id="create-project",
305
381
  oauth2_scopes=[],
@@ -343,10 +419,12 @@ class ProjectsSDK(BaseSDK):
343
419
  async def create_async(
344
420
  self,
345
421
  *,
346
- request: Union[
347
- models.CreateProjectProjectsRequestBody,
348
- models.CreateProjectProjectsRequestBodyTypedDict,
349
- ] = models.CreateProjectProjectsRequestBody(),
422
+ data: Optional[
423
+ Union[
424
+ models.CreateProjectProjectsData,
425
+ models.CreateProjectProjectsDataTypedDict,
426
+ ]
427
+ ] = None,
350
428
  retries: OptionalNullable[utils.RetryConfig] = UNSET,
351
429
  server_url: Optional[str] = None,
352
430
  timeout_ms: Optional[int] = None,
@@ -354,7 +432,7 @@ class ProjectsSDK(BaseSDK):
354
432
  ) -> models.CreateProjectResponseBody:
355
433
  r"""Create a Project
356
434
 
357
- :param request: The request object to send.
435
+ :param data:
358
436
  :param retries: Override the default retry configuration for this method
359
437
  :param server_url: Override the default server URL for this method
360
438
  :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
@@ -370,9 +448,11 @@ class ProjectsSDK(BaseSDK):
370
448
  else:
371
449
  base_url = self._get_url(base_url, url_variables)
372
450
 
373
- if not isinstance(request, BaseModel):
374
- request = utils.unmarshal(request, models.CreateProjectProjectsRequestBody)
375
- request = cast(models.CreateProjectProjectsRequestBody, request)
451
+ request = models.CreateProjectProjectsRequestBody(
452
+ data=utils.get_pydantic_model(
453
+ data, Optional[models.CreateProjectProjectsData]
454
+ ),
455
+ )
376
456
 
377
457
  req = self._build_request_async(
378
458
  method="POST",
@@ -388,11 +468,7 @@ class ProjectsSDK(BaseSDK):
388
468
  http_headers=http_headers,
389
469
  security=self.sdk_configuration.security,
390
470
  get_serialized_body=lambda: utils.serialize_request_body(
391
- request,
392
- False,
393
- True,
394
- "json",
395
- Optional[models.CreateProjectProjectsRequestBody],
471
+ request, False, False, "json", models.CreateProjectProjectsRequestBody
396
472
  ),
397
473
  timeout_ms=timeout_ms,
398
474
  )
@@ -407,6 +483,7 @@ class ProjectsSDK(BaseSDK):
407
483
 
408
484
  http_res = await self.do_request_async(
409
485
  hook_ctx=HookContext(
486
+ config=self.sdk_configuration,
410
487
  base_url=base_url or "",
411
488
  operation_id="create-project",
412
489
  oauth2_scopes=[],
@@ -518,6 +595,7 @@ class ProjectsSDK(BaseSDK):
518
595
 
519
596
  http_res = self.do_request(
520
597
  hook_ctx=HookContext(
598
+ config=self.sdk_configuration,
521
599
  base_url=base_url or "",
522
600
  operation_id="update-project",
523
601
  oauth2_scopes=[],
@@ -629,6 +707,7 @@ class ProjectsSDK(BaseSDK):
629
707
 
630
708
  http_res = await self.do_request_async(
631
709
  hook_ctx=HookContext(
710
+ config=self.sdk_configuration,
632
711
  base_url=base_url or "",
633
712
  operation_id="update-project",
634
713
  oauth2_scopes=[],
@@ -726,6 +805,7 @@ class ProjectsSDK(BaseSDK):
726
805
 
727
806
  http_res = self.do_request(
728
807
  hook_ctx=HookContext(
808
+ config=self.sdk_configuration,
729
809
  base_url=base_url or "",
730
810
  operation_id="delete-project",
731
811
  oauth2_scopes=[],
@@ -823,6 +903,7 @@ class ProjectsSDK(BaseSDK):
823
903
 
824
904
  http_res = await self.do_request_async(
825
905
  hook_ctx=HookContext(
906
+ config=self.sdk_configuration,
826
907
  base_url=base_url or "",
827
908
  operation_id="delete-project",
828
909
  oauth2_scopes=[],
@@ -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,
@@ -63,6 +74,7 @@ class RegionsSDK(BaseSDK):
63
74
 
64
75
  http_res = self.do_request(
65
76
  hook_ctx=HookContext(
77
+ config=self.sdk_configuration,
66
78
  base_url=base_url or "",
67
79
  operation_id="get-regions",
68
80
  oauth2_scopes=[],
@@ -75,8 +87,31 @@ class RegionsSDK(BaseSDK):
75
87
  retry_config=retry_config,
76
88
  )
77
89
 
90
+ def next_func() -> Optional[models.GetRegionsResponse]:
91
+ body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]])
92
+ page = request.page_number if not request.page_number is None else 1
93
+ next_page = page + 1
94
+
95
+ if not http_res.text:
96
+ return None
97
+ results = JSONPath("$.data").parse(body)
98
+ if len(results) == 0 or len(results[0]) == 0:
99
+ return None
100
+ limit = request.page_size if not request.page_size is None else 20
101
+ if len(results[0]) < limit:
102
+ return None
103
+
104
+ return self.list(
105
+ page_size=page_size,
106
+ page_number=next_page,
107
+ retries=retries,
108
+ )
109
+
78
110
  if utils.match_response(http_res, "200", "application/vnd.api+json"):
79
- return utils.unmarshal_json(http_res.text, models.Regions)
111
+ return models.GetRegionsResponse(
112
+ result=utils.unmarshal_json(http_res.text, models.Regions),
113
+ next=next_func,
114
+ )
80
115
  if utils.match_response(http_res, "4XX", "*"):
81
116
  http_res_text = utils.stream_to_text(http_res)
82
117
  raise models.APIError(
@@ -100,17 +135,21 @@ class RegionsSDK(BaseSDK):
100
135
  async def list_async(
101
136
  self,
102
137
  *,
138
+ page_size: Optional[int] = 20,
139
+ page_number: Optional[int] = 1,
103
140
  retries: OptionalNullable[utils.RetryConfig] = UNSET,
104
141
  server_url: Optional[str] = None,
105
142
  timeout_ms: Optional[int] = None,
106
143
  http_headers: Optional[Mapping[str, str]] = None,
107
- ) -> models.Regions:
144
+ ) -> Optional[models.GetRegionsResponse]:
108
145
  r"""List all Regions
109
146
 
110
147
  Lists all [available locations](https://latitude.sh/locations). For server availability by location, please see the [Plans API](/reference/get-plans).
111
148
 
112
149
 
113
150
 
151
+ :param page_size: Number of items to return per page
152
+ :param page_number: Page number to return (starts at 1)
114
153
  :param retries: Override the default retry configuration for this method
115
154
  :param server_url: Override the default server URL for this method
116
155
  :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
@@ -125,12 +164,18 @@ class RegionsSDK(BaseSDK):
125
164
  base_url = server_url
126
165
  else:
127
166
  base_url = self._get_url(base_url, url_variables)
167
+
168
+ request = models.GetRegionsRequest(
169
+ page_size=page_size,
170
+ page_number=page_number,
171
+ )
172
+
128
173
  req = self._build_request_async(
129
174
  method="GET",
130
175
  path="/regions",
131
176
  base_url=base_url,
132
177
  url_variables=url_variables,
133
- request=None,
178
+ request=request,
134
179
  request_body_required=False,
135
180
  request_has_path_params=False,
136
181
  request_has_query_params=True,
@@ -151,6 +196,7 @@ class RegionsSDK(BaseSDK):
151
196
 
152
197
  http_res = await self.do_request_async(
153
198
  hook_ctx=HookContext(
199
+ config=self.sdk_configuration,
154
200
  base_url=base_url or "",
155
201
  operation_id="get-regions",
156
202
  oauth2_scopes=[],
@@ -163,8 +209,31 @@ class RegionsSDK(BaseSDK):
163
209
  retry_config=retry_config,
164
210
  )
165
211
 
212
+ def next_func() -> Optional[models.GetRegionsResponse]:
213
+ body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]])
214
+ page = request.page_number if not request.page_number is None else 1
215
+ next_page = page + 1
216
+
217
+ if not http_res.text:
218
+ return None
219
+ results = JSONPath("$.data").parse(body)
220
+ if len(results) == 0 or len(results[0]) == 0:
221
+ return None
222
+ limit = request.page_size if not request.page_size is None else 20
223
+ if len(results[0]) < limit:
224
+ return None
225
+
226
+ return self.list(
227
+ page_size=page_size,
228
+ page_number=next_page,
229
+ retries=retries,
230
+ )
231
+
166
232
  if utils.match_response(http_res, "200", "application/vnd.api+json"):
167
- return utils.unmarshal_json(http_res.text, models.Regions)
233
+ return models.GetRegionsResponse(
234
+ result=utils.unmarshal_json(http_res.text, models.Regions),
235
+ next=next_func,
236
+ )
168
237
  if utils.match_response(http_res, "4XX", "*"):
169
238
  http_res_text = await utils.stream_to_text_async(http_res)
170
239
  raise models.APIError(
@@ -242,6 +311,7 @@ class RegionsSDK(BaseSDK):
242
311
 
243
312
  http_res = self.do_request(
244
313
  hook_ctx=HookContext(
314
+ config=self.sdk_configuration,
245
315
  base_url=base_url or "",
246
316
  operation_id="get-region",
247
317
  oauth2_scopes=[],
@@ -337,6 +407,7 @@ class RegionsSDK(BaseSDK):
337
407
 
338
408
  http_res = await self.do_request_async(
339
409
  hook_ctx=HookContext(
410
+ config=self.sdk_configuration,
340
411
  base_url=base_url or "",
341
412
  operation_id="get-region",
342
413
  oauth2_scopes=[],