gcore 0.3.0__py3-none-any.whl → 0.5.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 gcore might be problematic. Click here for more details.

Files changed (226) hide show
  1. gcore/__init__.py +2 -1
  2. gcore/_base_client.py +31 -2
  3. gcore/_client.py +18 -0
  4. gcore/_constants.py +2 -2
  5. gcore/_models.py +8 -5
  6. gcore/_version.py +1 -1
  7. gcore/pagination.py +252 -1
  8. gcore/resources/__init__.py +28 -0
  9. gcore/resources/cloud/baremetal/flavors.py +11 -137
  10. gcore/resources/cloud/baremetal/images.py +10 -12
  11. gcore/resources/cloud/baremetal/servers.py +33 -30
  12. gcore/resources/cloud/billing_reservations.py +2 -2
  13. gcore/resources/cloud/file_shares/file_shares.py +7 -8
  14. gcore/resources/cloud/floating_ips.py +7 -12
  15. gcore/resources/cloud/gpu_baremetal_clusters/gpu_baremetal_clusters.py +33 -22
  16. gcore/resources/cloud/gpu_baremetal_clusters/images.py +9 -10
  17. gcore/resources/cloud/gpu_baremetal_clusters/interfaces.py +2 -2
  18. gcore/resources/cloud/gpu_baremetal_clusters/servers.py +8 -4
  19. gcore/resources/cloud/inference/deployments/deployments.py +76 -35
  20. gcore/resources/cloud/inference/deployments/logs.py +7 -7
  21. gcore/resources/cloud/inference/inference.py +5 -5
  22. gcore/resources/cloud/inference/models.py +16 -15
  23. gcore/resources/cloud/inference/registry_credentials.py +18 -18
  24. gcore/resources/cloud/inference/secrets.py +12 -13
  25. gcore/resources/cloud/instances/flavors.py +9 -233
  26. gcore/resources/cloud/instances/images.py +47 -37
  27. gcore/resources/cloud/instances/instances.py +49 -34
  28. gcore/resources/cloud/instances/interfaces.py +2 -2
  29. gcore/resources/cloud/ip_ranges.py +34 -2
  30. gcore/resources/cloud/load_balancers/l7_policies/l7_policies.py +10 -2
  31. gcore/resources/cloud/load_balancers/listeners.py +17 -8
  32. gcore/resources/cloud/load_balancers/load_balancers.py +73 -21
  33. gcore/resources/cloud/load_balancers/metrics.py +2 -2
  34. gcore/resources/cloud/load_balancers/pools/health_monitors.py +2 -2
  35. gcore/resources/cloud/load_balancers/pools/members.py +6 -2
  36. gcore/resources/cloud/networks/networks.py +81 -17
  37. gcore/resources/cloud/networks/routers.py +18 -18
  38. gcore/resources/cloud/networks/subnets.py +51 -11
  39. gcore/resources/cloud/projects.py +38 -24
  40. gcore/resources/cloud/quotas/quotas.py +6 -6
  41. gcore/resources/cloud/quotas/requests.py +8 -8
  42. gcore/resources/cloud/registries/artifacts.py +4 -4
  43. gcore/resources/cloud/registries/registries.py +14 -16
  44. gcore/resources/cloud/registries/repositories.py +4 -4
  45. gcore/resources/cloud/registries/tags.py +2 -2
  46. gcore/resources/cloud/registries/users.py +21 -22
  47. gcore/resources/cloud/reserved_fixed_ips/reserved_fixed_ips.py +20 -20
  48. gcore/resources/cloud/reserved_fixed_ips/vip.py +10 -10
  49. gcore/resources/cloud/secrets.py +14 -224
  50. gcore/resources/cloud/security_groups/rules.py +6 -6
  51. gcore/resources/cloud/security_groups/security_groups.py +70 -31
  52. gcore/resources/cloud/tasks.py +34 -32
  53. gcore/resources/cloud/users/role_assignments.py +12 -14
  54. gcore/resources/cloud/volumes.py +139 -49
  55. gcore/resources/fastedge/__init__.py +103 -0
  56. gcore/resources/fastedge/apps/__init__.py +33 -0
  57. gcore/resources/fastedge/apps/apps.py +932 -0
  58. gcore/resources/fastedge/apps/logs.py +248 -0
  59. gcore/resources/fastedge/binaries.py +286 -0
  60. gcore/resources/fastedge/fastedge.py +327 -0
  61. gcore/resources/fastedge/kv_stores.py +523 -0
  62. gcore/resources/fastedge/secrets.py +687 -0
  63. gcore/resources/fastedge/statistics.py +347 -0
  64. gcore/resources/fastedge/templates.py +652 -0
  65. gcore/resources/iam/__init__.py +47 -0
  66. gcore/resources/iam/api_tokens.py +521 -0
  67. gcore/resources/iam/iam.py +199 -0
  68. gcore/resources/iam/users.py +642 -0
  69. gcore/resources/waap/__init__.py +0 -14
  70. gcore/resources/waap/waap.py +0 -32
  71. gcore/types/cloud/__init__.py +2 -28
  72. gcore/types/cloud/baremetal/__init__.py +0 -1
  73. gcore/types/cloud/baremetal/image_list_params.py +1 -5
  74. gcore/types/cloud/baremetal/server_create_params.py +5 -9
  75. gcore/types/cloud/baremetal/server_list_params.py +1 -5
  76. gcore/types/cloud/ddos_profile.py +9 -3
  77. gcore/types/cloud/file_share_create_params.py +3 -5
  78. gcore/types/cloud/floating_ip_create_params.py +2 -4
  79. gcore/types/cloud/floating_ip_list_params.py +1 -5
  80. gcore/types/cloud/gpu_baremetal_cluster_create_params.py +3 -4
  81. gcore/types/cloud/gpu_baremetal_clusters/image_upload_params.py +2 -4
  82. gcore/types/cloud/health_monitor.py +6 -1
  83. gcore/types/cloud/inference/__init__.py +12 -8
  84. gcore/types/cloud/inference/deployment_create_params.py +224 -7
  85. gcore/types/cloud/inference/deployment_update_params.py +24 -3
  86. gcore/types/cloud/inference/deployments/__init__.py +1 -0
  87. gcore/types/cloud/inference/{inference_log.py → deployments/inference_deployment_log.py} +3 -3
  88. gcore/types/cloud/inference/inference_deployment.py +266 -0
  89. gcore/types/cloud/inference/{inference_apikey_secret.py → inference_deployment_api_key.py} +2 -2
  90. gcore/types/cloud/inference/{mlcatalog_model_card.py → inference_model.py} +2 -2
  91. gcore/types/cloud/inference/{inference_registry_credential.py → inference_registry_credentials.py} +2 -2
  92. gcore/types/cloud/inference/{inference_registry_credential_full.py → inference_registry_credentials_create.py} +2 -2
  93. gcore/types/cloud/inference/inference_secret.py +10 -3
  94. gcore/types/cloud/inference/model_list_params.py +2 -4
  95. gcore/types/cloud/{container_probe.py → inference/probe.py} +9 -9
  96. gcore/types/cloud/{container_probe_config.py → inference/probe_config.py} +5 -5
  97. gcore/types/cloud/{container_probe_exec.py → inference/probe_exec.py} +3 -3
  98. gcore/types/cloud/{container_probe_http_get.py → inference/probe_http_get.py} +3 -3
  99. gcore/types/cloud/{container_probe_tcp_socket.py → inference/probe_tcp_socket.py} +3 -3
  100. gcore/types/cloud/inference/secret_create_params.py +10 -4
  101. gcore/types/cloud/inference/secret_replace_params.py +10 -4
  102. gcore/types/cloud/{region_capacity.py → inference_region_capacity.py} +10 -3
  103. gcore/types/cloud/{region_capacity_list.py → inference_region_capacity_list.py} +4 -4
  104. gcore/types/cloud/instance_create_params.py +8 -9
  105. gcore/types/cloud/instance_list_params.py +1 -5
  106. gcore/types/cloud/instances/__init__.py +0 -2
  107. gcore/types/cloud/instances/image_create_from_volume_params.py +2 -4
  108. gcore/types/cloud/instances/image_list_params.py +1 -5
  109. gcore/types/cloud/instances/image_upload_params.py +2 -4
  110. gcore/types/cloud/load_balancer_create_params.py +8 -4
  111. gcore/types/cloud/load_balancer_list_params.py +1 -5
  112. gcore/types/cloud/load_balancer_update_params.py +24 -0
  113. gcore/types/cloud/load_balancers/pool_create_params.py +6 -1
  114. gcore/types/cloud/load_balancers/pool_update_params.py +6 -1
  115. gcore/types/cloud/load_balancers/pools/member_add_params.py +6 -1
  116. gcore/types/cloud/member.py +6 -1
  117. gcore/types/cloud/network_create_params.py +2 -3
  118. gcore/types/cloud/network_list_params.py +4 -5
  119. gcore/types/cloud/network_update_params.py +28 -2
  120. gcore/types/cloud/networks/router_list_params.py +2 -2
  121. gcore/types/cloud/networks/subnet_create_params.py +2 -3
  122. gcore/types/cloud/networks/subnet_list_params.py +1 -5
  123. gcore/types/cloud/networks/subnet_update_params.py +25 -0
  124. gcore/types/cloud/registries/__init__.py +1 -0
  125. gcore/types/cloud/registries/user_refresh_secret_response.py +31 -0
  126. gcore/types/cloud/reserved_fixed_ip_list_params.py +2 -2
  127. gcore/types/cloud/security_group_list_params.py +3 -7
  128. gcore/types/cloud/security_group_update_params.py +25 -0
  129. gcore/types/cloud/tag_update_map_param.py +2 -2
  130. gcore/types/cloud/task_list_params.py +15 -14
  131. gcore/types/cloud/volume_list_params.py +1 -5
  132. gcore/types/cloud/volume_update_params.py +29 -3
  133. gcore/types/fastedge/__init__.py +48 -0
  134. gcore/types/fastedge/app.py +81 -0
  135. gcore/types/fastedge/app_create_params.py +56 -0
  136. gcore/types/fastedge/app_list_params.py +50 -0
  137. gcore/types/fastedge/app_param.py +56 -0
  138. gcore/types/fastedge/app_replace_params.py +17 -0
  139. gcore/types/fastedge/app_short.py +60 -0
  140. gcore/types/fastedge/app_update_params.py +56 -0
  141. gcore/types/fastedge/apps/__init__.py +6 -0
  142. gcore/types/fastedge/apps/log.py +28 -0
  143. gcore/types/fastedge/apps/log_list_params.py +37 -0
  144. gcore/types/fastedge/binary.py +40 -0
  145. gcore/types/fastedge/binary_list_response.py +12 -0
  146. gcore/types/fastedge/binary_short.py +32 -0
  147. gcore/types/fastedge/call_status.py +24 -0
  148. gcore/types/fastedge/client.py +57 -0
  149. gcore/types/fastedge/duration_stats.py +30 -0
  150. gcore/types/fastedge/kv_store.py +33 -0
  151. gcore/types/fastedge/kv_store_create_params.py +23 -0
  152. gcore/types/fastedge/kv_store_get_response.py +10 -0
  153. gcore/types/fastedge/kv_store_list_params.py +12 -0
  154. gcore/types/fastedge/kv_store_list_response.py +15 -0
  155. gcore/types/fastedge/kv_store_replace_params.py +23 -0
  156. gcore/types/fastedge/kv_store_short.py +19 -0
  157. gcore/types/fastedge/kv_store_stats.py +26 -0
  158. gcore/types/fastedge/secret.py +29 -0
  159. gcore/types/fastedge/secret_create_params.py +27 -0
  160. gcore/types/fastedge/secret_create_response.py +12 -0
  161. gcore/types/fastedge/secret_delete_params.py +12 -0
  162. gcore/types/fastedge/secret_list_params.py +15 -0
  163. gcore/types/{cloud → fastedge}/secret_list_response.py +2 -6
  164. gcore/types/fastedge/secret_replace_params.py +27 -0
  165. gcore/types/fastedge/secret_short.py +21 -0
  166. gcore/types/fastedge/secret_update_params.py +27 -0
  167. gcore/types/fastedge/statistic_get_call_series_params.py +28 -0
  168. gcore/types/fastedge/statistic_get_call_series_response.py +12 -0
  169. gcore/types/fastedge/statistic_get_duration_series_params.py +28 -0
  170. gcore/types/fastedge/statistic_get_duration_series_response.py +12 -0
  171. gcore/types/fastedge/template.py +31 -0
  172. gcore/types/fastedge/template_create_params.py +30 -0
  173. gcore/types/fastedge/template_delete_params.py +12 -0
  174. gcore/types/fastedge/template_list_params.py +25 -0
  175. gcore/types/fastedge/template_parameter.py +22 -0
  176. gcore/types/fastedge/template_parameter_param.py +21 -0
  177. gcore/types/fastedge/template_replace_params.py +30 -0
  178. gcore/types/fastedge/template_short.py +27 -0
  179. gcore/types/iam/__init__.py +17 -0
  180. gcore/types/iam/account_overview.py +488 -0
  181. gcore/types/iam/api_token.py +78 -0
  182. gcore/types/iam/api_token_create.py +15 -0
  183. gcore/types/iam/api_token_create_params.py +42 -0
  184. gcore/types/iam/api_token_list.py +81 -0
  185. gcore/types/iam/api_token_list_params.py +41 -0
  186. gcore/types/iam/user.py +86 -0
  187. gcore/types/iam/user_detailed.py +104 -0
  188. gcore/types/iam/user_invite.py +15 -0
  189. gcore/types/iam/user_invite_params.py +37 -0
  190. gcore/types/iam/user_list_params.py +15 -0
  191. gcore/types/iam/user_update.py +104 -0
  192. gcore/types/iam/user_update_params.py +52 -0
  193. gcore/types/waap/__init__.py +0 -1
  194. gcore/types/waap/domains/custom_rule_create_params.py +7 -3
  195. gcore/types/waap/domains/custom_rule_update_params.py +7 -3
  196. gcore/types/waap/waap_custom_rule.py +7 -3
  197. {gcore-0.3.0.dist-info → gcore-0.5.0.dist-info}/METADATA +44 -5
  198. {gcore-0.3.0.dist-info → gcore-0.5.0.dist-info}/RECORD +200 -151
  199. gcore/resources/waap/clients.py +0 -135
  200. gcore/types/cloud/aws_iam_data.py +0 -13
  201. gcore/types/cloud/aws_iam_data_param.py +0 -15
  202. gcore/types/cloud/baremetal/flavor_list_suitable_params.py +0 -22
  203. gcore/types/cloud/capacity.py +0 -13
  204. gcore/types/cloud/container_probe_config_create_param.py +0 -17
  205. gcore/types/cloud/container_probe_create_param.py +0 -38
  206. gcore/types/cloud/container_probe_exec_create_param.py +0 -13
  207. gcore/types/cloud/container_probe_http_get_create_param.py +0 -25
  208. gcore/types/cloud/container_probe_tcp_socket_create_param.py +0 -12
  209. gcore/types/cloud/container_scale.py +0 -25
  210. gcore/types/cloud/container_scale_trigger_rate.py +0 -13
  211. gcore/types/cloud/container_scale_trigger_sqs.py +0 -33
  212. gcore/types/cloud/container_scale_trigger_threshold.py +0 -10
  213. gcore/types/cloud/container_scale_triggers.py +0 -36
  214. gcore/types/cloud/deploy_status.py +0 -13
  215. gcore/types/cloud/inference/container.py +0 -26
  216. gcore/types/cloud/inference/inference.py +0 -95
  217. gcore/types/cloud/inference/mlcatalog_order_by_choices.py +0 -7
  218. gcore/types/cloud/inference_probes.py +0 -19
  219. gcore/types/cloud/ingress_opts_out.py +0 -16
  220. gcore/types/cloud/ingress_opts_param.py +0 -18
  221. gcore/types/cloud/instances/flavor_list_for_resize_params.py +0 -16
  222. gcore/types/cloud/instances/flavor_list_suitable_params.py +0 -59
  223. gcore/types/cloud/secret_create_params.py +0 -66
  224. gcore/types/waap/client_me_response.py +0 -34
  225. {gcore-0.3.0.dist-info → gcore-0.5.0.dist-info}/WHEEL +0 -0
  226. {gcore-0.3.0.dist-info → gcore-0.5.0.dist-info}/licenses/LICENSE +0 -0
@@ -2,7 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import List, Iterable
5
+ from typing import Dict, List, Iterable, Optional
6
6
 
7
7
  import httpx
8
8
 
@@ -141,7 +141,7 @@ class LoadBalancersResource(SyncAPIResource):
141
141
  name: str | NotGiven = NOT_GIVEN,
142
142
  name_template: str | NotGiven = NOT_GIVEN,
143
143
  preferred_connectivity: LoadBalancerMemberConnectivity | NotGiven = NOT_GIVEN,
144
- tags: TagUpdateMapParam | NotGiven = NOT_GIVEN,
144
+ tags: Dict[str, str] | NotGiven = NOT_GIVEN,
145
145
  vip_ip_family: InterfaceIPFamily | NotGiven = NOT_GIVEN,
146
146
  vip_network_id: str | NotGiven = NOT_GIVEN,
147
147
  vip_port_id: str | NotGiven = NOT_GIVEN,
@@ -240,6 +240,7 @@ class LoadBalancersResource(SyncAPIResource):
240
240
  logging: load_balancer_update_params.Logging | NotGiven = NOT_GIVEN,
241
241
  name: str | NotGiven = NOT_GIVEN,
242
242
  preferred_connectivity: LoadBalancerMemberConnectivity | NotGiven = NOT_GIVEN,
243
+ tags: Optional[TagUpdateMapParam] | NotGiven = NOT_GIVEN,
243
244
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
244
245
  # The extra values given here take precedence over values defined on the client or passed to this method.
245
246
  extra_headers: Headers | None = None,
@@ -248,8 +249,10 @@ class LoadBalancersResource(SyncAPIResource):
248
249
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
249
250
  ) -> LoadBalancer:
250
251
  """
251
- Rename load balancer, activate/deactivate logs or update preferred connectivity
252
- for load balancer
252
+ Rename load balancer, activate/deactivate logging, update preferred connectivity
253
+ type and/or modify load balancer tags. The request will only process the fields
254
+ that are provided in the request body. Any fields that are not included will
255
+ remain unchanged.
253
256
 
254
257
  Args:
255
258
  logging: Logging configuration
@@ -259,6 +262,26 @@ class LoadBalancersResource(SyncAPIResource):
259
262
  preferred_connectivity: Preferred option to establish connectivity between load balancer and its pools
260
263
  members
261
264
 
265
+ tags: Update key-value tags using JSON Merge Patch semantics (RFC 7386). Provide
266
+ key-value pairs to add or update tags. Set tag values to `null` to remove tags.
267
+ Unspecified tags remain unchanged. Read-only tags are always preserved and
268
+ cannot be modified. **Examples:**
269
+
270
+ - **Add/update tags:**
271
+ `{'tags': {'environment': 'production', 'team': 'backend'}}` adds new tags or
272
+ updates existing ones.
273
+ - **Delete tags:** `{'tags': {'`old_tag`': null}}` removes specific tags.
274
+ - **Remove all tags:** `{'tags': null}` removes all user-managed tags (read-only
275
+ tags are preserved).
276
+ - **Partial update:** `{'tags': {'environment': 'staging'}}` only updates
277
+ specified tags.
278
+ - **Mixed operations:**
279
+ `{'tags': {'environment': 'production', '`cost_center`': 'engineering', '`deprecated_tag`': null}}`
280
+ adds/updates 'environment' and '`cost_center`' while removing
281
+ '`deprecated_tag`', preserving other existing tags.
282
+ - **Replace all:** first delete existing tags with null values, then add new
283
+ ones in the same request.
284
+
262
285
  extra_headers: Send extra headers
263
286
 
264
287
  extra_query: Add additional query parameters to the request
@@ -280,6 +303,7 @@ class LoadBalancersResource(SyncAPIResource):
280
303
  "logging": logging,
281
304
  "name": name,
282
305
  "preferred_connectivity": preferred_connectivity,
306
+ "tags": tags,
283
307
  },
284
308
  load_balancer_update_params.LoadBalancerUpdateParams,
285
309
  ),
@@ -334,9 +358,7 @@ class LoadBalancersResource(SyncAPIResource):
334
358
 
335
359
  tag_key: Filter by tag keys.
336
360
 
337
- tag_key_value: Filter by tag key-value pairs. Must be a valid JSON string. curl -G
338
- --data-urlencode "`tag_key_value`={"key": "value"}" --url
339
- "http://localhost:1111/v1/loadbalancers/1/1"
361
+ tag_key_value: Filter by tag key-value pairs. Must be a valid JSON string.
340
362
 
341
363
  with_ddos: Show Advanced DDoS protection profile, if exists
342
364
 
@@ -433,7 +455,7 @@ class LoadBalancersResource(SyncAPIResource):
433
455
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
434
456
  ) -> TaskIDList:
435
457
  """
436
- Failover loadbalancer
458
+ Failover load balancer
437
459
 
438
460
  Args:
439
461
  force: Validate current load balancer status before failover or not.
@@ -531,7 +553,7 @@ class LoadBalancersResource(SyncAPIResource):
531
553
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
532
554
  ) -> TaskIDList:
533
555
  """
534
- Resize loadbalancer
556
+ Resize load balancer
535
557
 
536
558
  Args:
537
559
  flavor: Name of the desired flavor to resize to.
@@ -571,7 +593,7 @@ class LoadBalancersResource(SyncAPIResource):
571
593
  name: str | NotGiven = NOT_GIVEN,
572
594
  name_template: str | NotGiven = NOT_GIVEN,
573
595
  preferred_connectivity: LoadBalancerMemberConnectivity | NotGiven = NOT_GIVEN,
574
- tags: TagUpdateMapParam | NotGiven = NOT_GIVEN,
596
+ tags: Dict[str, str] | NotGiven = NOT_GIVEN,
575
597
  vip_ip_family: InterfaceIPFamily | NotGiven = NOT_GIVEN,
576
598
  vip_network_id: str | NotGiven = NOT_GIVEN,
577
599
  vip_port_id: str | NotGiven = NOT_GIVEN,
@@ -611,7 +633,11 @@ class LoadBalancersResource(SyncAPIResource):
611
633
  extra_headers=extra_headers,
612
634
  polling_interval_seconds=polling_interval_seconds,
613
635
  )
614
- if not task.created_resources or not task.created_resources.loadbalancers or len(task.created_resources.loadbalancers) != 1:
636
+ if (
637
+ not task.created_resources
638
+ or not task.created_resources.loadbalancers
639
+ or len(task.created_resources.loadbalancers) != 1
640
+ ):
615
641
  raise ValueError(f"Expected exactly one resource to be created in a task")
616
642
  return self.get(
617
643
  loadbalancer_id=task.created_resources.loadbalancers[0],
@@ -798,7 +824,7 @@ class AsyncLoadBalancersResource(AsyncAPIResource):
798
824
  name: str | NotGiven = NOT_GIVEN,
799
825
  name_template: str | NotGiven = NOT_GIVEN,
800
826
  preferred_connectivity: LoadBalancerMemberConnectivity | NotGiven = NOT_GIVEN,
801
- tags: TagUpdateMapParam | NotGiven = NOT_GIVEN,
827
+ tags: Dict[str, str] | NotGiven = NOT_GIVEN,
802
828
  vip_ip_family: InterfaceIPFamily | NotGiven = NOT_GIVEN,
803
829
  vip_network_id: str | NotGiven = NOT_GIVEN,
804
830
  vip_port_id: str | NotGiven = NOT_GIVEN,
@@ -897,6 +923,7 @@ class AsyncLoadBalancersResource(AsyncAPIResource):
897
923
  logging: load_balancer_update_params.Logging | NotGiven = NOT_GIVEN,
898
924
  name: str | NotGiven = NOT_GIVEN,
899
925
  preferred_connectivity: LoadBalancerMemberConnectivity | NotGiven = NOT_GIVEN,
926
+ tags: Optional[TagUpdateMapParam] | NotGiven = NOT_GIVEN,
900
927
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
901
928
  # The extra values given here take precedence over values defined on the client or passed to this method.
902
929
  extra_headers: Headers | None = None,
@@ -905,8 +932,10 @@ class AsyncLoadBalancersResource(AsyncAPIResource):
905
932
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
906
933
  ) -> LoadBalancer:
907
934
  """
908
- Rename load balancer, activate/deactivate logs or update preferred connectivity
909
- for load balancer
935
+ Rename load balancer, activate/deactivate logging, update preferred connectivity
936
+ type and/or modify load balancer tags. The request will only process the fields
937
+ that are provided in the request body. Any fields that are not included will
938
+ remain unchanged.
910
939
 
911
940
  Args:
912
941
  logging: Logging configuration
@@ -916,6 +945,26 @@ class AsyncLoadBalancersResource(AsyncAPIResource):
916
945
  preferred_connectivity: Preferred option to establish connectivity between load balancer and its pools
917
946
  members
918
947
 
948
+ tags: Update key-value tags using JSON Merge Patch semantics (RFC 7386). Provide
949
+ key-value pairs to add or update tags. Set tag values to `null` to remove tags.
950
+ Unspecified tags remain unchanged. Read-only tags are always preserved and
951
+ cannot be modified. **Examples:**
952
+
953
+ - **Add/update tags:**
954
+ `{'tags': {'environment': 'production', 'team': 'backend'}}` adds new tags or
955
+ updates existing ones.
956
+ - **Delete tags:** `{'tags': {'`old_tag`': null}}` removes specific tags.
957
+ - **Remove all tags:** `{'tags': null}` removes all user-managed tags (read-only
958
+ tags are preserved).
959
+ - **Partial update:** `{'tags': {'environment': 'staging'}}` only updates
960
+ specified tags.
961
+ - **Mixed operations:**
962
+ `{'tags': {'environment': 'production', '`cost_center`': 'engineering', '`deprecated_tag`': null}}`
963
+ adds/updates 'environment' and '`cost_center`' while removing
964
+ '`deprecated_tag`', preserving other existing tags.
965
+ - **Replace all:** first delete existing tags with null values, then add new
966
+ ones in the same request.
967
+
919
968
  extra_headers: Send extra headers
920
969
 
921
970
  extra_query: Add additional query parameters to the request
@@ -937,6 +986,7 @@ class AsyncLoadBalancersResource(AsyncAPIResource):
937
986
  "logging": logging,
938
987
  "name": name,
939
988
  "preferred_connectivity": preferred_connectivity,
989
+ "tags": tags,
940
990
  },
941
991
  load_balancer_update_params.LoadBalancerUpdateParams,
942
992
  ),
@@ -991,9 +1041,7 @@ class AsyncLoadBalancersResource(AsyncAPIResource):
991
1041
 
992
1042
  tag_key: Filter by tag keys.
993
1043
 
994
- tag_key_value: Filter by tag key-value pairs. Must be a valid JSON string. curl -G
995
- --data-urlencode "`tag_key_value`={"key": "value"}" --url
996
- "http://localhost:1111/v1/loadbalancers/1/1"
1044
+ tag_key_value: Filter by tag key-value pairs. Must be a valid JSON string.
997
1045
 
998
1046
  with_ddos: Show Advanced DDoS protection profile, if exists
999
1047
 
@@ -1090,7 +1138,7 @@ class AsyncLoadBalancersResource(AsyncAPIResource):
1090
1138
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
1091
1139
  ) -> TaskIDList:
1092
1140
  """
1093
- Failover loadbalancer
1141
+ Failover load balancer
1094
1142
 
1095
1143
  Args:
1096
1144
  force: Validate current load balancer status before failover or not.
@@ -1190,7 +1238,7 @@ class AsyncLoadBalancersResource(AsyncAPIResource):
1190
1238
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
1191
1239
  ) -> TaskIDList:
1192
1240
  """
1193
- Resize loadbalancer
1241
+ Resize load balancer
1194
1242
 
1195
1243
  Args:
1196
1244
  flavor: Name of the desired flavor to resize to.
@@ -1230,7 +1278,7 @@ class AsyncLoadBalancersResource(AsyncAPIResource):
1230
1278
  name: str | NotGiven = NOT_GIVEN,
1231
1279
  name_template: str | NotGiven = NOT_GIVEN,
1232
1280
  preferred_connectivity: LoadBalancerMemberConnectivity | NotGiven = NOT_GIVEN,
1233
- tags: TagUpdateMapParam | NotGiven = NOT_GIVEN,
1281
+ tags: Dict[str, str] | NotGiven = NOT_GIVEN,
1234
1282
  vip_ip_family: InterfaceIPFamily | NotGiven = NOT_GIVEN,
1235
1283
  vip_network_id: str | NotGiven = NOT_GIVEN,
1236
1284
  vip_port_id: str | NotGiven = NOT_GIVEN,
@@ -1270,7 +1318,11 @@ class AsyncLoadBalancersResource(AsyncAPIResource):
1270
1318
  extra_headers=extra_headers,
1271
1319
  polling_interval_seconds=polling_interval_seconds,
1272
1320
  )
1273
- if not task.created_resources or not task.created_resources.loadbalancers or len(task.created_resources.loadbalancers) != 1:
1321
+ if (
1322
+ not task.created_resources
1323
+ or not task.created_resources.loadbalancers
1324
+ or len(task.created_resources.loadbalancers) != 1
1325
+ ):
1274
1326
  raise ValueError(f"Expected exactly one resource to be created in a task")
1275
1327
  return await self.get(
1276
1328
  loadbalancer_id=task.created_resources.loadbalancers[0],
@@ -59,7 +59,7 @@ class MetricsResource(SyncAPIResource):
59
59
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
60
60
  ) -> LoadBalancerMetricsList:
61
61
  """
62
- Get loadbalancer metrics, including cpu, memory and network
62
+ Get load balancer metrics, including cpu, memory and network
63
63
 
64
64
  Args:
65
65
  time_interval: Time interval
@@ -132,7 +132,7 @@ class AsyncMetricsResource(AsyncAPIResource):
132
132
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
133
133
  ) -> LoadBalancerMetricsList:
134
134
  """
135
- Get loadbalancer metrics, including cpu, memory and network
135
+ Get load balancer metrics, including cpu, memory and network
136
136
 
137
137
  Args:
138
138
  time_interval: Time interval
@@ -68,7 +68,7 @@ class HealthMonitorsResource(SyncAPIResource):
68
68
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
69
69
  ) -> TaskIDList:
70
70
  """
71
- Create Load Balancer Pool Health Monitor
71
+ Create load balancer pool health monitor
72
72
 
73
73
  Args:
74
74
  project_id: Project ID
@@ -219,7 +219,7 @@ class AsyncHealthMonitorsResource(AsyncAPIResource):
219
219
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
220
220
  ) -> TaskIDList:
221
221
  """
222
- Create Load Balancer Pool Health Monitor
222
+ Create load balancer pool health monitor
223
223
 
224
224
  Args:
225
225
  project_id: Project ID
@@ -78,7 +78,9 @@ class MembersResource(SyncAPIResource):
78
78
 
79
79
  protocol_port: Member IP port
80
80
 
81
- admin_state_up: true if enabled. Defaults to true
81
+ admin_state_up: Administrative state of the resource. When set to true, the resource is enabled
82
+ and operational. When set to false, the resource is disabled and will not
83
+ process traffic. When null is passed, the value is skipped and defaults to true.
82
84
 
83
85
  instance_id: Either `subnet_id` or `instance_id` should be provided
84
86
 
@@ -233,7 +235,9 @@ class AsyncMembersResource(AsyncAPIResource):
233
235
 
234
236
  protocol_port: Member IP port
235
237
 
236
- admin_state_up: true if enabled. Defaults to true
238
+ admin_state_up: Administrative state of the resource. When set to true, the resource is enabled
239
+ and operational. When set to false, the resource is disabled and will not
240
+ process traffic. When null is passed, the value is skipped and defaults to true.
237
241
 
238
242
  instance_id: Either `subnet_id` or `instance_id` should be provided
239
243
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import List
5
+ from typing import Dict, List, Optional
6
6
  from typing_extensions import Literal
7
7
 
8
8
  import httpx
@@ -78,7 +78,7 @@ class NetworksResource(SyncAPIResource):
78
78
  region_id: int | None = None,
79
79
  name: str,
80
80
  create_router: bool | NotGiven = NOT_GIVEN,
81
- tags: TagUpdateMapParam | NotGiven = NOT_GIVEN,
81
+ tags: Dict[str, str] | NotGiven = NOT_GIVEN,
82
82
  type: Literal["vlan", "vxlan"] | NotGiven = NOT_GIVEN,
83
83
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
84
84
  # The extra values given here take precedence over values defined on the client or passed to this method.
@@ -142,7 +142,8 @@ class NetworksResource(SyncAPIResource):
142
142
  *,
143
143
  project_id: int | None = None,
144
144
  region_id: int | None = None,
145
- name: str,
145
+ name: str | NotGiven = NOT_GIVEN,
146
+ tags: Optional[TagUpdateMapParam] | NotGiven = NOT_GIVEN,
146
147
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
147
148
  # The extra values given here take precedence over values defined on the client or passed to this method.
148
149
  extra_headers: Headers | None = None,
@@ -150,8 +151,11 @@ class NetworksResource(SyncAPIResource):
150
151
  extra_body: Body | None = None,
151
152
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
152
153
  ) -> Network:
153
- """
154
- Change network name
154
+ """Rename network and/or update network tags.
155
+
156
+ The request will only process the
157
+ fields that are provided in the request body. Any fields that are not included
158
+ will remain unchanged.
155
159
 
156
160
  Args:
157
161
  project_id: Project ID
@@ -162,6 +166,26 @@ class NetworksResource(SyncAPIResource):
162
166
 
163
167
  name: Name.
164
168
 
169
+ tags: Update key-value tags using JSON Merge Patch semantics (RFC 7386). Provide
170
+ key-value pairs to add or update tags. Set tag values to `null` to remove tags.
171
+ Unspecified tags remain unchanged. Read-only tags are always preserved and
172
+ cannot be modified. **Examples:**
173
+
174
+ - **Add/update tags:**
175
+ `{'tags': {'environment': 'production', 'team': 'backend'}}` adds new tags or
176
+ updates existing ones.
177
+ - **Delete tags:** `{'tags': {'`old_tag`': null}}` removes specific tags.
178
+ - **Remove all tags:** `{'tags': null}` removes all user-managed tags (read-only
179
+ tags are preserved).
180
+ - **Partial update:** `{'tags': {'environment': 'staging'}}` only updates
181
+ specified tags.
182
+ - **Mixed operations:**
183
+ `{'tags': {'environment': 'production', '`cost_center`': 'engineering', '`deprecated_tag`': null}}`
184
+ adds/updates 'environment' and '`cost_center`' while removing
185
+ '`deprecated_tag`', preserving other existing tags.
186
+ - **Replace all:** first delete existing tags with null values, then add new
187
+ ones in the same request.
188
+
165
189
  extra_headers: Send extra headers
166
190
 
167
191
  extra_query: Add additional query parameters to the request
@@ -178,7 +202,13 @@ class NetworksResource(SyncAPIResource):
178
202
  raise ValueError(f"Expected a non-empty value for `network_id` but received {network_id!r}")
179
203
  return self._patch(
180
204
  f"/cloud/v1/networks/{project_id}/{region_id}/{network_id}",
181
- body=maybe_transform({"name": name}, network_update_params.NetworkUpdateParams),
205
+ body=maybe_transform(
206
+ {
207
+ "name": name,
208
+ "tags": tags,
209
+ },
210
+ network_update_params.NetworkUpdateParams,
211
+ ),
182
212
  options=make_request_options(
183
213
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
184
214
  ),
@@ -191,6 +221,7 @@ class NetworksResource(SyncAPIResource):
191
221
  project_id: int | None = None,
192
222
  region_id: int | None = None,
193
223
  limit: int | NotGiven = NOT_GIVEN,
224
+ name: str | NotGiven = NOT_GIVEN,
194
225
  offset: int | NotGiven = NOT_GIVEN,
195
226
  order_by: Literal["created_at.asc", "created_at.desc", "name.asc", "name.desc"] | NotGiven = NOT_GIVEN,
196
227
  tag_key: List[str] | NotGiven = NOT_GIVEN,
@@ -212,6 +243,8 @@ class NetworksResource(SyncAPIResource):
212
243
 
213
244
  limit: Optional. Limit the number of returned items
214
245
 
246
+ name: Filter networks by name
247
+
215
248
  offset: Optional. Offset value is used to exclude the first set of records from the
216
249
  result
217
250
 
@@ -220,9 +253,7 @@ class NetworksResource(SyncAPIResource):
220
253
 
221
254
  tag_key: Optional. Filter by tag keys. ?`tag_key`=key1&`tag_key`=key2
222
255
 
223
- tag_key_value: Optional. Filter by tag key-value pairs. curl -G --data-urlencode
224
- "`tag_key_value`={"key": "value"}" --url
225
- "https://example.com/cloud/v1/resource/1/1"
256
+ tag_key_value: Optional. Filter by tag key-value pairs.
226
257
 
227
258
  extra_headers: Send extra headers
228
259
 
@@ -247,6 +278,7 @@ class NetworksResource(SyncAPIResource):
247
278
  query=maybe_transform(
248
279
  {
249
280
  "limit": limit,
281
+ "name": name,
250
282
  "offset": offset,
251
283
  "order_by": order_by,
252
284
  "tag_key": tag_key,
@@ -384,7 +416,7 @@ class AsyncNetworksResource(AsyncAPIResource):
384
416
  region_id: int | None = None,
385
417
  name: str,
386
418
  create_router: bool | NotGiven = NOT_GIVEN,
387
- tags: TagUpdateMapParam | NotGiven = NOT_GIVEN,
419
+ tags: Dict[str, str] | NotGiven = NOT_GIVEN,
388
420
  type: Literal["vlan", "vxlan"] | NotGiven = NOT_GIVEN,
389
421
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
390
422
  # The extra values given here take precedence over values defined on the client or passed to this method.
@@ -448,7 +480,8 @@ class AsyncNetworksResource(AsyncAPIResource):
448
480
  *,
449
481
  project_id: int | None = None,
450
482
  region_id: int | None = None,
451
- name: str,
483
+ name: str | NotGiven = NOT_GIVEN,
484
+ tags: Optional[TagUpdateMapParam] | NotGiven = NOT_GIVEN,
452
485
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
453
486
  # The extra values given here take precedence over values defined on the client or passed to this method.
454
487
  extra_headers: Headers | None = None,
@@ -456,8 +489,11 @@ class AsyncNetworksResource(AsyncAPIResource):
456
489
  extra_body: Body | None = None,
457
490
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
458
491
  ) -> Network:
459
- """
460
- Change network name
492
+ """Rename network and/or update network tags.
493
+
494
+ The request will only process the
495
+ fields that are provided in the request body. Any fields that are not included
496
+ will remain unchanged.
461
497
 
462
498
  Args:
463
499
  project_id: Project ID
@@ -468,6 +504,26 @@ class AsyncNetworksResource(AsyncAPIResource):
468
504
 
469
505
  name: Name.
470
506
 
507
+ tags: Update key-value tags using JSON Merge Patch semantics (RFC 7386). Provide
508
+ key-value pairs to add or update tags. Set tag values to `null` to remove tags.
509
+ Unspecified tags remain unchanged. Read-only tags are always preserved and
510
+ cannot be modified. **Examples:**
511
+
512
+ - **Add/update tags:**
513
+ `{'tags': {'environment': 'production', 'team': 'backend'}}` adds new tags or
514
+ updates existing ones.
515
+ - **Delete tags:** `{'tags': {'`old_tag`': null}}` removes specific tags.
516
+ - **Remove all tags:** `{'tags': null}` removes all user-managed tags (read-only
517
+ tags are preserved).
518
+ - **Partial update:** `{'tags': {'environment': 'staging'}}` only updates
519
+ specified tags.
520
+ - **Mixed operations:**
521
+ `{'tags': {'environment': 'production', '`cost_center`': 'engineering', '`deprecated_tag`': null}}`
522
+ adds/updates 'environment' and '`cost_center`' while removing
523
+ '`deprecated_tag`', preserving other existing tags.
524
+ - **Replace all:** first delete existing tags with null values, then add new
525
+ ones in the same request.
526
+
471
527
  extra_headers: Send extra headers
472
528
 
473
529
  extra_query: Add additional query parameters to the request
@@ -484,7 +540,13 @@ class AsyncNetworksResource(AsyncAPIResource):
484
540
  raise ValueError(f"Expected a non-empty value for `network_id` but received {network_id!r}")
485
541
  return await self._patch(
486
542
  f"/cloud/v1/networks/{project_id}/{region_id}/{network_id}",
487
- body=await async_maybe_transform({"name": name}, network_update_params.NetworkUpdateParams),
543
+ body=await async_maybe_transform(
544
+ {
545
+ "name": name,
546
+ "tags": tags,
547
+ },
548
+ network_update_params.NetworkUpdateParams,
549
+ ),
488
550
  options=make_request_options(
489
551
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
490
552
  ),
@@ -497,6 +559,7 @@ class AsyncNetworksResource(AsyncAPIResource):
497
559
  project_id: int | None = None,
498
560
  region_id: int | None = None,
499
561
  limit: int | NotGiven = NOT_GIVEN,
562
+ name: str | NotGiven = NOT_GIVEN,
500
563
  offset: int | NotGiven = NOT_GIVEN,
501
564
  order_by: Literal["created_at.asc", "created_at.desc", "name.asc", "name.desc"] | NotGiven = NOT_GIVEN,
502
565
  tag_key: List[str] | NotGiven = NOT_GIVEN,
@@ -518,6 +581,8 @@ class AsyncNetworksResource(AsyncAPIResource):
518
581
 
519
582
  limit: Optional. Limit the number of returned items
520
583
 
584
+ name: Filter networks by name
585
+
521
586
  offset: Optional. Offset value is used to exclude the first set of records from the
522
587
  result
523
588
 
@@ -526,9 +591,7 @@ class AsyncNetworksResource(AsyncAPIResource):
526
591
 
527
592
  tag_key: Optional. Filter by tag keys. ?`tag_key`=key1&`tag_key`=key2
528
593
 
529
- tag_key_value: Optional. Filter by tag key-value pairs. curl -G --data-urlencode
530
- "`tag_key_value`={"key": "value"}" --url
531
- "https://example.com/cloud/v1/resource/1/1"
594
+ tag_key_value: Optional. Filter by tag key-value pairs.
532
595
 
533
596
  extra_headers: Send extra headers
534
597
 
@@ -553,6 +616,7 @@ class AsyncNetworksResource(AsyncAPIResource):
553
616
  query=maybe_transform(
554
617
  {
555
618
  "limit": limit,
619
+ "name": name,
556
620
  "offset": offset,
557
621
  "order_by": order_by,
558
622
  "tag_key": tag_key,
@@ -68,7 +68,7 @@ class RoutersResource(SyncAPIResource):
68
68
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
69
69
  ) -> TaskIDList:
70
70
  """
71
- Create router
71
+ Create a new router with the specified configuration.
72
72
 
73
73
  Args:
74
74
  name: name of router
@@ -125,7 +125,7 @@ class RoutersResource(SyncAPIResource):
125
125
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
126
126
  ) -> Router:
127
127
  """
128
- Update router
128
+ Update the configuration of an existing router.
129
129
 
130
130
  Args:
131
131
  external_gateway_info: New external gateway.
@@ -179,12 +179,12 @@ class RoutersResource(SyncAPIResource):
179
179
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
180
180
  ) -> SyncOffsetPage[Router]:
181
181
  """
182
- List routers
182
+ List all routers in the specified project and region.
183
183
 
184
184
  Args:
185
- limit: Limit the number of returned limit request entities.
185
+ limit: Limit the number of returned routers
186
186
 
187
- offset: Offset value is used to exclude the first set of records from the result.
187
+ offset: Offset value is used to exclude the first set of records from the result
188
188
 
189
189
  extra_headers: Send extra headers
190
190
 
@@ -231,7 +231,7 @@ class RoutersResource(SyncAPIResource):
231
231
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
232
232
  ) -> TaskIDList:
233
233
  """
234
- Delete router
234
+ Delete a specific router and all its associated resources.
235
235
 
236
236
  Args:
237
237
  extra_headers: Send extra headers
@@ -272,7 +272,7 @@ class RoutersResource(SyncAPIResource):
272
272
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
273
273
  ) -> Router:
274
274
  """
275
- Attach subnet to router
275
+ Attach a subnet to an existing router.
276
276
 
277
277
  Args:
278
278
  project_id: Project ID
@@ -330,7 +330,7 @@ class RoutersResource(SyncAPIResource):
330
330
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
331
331
  ) -> Router:
332
332
  """
333
- Detach subnet from router
333
+ Detach a subnet from an existing router.
334
334
 
335
335
  Args:
336
336
  subnet_id: Target IP is identified by it's subnet
@@ -372,7 +372,7 @@ class RoutersResource(SyncAPIResource):
372
372
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
373
373
  ) -> Router:
374
374
  """
375
- Get specific router
375
+ Get detailed information about a specific router.
376
376
 
377
377
  Args:
378
378
  extra_headers: Send extra headers
@@ -435,7 +435,7 @@ class AsyncRoutersResource(AsyncAPIResource):
435
435
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
436
436
  ) -> TaskIDList:
437
437
  """
438
- Create router
438
+ Create a new router with the specified configuration.
439
439
 
440
440
  Args:
441
441
  name: name of router
@@ -492,7 +492,7 @@ class AsyncRoutersResource(AsyncAPIResource):
492
492
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
493
493
  ) -> Router:
494
494
  """
495
- Update router
495
+ Update the configuration of an existing router.
496
496
 
497
497
  Args:
498
498
  external_gateway_info: New external gateway.
@@ -546,12 +546,12 @@ class AsyncRoutersResource(AsyncAPIResource):
546
546
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
547
547
  ) -> AsyncPaginator[Router, AsyncOffsetPage[Router]]:
548
548
  """
549
- List routers
549
+ List all routers in the specified project and region.
550
550
 
551
551
  Args:
552
- limit: Limit the number of returned limit request entities.
552
+ limit: Limit the number of returned routers
553
553
 
554
- offset: Offset value is used to exclude the first set of records from the result.
554
+ offset: Offset value is used to exclude the first set of records from the result
555
555
 
556
556
  extra_headers: Send extra headers
557
557
 
@@ -598,7 +598,7 @@ class AsyncRoutersResource(AsyncAPIResource):
598
598
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
599
599
  ) -> TaskIDList:
600
600
  """
601
- Delete router
601
+ Delete a specific router and all its associated resources.
602
602
 
603
603
  Args:
604
604
  extra_headers: Send extra headers
@@ -639,7 +639,7 @@ class AsyncRoutersResource(AsyncAPIResource):
639
639
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
640
640
  ) -> Router:
641
641
  """
642
- Attach subnet to router
642
+ Attach a subnet to an existing router.
643
643
 
644
644
  Args:
645
645
  project_id: Project ID
@@ -697,7 +697,7 @@ class AsyncRoutersResource(AsyncAPIResource):
697
697
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
698
698
  ) -> Router:
699
699
  """
700
- Detach subnet from router
700
+ Detach a subnet from an existing router.
701
701
 
702
702
  Args:
703
703
  subnet_id: Target IP is identified by it's subnet
@@ -741,7 +741,7 @@ class AsyncRoutersResource(AsyncAPIResource):
741
741
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
742
742
  ) -> Router:
743
743
  """
744
- Get specific router
744
+ Get detailed information about a specific router.
745
745
 
746
746
  Args:
747
747
  extra_headers: Send extra headers