gcore 0.10.0__py3-none-any.whl → 0.11.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 (319) hide show
  1. gcore/_base_client.py +3 -3
  2. gcore/_client.py +18 -0
  3. gcore/_compat.py +48 -48
  4. gcore/_models.py +41 -41
  5. gcore/_types.py +35 -1
  6. gcore/_utils/__init__.py +9 -2
  7. gcore/_utils/_compat.py +45 -0
  8. gcore/_utils/_datetime_parse.py +136 -0
  9. gcore/_utils/_transform.py +11 -1
  10. gcore/_utils/_typing.py +6 -1
  11. gcore/_utils/_utils.py +0 -1
  12. gcore/_version.py +1 -1
  13. gcore/resources/__init__.py +28 -0
  14. gcore/resources/cloud/__init__.py +14 -0
  15. gcore/resources/cloud/audit_logs.py +3 -3
  16. gcore/resources/cloud/baremetal/images.py +3 -4
  17. gcore/resources/cloud/baremetal/servers.py +16 -4
  18. gcore/resources/cloud/cloud.py +32 -0
  19. gcore/resources/cloud/cost_reports.py +24 -16
  20. gcore/resources/cloud/file_shares/access_rules.py +2 -2
  21. gcore/resources/cloud/file_shares/file_shares.py +30 -14
  22. gcore/resources/cloud/floating_ips.py +196 -4
  23. gcore/resources/cloud/gpu_baremetal_clusters/flavors.py +1 -1
  24. gcore/resources/cloud/gpu_baremetal_clusters/gpu_baremetal_clusters.py +166 -190
  25. gcore/resources/cloud/gpu_baremetal_clusters/servers.py +268 -12
  26. gcore/resources/cloud/inference/__init__.py +14 -14
  27. gcore/resources/cloud/inference/applications/__init__.py +47 -0
  28. gcore/resources/cloud/inference/applications/applications.py +134 -0
  29. gcore/resources/cloud/inference/applications/deployments.py +649 -0
  30. gcore/resources/cloud/inference/applications/templates.py +238 -0
  31. gcore/resources/cloud/inference/deployments/deployments.py +41 -22
  32. gcore/resources/cloud/inference/inference.py +32 -32
  33. gcore/resources/cloud/inference/registry_credentials.py +8 -9
  34. gcore/resources/cloud/instances/images.py +4 -4
  35. gcore/resources/cloud/instances/instances.py +254 -4
  36. gcore/resources/cloud/instances/interfaces.py +544 -0
  37. gcore/resources/cloud/k8s/__init__.py +47 -0
  38. gcore/resources/cloud/k8s/clusters/__init__.py +47 -0
  39. gcore/resources/cloud/k8s/clusters/clusters.py +1391 -0
  40. gcore/resources/cloud/k8s/clusters/nodes.py +291 -0
  41. gcore/resources/cloud/k8s/clusters/pools/__init__.py +33 -0
  42. gcore/resources/cloud/k8s/clusters/pools/nodes.py +303 -0
  43. gcore/resources/cloud/k8s/clusters/pools/pools.py +870 -0
  44. gcore/resources/cloud/k8s/flavors.py +209 -0
  45. gcore/resources/cloud/k8s/k8s.py +233 -0
  46. gcore/resources/cloud/load_balancers/l7_policies/l7_policies.py +11 -12
  47. gcore/resources/cloud/load_balancers/l7_policies/rules.py +9 -10
  48. gcore/resources/cloud/load_balancers/listeners.py +18 -18
  49. gcore/resources/cloud/load_balancers/load_balancers.py +4 -4
  50. gcore/resources/cloud/load_balancers/pools/health_monitors.py +18 -6
  51. gcore/resources/cloud/load_balancers/pools/members.py +32 -2
  52. gcore/resources/cloud/load_balancers/pools/pools.py +32 -8
  53. gcore/resources/cloud/networks/networks.py +192 -4
  54. gcore/resources/cloud/networks/subnets.py +140 -8
  55. gcore/resources/cloud/reserved_fixed_ips/vip.py +5 -7
  56. gcore/resources/cloud/security_groups/security_groups.py +6 -6
  57. gcore/resources/cloud/tasks.py +46 -46
  58. gcore/resources/cloud/users/role_assignments.py +5 -4
  59. gcore/resources/cloud/volumes.py +4 -4
  60. gcore/resources/dns/__init__.py +75 -0
  61. gcore/resources/dns/dns.py +374 -0
  62. gcore/resources/dns/locations.py +288 -0
  63. gcore/resources/dns/metrics.py +214 -0
  64. gcore/resources/dns/pickers/__init__.py +33 -0
  65. gcore/resources/dns/pickers/pickers.py +167 -0
  66. gcore/resources/dns/pickers/presets.py +135 -0
  67. gcore/resources/dns/zones/__init__.py +47 -0
  68. gcore/resources/{cloud/inference/models.py → dns/zones/dnssec.py} +80 -122
  69. gcore/resources/dns/zones/rrsets.py +1005 -0
  70. gcore/resources/dns/zones/zones.py +1493 -0
  71. gcore/resources/storage/__init__.py +75 -0
  72. gcore/resources/storage/buckets/__init__.py +61 -0
  73. gcore/resources/storage/buckets/buckets.py +470 -0
  74. gcore/resources/storage/buckets/cors.py +265 -0
  75. gcore/resources/storage/buckets/lifecycle.py +276 -0
  76. gcore/resources/storage/buckets/policy.py +345 -0
  77. gcore/resources/storage/credentials.py +221 -0
  78. gcore/resources/storage/locations.py +190 -0
  79. gcore/resources/storage/statistics.py +364 -0
  80. gcore/resources/storage/storage.py +1042 -0
  81. gcore/resources/streaming/ai_tasks.py +56 -70
  82. gcore/resources/streaming/playlists.py +18 -18
  83. gcore/resources/streaming/quality_sets.py +8 -8
  84. gcore/resources/streaming/statistics.py +4 -122
  85. gcore/resources/streaming/streams/overlays.py +6 -6
  86. gcore/resources/streaming/streams/streams.py +40 -64
  87. gcore/resources/streaming/videos/subtitles.py +32 -30
  88. gcore/resources/streaming/videos/videos.py +78 -72
  89. gcore/resources/waap/domains/advanced_rules.py +2 -2
  90. gcore/resources/waap/domains/api_paths.py +13 -13
  91. gcore/resources/waap/domains/custom_rules.py +2 -2
  92. gcore/resources/waap/domains/domains.py +4 -4
  93. gcore/resources/waap/domains/firewall_rules.py +2 -2
  94. gcore/resources/waap/domains/insight_silences.py +6 -6
  95. gcore/resources/waap/domains/insights.py +7 -7
  96. gcore/resources/waap/domains/statistics.py +47 -47
  97. gcore/types/cloud/__init__.py +2 -4
  98. gcore/types/cloud/audit_log_list_params.py +2 -1
  99. gcore/types/cloud/baremetal/image_list_params.py +3 -2
  100. gcore/types/cloud/baremetal/server_create_params.py +8 -6
  101. gcore/types/cloud/baremetal/server_list_params.py +3 -2
  102. gcore/types/cloud/baremetal/server_rebuild_params.py +2 -0
  103. gcore/types/cloud/cost_report_get_aggregated_monthly_params.py +35 -31
  104. gcore/types/cloud/cost_report_get_aggregated_params.py +26 -25
  105. gcore/types/cloud/cost_report_get_detailed_params.py +26 -25
  106. gcore/types/cloud/ddos_profile.py +13 -7
  107. gcore/types/cloud/ddos_profile_field.py +21 -8
  108. gcore/types/cloud/ddos_profile_option_list.py +7 -6
  109. gcore/types/cloud/ddos_profile_status.py +2 -2
  110. gcore/types/cloud/ddos_profile_template.py +7 -3
  111. gcore/types/cloud/ddos_profile_template_field.py +12 -3
  112. gcore/types/cloud/file_share.py +2 -2
  113. gcore/types/cloud/file_share_create_params.py +12 -6
  114. gcore/types/cloud/floating_ip_list_params.py +3 -2
  115. gcore/types/cloud/gpu_baremetal_cluster.py +101 -74
  116. gcore/types/cloud/gpu_baremetal_cluster_create_params.py +76 -93
  117. gcore/types/cloud/gpu_baremetal_cluster_delete_params.py +17 -10
  118. gcore/types/cloud/gpu_baremetal_cluster_list_params.py +14 -3
  119. gcore/types/cloud/gpu_baremetal_cluster_rebuild_params.py +4 -2
  120. gcore/types/cloud/gpu_baremetal_clusters/__init__.py +6 -0
  121. gcore/types/cloud/gpu_baremetal_clusters/gpu_baremetal_cluster_server.py +74 -0
  122. gcore/types/cloud/{gpu_baremetal_cluster_server.py → gpu_baremetal_clusters/gpu_baremetal_cluster_server_v1.py} +10 -10
  123. gcore/types/cloud/gpu_baremetal_clusters/gpu_baremetal_cluster_server_v1_list.py +16 -0
  124. gcore/types/cloud/{gpu_baremetal_flavor.py → gpu_baremetal_clusters/gpu_baremetal_flavor.py} +1 -1
  125. gcore/types/cloud/{gpu_baremetal_flavor_list.py → gpu_baremetal_clusters/gpu_baremetal_flavor_list.py} +1 -1
  126. gcore/types/cloud/gpu_baremetal_clusters/server_list_params.py +75 -0
  127. gcore/types/cloud/inference/__init__.py +0 -5
  128. gcore/types/cloud/inference/applications/__init__.py +12 -0
  129. gcore/types/cloud/inference/applications/deployment_create_params.py +68 -0
  130. gcore/types/cloud/inference/applications/deployment_patch_params.py +62 -0
  131. gcore/types/cloud/inference/applications/inference_application_deployment.py +111 -0
  132. gcore/types/cloud/inference/applications/inference_application_deployment_list.py +16 -0
  133. gcore/types/cloud/inference/applications/inference_application_template.py +94 -0
  134. gcore/types/cloud/inference/applications/inference_application_template_list.py +16 -0
  135. gcore/types/cloud/inference/deployment_create_params.py +7 -6
  136. gcore/types/cloud/inference/deployment_update_params.py +7 -6
  137. gcore/types/cloud/instance_assign_security_group_params.py +4 -2
  138. gcore/types/cloud/instance_list_params.py +3 -2
  139. gcore/types/cloud/instance_unassign_security_group_params.py +4 -2
  140. gcore/types/cloud/instances/image_list_params.py +3 -2
  141. gcore/types/cloud/k8s/__init__.py +13 -0
  142. gcore/types/cloud/k8s/cluster_create_params.py +299 -0
  143. gcore/types/cloud/k8s/cluster_delete_params.py +16 -0
  144. gcore/types/cloud/k8s/cluster_update_params.py +203 -0
  145. gcore/types/cloud/k8s/cluster_upgrade_params.py +16 -0
  146. gcore/types/cloud/k8s/clusters/__init__.py +10 -0
  147. gcore/types/cloud/k8s/clusters/k8s_cluster_pool.py +66 -0
  148. gcore/types/cloud/k8s/clusters/k8s_cluster_pool_list.py +16 -0
  149. gcore/types/cloud/k8s/clusters/node_list_params.py +16 -0
  150. gcore/types/cloud/k8s/clusters/pool_create_params.py +53 -0
  151. gcore/types/cloud/k8s/clusters/pool_resize_params.py +18 -0
  152. gcore/types/cloud/k8s/clusters/pool_update_params.py +34 -0
  153. gcore/types/cloud/k8s/clusters/pools/__init__.py +5 -0
  154. gcore/types/cloud/k8s/clusters/pools/node_list_params.py +18 -0
  155. gcore/types/cloud/k8s/flavor_list_params.py +19 -0
  156. gcore/types/cloud/k8s/k8s_cluster.py +209 -0
  157. gcore/types/cloud/k8s/k8s_cluster_certificate.py +13 -0
  158. gcore/types/cloud/k8s/k8s_cluster_kubeconfig.py +19 -0
  159. gcore/types/cloud/k8s/k8s_cluster_list.py +16 -0
  160. gcore/types/cloud/k8s_cluster_version.py +10 -0
  161. gcore/types/cloud/{gpu_baremetal_cluster_server_list.py → k8s_cluster_version_list.py} +4 -4
  162. gcore/types/cloud/load_balancer_create_params.py +23 -4
  163. gcore/types/cloud/load_balancer_list_params.py +3 -2
  164. gcore/types/cloud/load_balancers/l7_policies/rule_create_params.py +3 -2
  165. gcore/types/cloud/load_balancers/l7_policies/rule_replace_params.py +3 -2
  166. gcore/types/cloud/load_balancers/l7_policy_create_params.py +3 -2
  167. gcore/types/cloud/load_balancers/l7_policy_replace_params.py +3 -2
  168. gcore/types/cloud/load_balancers/listener_create_params.py +4 -3
  169. gcore/types/cloud/load_balancers/listener_update_params.py +5 -3
  170. gcore/types/cloud/load_balancers/pool_create_params.py +19 -1
  171. gcore/types/cloud/load_balancers/pool_update_params.py +19 -1
  172. gcore/types/cloud/load_balancers/pools/member_add_params.py +19 -1
  173. gcore/types/cloud/member.py +19 -1
  174. gcore/types/cloud/network_list_params.py +3 -2
  175. gcore/types/cloud/networks/subnet_create_params.py +3 -2
  176. gcore/types/cloud/networks/subnet_list_params.py +3 -2
  177. gcore/types/cloud/networks/subnet_update_params.py +3 -2
  178. gcore/types/cloud/project.py +9 -9
  179. gcore/types/cloud/reserved_fixed_ips/vip_replace_connected_ports_params.py +3 -2
  180. gcore/types/cloud/reserved_fixed_ips/vip_update_connected_ports_params.py +3 -2
  181. gcore/types/cloud/security_group_create_params.py +4 -2
  182. gcore/types/cloud/security_group_list_params.py +3 -2
  183. gcore/types/cloud/task_id_list.py +8 -1
  184. gcore/types/cloud/task_list_params.py +23 -23
  185. gcore/types/cloud/usage_report_get_params.py +26 -25
  186. gcore/types/cloud/users/role_assignment.py +2 -1
  187. gcore/types/cloud/users/role_assignment_create_params.py +4 -2
  188. gcore/types/cloud/users/role_assignment_update_params.py +4 -2
  189. gcore/types/cloud/volume_list_params.py +3 -2
  190. gcore/types/dns/__init__.py +31 -0
  191. gcore/types/dns/dns_get_account_overview_response.py +21 -0
  192. gcore/types/dns/dns_label_name.py +13 -0
  193. gcore/types/dns/dns_location_translations.py +11 -0
  194. gcore/types/dns/dns_lookup_params.py +15 -0
  195. gcore/types/dns/dns_lookup_response.py +21 -0
  196. gcore/types/dns/dns_name_server.py +17 -0
  197. gcore/types/dns/location_list_continents_response.py +10 -0
  198. gcore/types/dns/location_list_countries_response.py +10 -0
  199. gcore/types/dns/location_list_regions_response.py +10 -0
  200. gcore/types/dns/location_list_response.py +16 -0
  201. gcore/types/dns/metric_list_params.py +24 -0
  202. gcore/types/dns/metric_list_response.py +7 -0
  203. gcore/types/dns/picker_list_response.py +10 -0
  204. gcore/types/dns/pickers/__init__.py +5 -0
  205. gcore/types/dns/pickers/preset_list_response.py +10 -0
  206. gcore/types/dns/zone_check_delegation_status_response.py +20 -0
  207. gcore/types/dns/zone_create_params.py +59 -0
  208. gcore/types/dns/zone_create_response.py +13 -0
  209. gcore/types/dns/zone_export_response.py +11 -0
  210. gcore/types/dns/zone_get_response.py +106 -0
  211. gcore/types/dns/zone_get_statistics_params.py +43 -0
  212. gcore/types/dns/zone_get_statistics_response.py +19 -0
  213. gcore/types/dns/zone_import_params.py +32 -0
  214. gcore/types/dns/zone_import_response.py +26 -0
  215. gcore/types/dns/zone_list_params.py +57 -0
  216. gcore/types/dns/zone_list_response.py +105 -0
  217. gcore/types/dns/zone_replace_params.py +61 -0
  218. gcore/types/dns/zones/__init__.py +15 -0
  219. gcore/types/dns/zones/dns_failover_log.py +19 -0
  220. gcore/types/dns/zones/dns_output_rrset.py +123 -0
  221. gcore/types/dns/zones/dnssec_get_response.py +38 -0
  222. gcore/types/dns/zones/dnssec_update_params.py +11 -0
  223. gcore/types/dns/zones/dnssec_update_response.py +38 -0
  224. gcore/types/dns/zones/rrset_create_params.py +82 -0
  225. gcore/types/dns/zones/rrset_get_failover_logs_params.py +21 -0
  226. gcore/types/dns/zones/rrset_get_failover_logs_response.py +15 -0
  227. gcore/types/dns/zones/rrset_list_params.py +21 -0
  228. gcore/types/dns/zones/rrset_list_response.py +14 -0
  229. gcore/types/dns/zones/rrset_replace_params.py +82 -0
  230. gcore/types/security/client_profile.py +1 -1
  231. gcore/types/security/profile_create_params.py +2 -2
  232. gcore/types/security/profile_recreate_params.py +2 -2
  233. gcore/types/security/profile_replace_params.py +2 -2
  234. gcore/types/storage/__init__.py +21 -0
  235. gcore/types/storage/bucket.py +15 -0
  236. gcore/types/storage/bucket_list_params.py +15 -0
  237. gcore/types/storage/buckets/__init__.py +9 -0
  238. gcore/types/storage/buckets/bucket_cors.py +18 -0
  239. gcore/types/storage/buckets/bucket_policy.py +7 -0
  240. gcore/types/storage/buckets/cor_create_params.py +17 -0
  241. gcore/types/storage/buckets/lifecycle_create_params.py +18 -0
  242. gcore/types/storage/buckets/policy_get_response.py +7 -0
  243. gcore/types/storage/credential_recreate_params.py +36 -0
  244. gcore/types/storage/location.py +24 -0
  245. gcore/types/storage/location_list_params.py +13 -0
  246. gcore/types/storage/statistic_get_usage_aggregated_params.py +24 -0
  247. gcore/types/storage/statistic_get_usage_series_params.py +38 -0
  248. gcore/types/storage/statistic_get_usage_series_response.py +12 -0
  249. gcore/types/storage/storage.py +101 -0
  250. gcore/types/storage/storage_create_params.py +44 -0
  251. gcore/types/storage/storage_list_params.py +39 -0
  252. gcore/types/storage/storage_restore_params.py +11 -0
  253. gcore/types/storage/storage_update_params.py +18 -0
  254. gcore/types/storage/usage_series.py +201 -0
  255. gcore/types/storage/usage_total.py +54 -0
  256. gcore/types/streaming/__init__.py +0 -4
  257. gcore/types/streaming/ai_contentmoderation_hardnudity.py +1 -1
  258. gcore/types/streaming/ai_contentmoderation_nsfw.py +1 -1
  259. gcore/types/streaming/ai_contentmoderation_softnudity.py +1 -1
  260. gcore/types/streaming/ai_contentmoderation_sport.py +1 -1
  261. gcore/types/streaming/ai_task.py +1 -5
  262. gcore/types/streaming/ai_task_create_params.py +2 -2
  263. gcore/types/streaming/ai_task_get_response.py +0 -46
  264. gcore/types/streaming/clip.py +2 -1
  265. gcore/types/streaming/create_video_param.py +13 -12
  266. gcore/types/streaming/max_stream_series.py +5 -5
  267. gcore/types/streaming/playlist.py +1 -1
  268. gcore/types/streaming/playlist_create_params.py +1 -1
  269. gcore/types/streaming/playlist_update_params.py +1 -1
  270. gcore/types/streaming/playlist_video.py +13 -12
  271. gcore/types/streaming/storage_series.py +5 -5
  272. gcore/types/streaming/stream.py +86 -49
  273. gcore/types/streaming/stream_create_clip_params.py +2 -1
  274. gcore/types/streaming/stream_create_params.py +9 -23
  275. gcore/types/streaming/stream_series.py +5 -5
  276. gcore/types/streaming/stream_update_params.py +9 -23
  277. gcore/types/streaming/video.py +53 -42
  278. gcore/types/streaming/video_update_params.py +13 -12
  279. gcore/types/streaming/vod_statistics_series.py +5 -5
  280. gcore/types/streaming/vod_total_stream_duration_series.py +3 -3
  281. gcore/types/waap/domain_list_params.py +1 -1
  282. gcore/types/waap/domain_update_params.py +1 -1
  283. gcore/types/waap/domains/advanced_rule_create_params.py +7 -4
  284. gcore/types/waap/domains/advanced_rule_update_params.py +6 -3
  285. gcore/types/waap/domains/api_path_create_params.py +4 -3
  286. gcore/types/waap/domains/api_path_list_params.py +3 -1
  287. gcore/types/waap/domains/api_path_update_params.py +5 -4
  288. gcore/types/waap/domains/custom_rule_create_params.py +13 -14
  289. gcore/types/waap/domains/custom_rule_update_params.py +12 -13
  290. gcore/types/waap/domains/firewall_rule_create_params.py +3 -2
  291. gcore/types/waap/domains/firewall_rule_update_params.py +2 -1
  292. gcore/types/waap/domains/insight_list_params.py +4 -2
  293. gcore/types/waap/domains/insight_replace_params.py +1 -1
  294. gcore/types/waap/domains/insight_silence_list_params.py +5 -3
  295. gcore/types/waap/domains/setting_update_params.py +3 -2
  296. gcore/types/waap/domains/statistic_get_ddos_info_params.py +6 -9
  297. gcore/types/waap/domains/statistic_get_events_aggregated_params.py +9 -10
  298. gcore/types/waap/domains/statistic_get_requests_series_params.py +8 -9
  299. gcore/types/waap/domains/statistic_get_traffic_series_params.py +6 -9
  300. gcore/types/waap/domains/waap_advanced_rule.py +3 -2
  301. gcore/types/waap/domains/waap_api_path.py +4 -4
  302. gcore/types/waap/domains/waap_api_scan_result.py +2 -2
  303. gcore/types/waap/domains/waap_custom_rule.py +4 -7
  304. gcore/types/waap/domains/waap_firewall_rule.py +3 -2
  305. gcore/types/waap/domains/waap_insight.py +1 -1
  306. gcore/types/waap/domains/waap_request_details.py +5 -4
  307. gcore/types/waap/waap_ip_ddos_info_model.py +3 -3
  308. gcore/types/waap/waap_rule_set.py +1 -1
  309. {gcore-0.10.0.dist-info → gcore-0.11.0.dist-info}/METADATA +7 -2
  310. {gcore-0.10.0.dist-info → gcore-0.11.0.dist-info}/RECORD +312 -192
  311. gcore/types/cloud/inference/inference_model.py +0 -65
  312. gcore/types/cloud/inference/inference_registry_credentials_create.py +0 -22
  313. gcore/types/cloud/inference/model_list_params.py +0 -21
  314. gcore/types/streaming/ai_contentmoderation_casm.py +0 -39
  315. gcore/types/streaming/ai_contentmoderation_weapon.py +0 -39
  316. gcore/types/streaming/meet_series.py +0 -23
  317. gcore/types/streaming/statistic_get_meet_series_params.py +0 -20
  318. {gcore-0.10.0.dist-info → gcore-0.11.0.dist-info}/WHEEL +0 -0
  319. {gcore-0.10.0.dist-info → gcore-0.11.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,1005 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Dict, Iterable
6
+ from typing_extensions import Literal
7
+
8
+ import httpx
9
+
10
+ from ...._types import NOT_GIVEN, Body, Query, Headers, NotGiven
11
+ from ...._utils import maybe_transform, async_maybe_transform
12
+ from ...._compat import cached_property
13
+ from ...._resource import SyncAPIResource, AsyncAPIResource
14
+ from ...._response import (
15
+ to_raw_response_wrapper,
16
+ to_streamed_response_wrapper,
17
+ async_to_raw_response_wrapper,
18
+ async_to_streamed_response_wrapper,
19
+ )
20
+ from ...._base_client import make_request_options
21
+ from ....types.dns.zones import (
22
+ rrset_list_params,
23
+ rrset_create_params,
24
+ rrset_replace_params,
25
+ rrset_get_failover_logs_params,
26
+ )
27
+ from ....types.dns.zones.dns_output_rrset import DNSOutputRrset
28
+ from ....types.dns.zones.rrset_list_response import RrsetListResponse
29
+ from ....types.dns.zones.rrset_get_failover_logs_response import RrsetGetFailoverLogsResponse
30
+
31
+ __all__ = ["RrsetsResource", "AsyncRrsetsResource"]
32
+
33
+
34
+ class RrsetsResource(SyncAPIResource):
35
+ @cached_property
36
+ def with_raw_response(self) -> RrsetsResourceWithRawResponse:
37
+ """
38
+ This property can be used as a prefix for any HTTP method call to return
39
+ the raw response object instead of the parsed content.
40
+
41
+ For more information, see https://www.github.com/G-Core/gcore-python#accessing-raw-response-data-eg-headers
42
+ """
43
+ return RrsetsResourceWithRawResponse(self)
44
+
45
+ @cached_property
46
+ def with_streaming_response(self) -> RrsetsResourceWithStreamingResponse:
47
+ """
48
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
49
+
50
+ For more information, see https://www.github.com/G-Core/gcore-python#with_streaming_response
51
+ """
52
+ return RrsetsResourceWithStreamingResponse(self)
53
+
54
+ def create(
55
+ self,
56
+ rrset_type: str,
57
+ *,
58
+ zone_name: str,
59
+ rrset_name: str,
60
+ resource_records: Iterable[rrset_create_params.ResourceRecord],
61
+ meta: Dict[str, object] | NotGiven = NOT_GIVEN,
62
+ pickers: Iterable[rrset_create_params.Picker] | NotGiven = NOT_GIVEN,
63
+ ttl: int | NotGiven = NOT_GIVEN,
64
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
65
+ # The extra values given here take precedence over values defined on the client or passed to this method.
66
+ extra_headers: Headers | None = None,
67
+ extra_query: Query | None = None,
68
+ extra_body: Body | None = None,
69
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
70
+ ) -> DNSOutputRrset:
71
+ """
72
+ Add the RRSet to the zone specified by zoneName, RRSets can be configured to be
73
+ either dynamic or static.
74
+
75
+ ### Static RRsets
76
+
77
+ Staticly configured RRSets provide DNS responses as is.
78
+
79
+ ### Dynamic RRsets
80
+
81
+ Dynamic RRSets have picker configuration defined thus it's possible to finely
82
+ customize DNS response. Picking rules are defined on the RRSet level as a list
83
+ of selectors, filters and mutators. Picker considers different resource records
84
+ metadata, requestor IP, and other event-feeds like monitoring. Picker
85
+ configuration is an ordered list defined by "pickers" attribute. Requestor IP is
86
+ determined by EDNS Client Subnet (ECS) if defined, otherwise - by
87
+ client/recursor IP. Selector pickers are used in the specified order until the
88
+ first match, in case of match - all next selectors are bypassed. Filters or
89
+ mutators are applied to the match according to the order they are specified. For
90
+ example, sort records by proximity to user, shuffle based on weights and return
91
+ not more than 3:
92
+ `"pickers": [ { "type": "geodistance" }, { "type": "`weighted_shuffle`" }, { "type": "`first_n`", "limit": 3 } ]`
93
+
94
+ #### geodns filter
95
+
96
+ A resource record is included in the answer if resource record's metadata
97
+ matches requestor info. For each resource record in RRSet, the following
98
+ metadata is considered (in the order specified):
99
+
100
+ - `ip` - list of network addresses in CIDR format, e.g.
101
+ `["192.168.15.150/25", "2003:de:2016::/48"]`;
102
+ - `asn` - list of autonomous system numbers, e.g. `[1234, 5678]`;
103
+ - `regions` - list of region codes, e.g. `["de-bw", "de-by"]`;
104
+ - `countries` - list of country codes, e.g. `["de", "lu", "lt"]`;
105
+ - `continents` - list of continent codes, e.g.
106
+ `["af", "an", "eu", "as", "na", "sa", "oc"]`. If there is a record (or
107
+ multiple) with metadata matched IP, it's used as a response. If not - asn,
108
+ then country and then continent are checked for a match. If there is no match,
109
+ then the behaviour is defined by _strict_ parameter of the filter. Example:
110
+ `"pickers": [ { "type": "geodns", "strict": true } ]`
111
+
112
+ ##### Strict parameter
113
+
114
+ `strict: true` means that if no records percolate through the geodns filter it
115
+ returns no answers. `strict: false` means that if no records percolate through
116
+ the geodns filter, all records are passed over.
117
+
118
+ #### asn selector
119
+
120
+ Resource records which ASN metadata matches ASN of the requestor are picked by
121
+ this selector, and passed to the next non-selector picker, if there is no
122
+ match - next configured picker starts with all records. Example:
123
+ `"pickers": [ {"type": "asn"} ]`
124
+
125
+ #### country selector
126
+
127
+ Resource records which country metadata matches country of the requestor are
128
+ picked by this selector, and passed to the next non-selector picker, if there is
129
+ no match - next configured picker starts with all records. Example:
130
+ `"pickers": [ { "type": "country" } ]`
131
+
132
+ #### continent selector
133
+
134
+ Resource records which continent metadata matches continent of the requestor are
135
+ picked by this selector, and passed to the next non-selector picker, if there is
136
+ no match - next configured picker starts with all records. Example:
137
+ `"pickers": [ { "type": "continent" } ]`
138
+
139
+ #### region selector
140
+
141
+ Resource records which region metadata matches region of the requestor are
142
+ picked by this selector, and passed to the next non-selector picker, if there is
143
+ no match - next configured picker starts with all records. e.g. `fr-nor` for
144
+ France/Normandy. Example: `"pickers": [ { "type": "region" } ]`
145
+
146
+ #### ip selector
147
+
148
+ Resource records which IP metadata matches IP of the requestor are picked by
149
+ this selector, and passed to the next non-selector picker, if there is no
150
+ match - next configured picker starts with all records. Maximum 100 subnets are
151
+ allowed to specify in meta of RR. Example: `"pickers": [ { "type": "ip" } ]`
152
+
153
+ #### default selector
154
+
155
+ When enabled, records marked as default are selected:
156
+ `"meta": {"default": true}`. Example:
157
+ `"pickers": [ { "type": "geodns", "strict": false }, { "type": "default" }, { "type": "`first_n`", "limit": 2 } ]`
158
+
159
+ #### geodistance mutator
160
+
161
+ The resource records are rearranged in ascending order based on the distance (in
162
+ meters) from requestor to the coordinates specified in latlong metadata.
163
+ Distance is calculated using Haversine formula. The "nearest" to the user's IP
164
+ RR goes first. The records without latlong metadata come last. e.g. for Berlin
165
+ `[52.520008, 13.404954]`.; In this configuration the only "nearest" to the
166
+ requestor record to be returned:
167
+ `"pickers": [ { "type": "geodistance" }, { "type": "`first_n`", "limit": 1 } ]`
168
+
169
+ #### `weighted_shuffle` mutator
170
+
171
+ The resource records are rearranged in random order based on the `weight`
172
+ metadata. Default weight (if not specified) is 50. Example:
173
+ `"pickers": [ { "type": "`weighted_shuffle`" } ]`
174
+
175
+ #### `first_n` filter
176
+
177
+ Slices first N (N specified as a limit parameter value) resource records.
178
+ Example: `"pickers": [ { "type": "`first_n`", "limit": 1 } ]` returns only the
179
+ first resource record.
180
+
181
+ ##### limit parameter
182
+
183
+ Can be a positive value for a specific limit. Use zero or leave it blank to
184
+ indicate no limits.
185
+
186
+ Args:
187
+ resource_records: List of resource record from rrset
188
+
189
+ meta: Meta information for rrset
190
+
191
+ pickers: Set of pickers
192
+
193
+ extra_headers: Send extra headers
194
+
195
+ extra_query: Add additional query parameters to the request
196
+
197
+ extra_body: Add additional JSON properties to the request
198
+
199
+ timeout: Override the client-level default timeout for this request, in seconds
200
+ """
201
+ if not zone_name:
202
+ raise ValueError(f"Expected a non-empty value for `zone_name` but received {zone_name!r}")
203
+ if not rrset_name:
204
+ raise ValueError(f"Expected a non-empty value for `rrset_name` but received {rrset_name!r}")
205
+ if not rrset_type:
206
+ raise ValueError(f"Expected a non-empty value for `rrset_type` but received {rrset_type!r}")
207
+ return self._post(
208
+ f"/dns/v2/zones/{zone_name}/{rrset_name}/{rrset_type}",
209
+ body=maybe_transform(
210
+ {
211
+ "resource_records": resource_records,
212
+ "meta": meta,
213
+ "pickers": pickers,
214
+ "ttl": ttl,
215
+ },
216
+ rrset_create_params.RrsetCreateParams,
217
+ ),
218
+ options=make_request_options(
219
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
220
+ ),
221
+ cast_to=DNSOutputRrset,
222
+ )
223
+
224
+ def list(
225
+ self,
226
+ zone_name: str,
227
+ *,
228
+ limit: int | NotGiven = NOT_GIVEN,
229
+ offset: int | NotGiven = NOT_GIVEN,
230
+ order_by: str | NotGiven = NOT_GIVEN,
231
+ order_direction: Literal["asc", "desc"] | NotGiven = NOT_GIVEN,
232
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
233
+ # The extra values given here take precedence over values defined on the client or passed to this method.
234
+ extra_headers: Headers | None = None,
235
+ extra_query: Query | None = None,
236
+ extra_body: Body | None = None,
237
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
238
+ ) -> RrsetListResponse:
239
+ """
240
+ List of RRset.
241
+
242
+ Args:
243
+ limit: Max number of records in response
244
+
245
+ offset: Amount of records to skip before beginning to write in response.
246
+
247
+ order_by: Field name to sort by
248
+
249
+ order_direction: Ascending or descending order
250
+
251
+ extra_headers: Send extra headers
252
+
253
+ extra_query: Add additional query parameters to the request
254
+
255
+ extra_body: Add additional JSON properties to the request
256
+
257
+ timeout: Override the client-level default timeout for this request, in seconds
258
+ """
259
+ if not zone_name:
260
+ raise ValueError(f"Expected a non-empty value for `zone_name` but received {zone_name!r}")
261
+ return self._get(
262
+ f"/dns/v2/zones/{zone_name}/rrsets",
263
+ options=make_request_options(
264
+ extra_headers=extra_headers,
265
+ extra_query=extra_query,
266
+ extra_body=extra_body,
267
+ timeout=timeout,
268
+ query=maybe_transform(
269
+ {
270
+ "limit": limit,
271
+ "offset": offset,
272
+ "order_by": order_by,
273
+ "order_direction": order_direction,
274
+ },
275
+ rrset_list_params.RrsetListParams,
276
+ ),
277
+ ),
278
+ cast_to=RrsetListResponse,
279
+ )
280
+
281
+ def delete(
282
+ self,
283
+ rrset_type: str,
284
+ *,
285
+ zone_name: str,
286
+ rrset_name: str,
287
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
288
+ # The extra values given here take precedence over values defined on the client or passed to this method.
289
+ extra_headers: Headers | None = None,
290
+ extra_query: Query | None = None,
291
+ extra_body: Body | None = None,
292
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
293
+ ) -> object:
294
+ """
295
+ Delete RRset.
296
+
297
+ Args:
298
+ extra_headers: Send extra headers
299
+
300
+ extra_query: Add additional query parameters to the request
301
+
302
+ extra_body: Add additional JSON properties to the request
303
+
304
+ timeout: Override the client-level default timeout for this request, in seconds
305
+ """
306
+ if not zone_name:
307
+ raise ValueError(f"Expected a non-empty value for `zone_name` but received {zone_name!r}")
308
+ if not rrset_name:
309
+ raise ValueError(f"Expected a non-empty value for `rrset_name` but received {rrset_name!r}")
310
+ if not rrset_type:
311
+ raise ValueError(f"Expected a non-empty value for `rrset_type` but received {rrset_type!r}")
312
+ return self._delete(
313
+ f"/dns/v2/zones/{zone_name}/{rrset_name}/{rrset_type}",
314
+ options=make_request_options(
315
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
316
+ ),
317
+ cast_to=object,
318
+ )
319
+
320
+ def get(
321
+ self,
322
+ rrset_type: str,
323
+ *,
324
+ zone_name: str,
325
+ rrset_name: str,
326
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
327
+ # The extra values given here take precedence over values defined on the client or passed to this method.
328
+ extra_headers: Headers | None = None,
329
+ extra_query: Query | None = None,
330
+ extra_body: Body | None = None,
331
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
332
+ ) -> DNSOutputRrset:
333
+ """
334
+ Particular RRset item info
335
+
336
+ Args:
337
+ extra_headers: Send extra headers
338
+
339
+ extra_query: Add additional query parameters to the request
340
+
341
+ extra_body: Add additional JSON properties to the request
342
+
343
+ timeout: Override the client-level default timeout for this request, in seconds
344
+ """
345
+ if not zone_name:
346
+ raise ValueError(f"Expected a non-empty value for `zone_name` but received {zone_name!r}")
347
+ if not rrset_name:
348
+ raise ValueError(f"Expected a non-empty value for `rrset_name` but received {rrset_name!r}")
349
+ if not rrset_type:
350
+ raise ValueError(f"Expected a non-empty value for `rrset_type` but received {rrset_type!r}")
351
+ return self._get(
352
+ f"/dns/v2/zones/{zone_name}/{rrset_name}/{rrset_type}",
353
+ options=make_request_options(
354
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
355
+ ),
356
+ cast_to=DNSOutputRrset,
357
+ )
358
+
359
+ def get_failover_logs(
360
+ self,
361
+ rrset_type: str,
362
+ *,
363
+ zone_name: str,
364
+ rrset_name: str,
365
+ limit: int | NotGiven = NOT_GIVEN,
366
+ offset: int | NotGiven = NOT_GIVEN,
367
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
368
+ # The extra values given here take precedence over values defined on the client or passed to this method.
369
+ extra_headers: Headers | None = None,
370
+ extra_query: Query | None = None,
371
+ extra_body: Body | None = None,
372
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
373
+ ) -> RrsetGetFailoverLogsResponse:
374
+ """
375
+ Get failover history for the RRset
376
+
377
+ Args:
378
+ limit: Max number of records in response
379
+
380
+ offset: Amount of records to skip before beginning to write in response.
381
+
382
+ extra_headers: Send extra headers
383
+
384
+ extra_query: Add additional query parameters to the request
385
+
386
+ extra_body: Add additional JSON properties to the request
387
+
388
+ timeout: Override the client-level default timeout for this request, in seconds
389
+ """
390
+ if not zone_name:
391
+ raise ValueError(f"Expected a non-empty value for `zone_name` but received {zone_name!r}")
392
+ if not rrset_name:
393
+ raise ValueError(f"Expected a non-empty value for `rrset_name` but received {rrset_name!r}")
394
+ if not rrset_type:
395
+ raise ValueError(f"Expected a non-empty value for `rrset_type` but received {rrset_type!r}")
396
+ return self._get(
397
+ f"/dns/v2/zones/{zone_name}/{rrset_name}/{rrset_type}/failover/log",
398
+ options=make_request_options(
399
+ extra_headers=extra_headers,
400
+ extra_query=extra_query,
401
+ extra_body=extra_body,
402
+ timeout=timeout,
403
+ query=maybe_transform(
404
+ {
405
+ "limit": limit,
406
+ "offset": offset,
407
+ },
408
+ rrset_get_failover_logs_params.RrsetGetFailoverLogsParams,
409
+ ),
410
+ ),
411
+ cast_to=RrsetGetFailoverLogsResponse,
412
+ )
413
+
414
+ def replace(
415
+ self,
416
+ rrset_type: str,
417
+ *,
418
+ zone_name: str,
419
+ rrset_name: str,
420
+ resource_records: Iterable[rrset_replace_params.ResourceRecord],
421
+ meta: Dict[str, object] | NotGiven = NOT_GIVEN,
422
+ pickers: Iterable[rrset_replace_params.Picker] | NotGiven = NOT_GIVEN,
423
+ ttl: int | NotGiven = NOT_GIVEN,
424
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
425
+ # The extra values given here take precedence over values defined on the client or passed to this method.
426
+ extra_headers: Headers | None = None,
427
+ extra_query: Query | None = None,
428
+ extra_body: Body | None = None,
429
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
430
+ ) -> DNSOutputRrset:
431
+ """
432
+ Create/update RRset.
433
+
434
+ Args:
435
+ resource_records: List of resource record from rrset
436
+
437
+ meta: Meta information for rrset
438
+
439
+ pickers: Set of pickers
440
+
441
+ extra_headers: Send extra headers
442
+
443
+ extra_query: Add additional query parameters to the request
444
+
445
+ extra_body: Add additional JSON properties to the request
446
+
447
+ timeout: Override the client-level default timeout for this request, in seconds
448
+ """
449
+ if not zone_name:
450
+ raise ValueError(f"Expected a non-empty value for `zone_name` but received {zone_name!r}")
451
+ if not rrset_name:
452
+ raise ValueError(f"Expected a non-empty value for `rrset_name` but received {rrset_name!r}")
453
+ if not rrset_type:
454
+ raise ValueError(f"Expected a non-empty value for `rrset_type` but received {rrset_type!r}")
455
+ return self._put(
456
+ f"/dns/v2/zones/{zone_name}/{rrset_name}/{rrset_type}",
457
+ body=maybe_transform(
458
+ {
459
+ "resource_records": resource_records,
460
+ "meta": meta,
461
+ "pickers": pickers,
462
+ "ttl": ttl,
463
+ },
464
+ rrset_replace_params.RrsetReplaceParams,
465
+ ),
466
+ options=make_request_options(
467
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
468
+ ),
469
+ cast_to=DNSOutputRrset,
470
+ )
471
+
472
+
473
+ class AsyncRrsetsResource(AsyncAPIResource):
474
+ @cached_property
475
+ def with_raw_response(self) -> AsyncRrsetsResourceWithRawResponse:
476
+ """
477
+ This property can be used as a prefix for any HTTP method call to return
478
+ the raw response object instead of the parsed content.
479
+
480
+ For more information, see https://www.github.com/G-Core/gcore-python#accessing-raw-response-data-eg-headers
481
+ """
482
+ return AsyncRrsetsResourceWithRawResponse(self)
483
+
484
+ @cached_property
485
+ def with_streaming_response(self) -> AsyncRrsetsResourceWithStreamingResponse:
486
+ """
487
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
488
+
489
+ For more information, see https://www.github.com/G-Core/gcore-python#with_streaming_response
490
+ """
491
+ return AsyncRrsetsResourceWithStreamingResponse(self)
492
+
493
+ async def create(
494
+ self,
495
+ rrset_type: str,
496
+ *,
497
+ zone_name: str,
498
+ rrset_name: str,
499
+ resource_records: Iterable[rrset_create_params.ResourceRecord],
500
+ meta: Dict[str, object] | NotGiven = NOT_GIVEN,
501
+ pickers: Iterable[rrset_create_params.Picker] | NotGiven = NOT_GIVEN,
502
+ ttl: int | NotGiven = NOT_GIVEN,
503
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
504
+ # The extra values given here take precedence over values defined on the client or passed to this method.
505
+ extra_headers: Headers | None = None,
506
+ extra_query: Query | None = None,
507
+ extra_body: Body | None = None,
508
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
509
+ ) -> DNSOutputRrset:
510
+ """
511
+ Add the RRSet to the zone specified by zoneName, RRSets can be configured to be
512
+ either dynamic or static.
513
+
514
+ ### Static RRsets
515
+
516
+ Staticly configured RRSets provide DNS responses as is.
517
+
518
+ ### Dynamic RRsets
519
+
520
+ Dynamic RRSets have picker configuration defined thus it's possible to finely
521
+ customize DNS response. Picking rules are defined on the RRSet level as a list
522
+ of selectors, filters and mutators. Picker considers different resource records
523
+ metadata, requestor IP, and other event-feeds like monitoring. Picker
524
+ configuration is an ordered list defined by "pickers" attribute. Requestor IP is
525
+ determined by EDNS Client Subnet (ECS) if defined, otherwise - by
526
+ client/recursor IP. Selector pickers are used in the specified order until the
527
+ first match, in case of match - all next selectors are bypassed. Filters or
528
+ mutators are applied to the match according to the order they are specified. For
529
+ example, sort records by proximity to user, shuffle based on weights and return
530
+ not more than 3:
531
+ `"pickers": [ { "type": "geodistance" }, { "type": "`weighted_shuffle`" }, { "type": "`first_n`", "limit": 3 } ]`
532
+
533
+ #### geodns filter
534
+
535
+ A resource record is included in the answer if resource record's metadata
536
+ matches requestor info. For each resource record in RRSet, the following
537
+ metadata is considered (in the order specified):
538
+
539
+ - `ip` - list of network addresses in CIDR format, e.g.
540
+ `["192.168.15.150/25", "2003:de:2016::/48"]`;
541
+ - `asn` - list of autonomous system numbers, e.g. `[1234, 5678]`;
542
+ - `regions` - list of region codes, e.g. `["de-bw", "de-by"]`;
543
+ - `countries` - list of country codes, e.g. `["de", "lu", "lt"]`;
544
+ - `continents` - list of continent codes, e.g.
545
+ `["af", "an", "eu", "as", "na", "sa", "oc"]`. If there is a record (or
546
+ multiple) with metadata matched IP, it's used as a response. If not - asn,
547
+ then country and then continent are checked for a match. If there is no match,
548
+ then the behaviour is defined by _strict_ parameter of the filter. Example:
549
+ `"pickers": [ { "type": "geodns", "strict": true } ]`
550
+
551
+ ##### Strict parameter
552
+
553
+ `strict: true` means that if no records percolate through the geodns filter it
554
+ returns no answers. `strict: false` means that if no records percolate through
555
+ the geodns filter, all records are passed over.
556
+
557
+ #### asn selector
558
+
559
+ Resource records which ASN metadata matches ASN of the requestor are picked by
560
+ this selector, and passed to the next non-selector picker, if there is no
561
+ match - next configured picker starts with all records. Example:
562
+ `"pickers": [ {"type": "asn"} ]`
563
+
564
+ #### country selector
565
+
566
+ Resource records which country metadata matches country of the requestor are
567
+ picked by this selector, and passed to the next non-selector picker, if there is
568
+ no match - next configured picker starts with all records. Example:
569
+ `"pickers": [ { "type": "country" } ]`
570
+
571
+ #### continent selector
572
+
573
+ Resource records which continent metadata matches continent of the requestor are
574
+ picked by this selector, and passed to the next non-selector picker, if there is
575
+ no match - next configured picker starts with all records. Example:
576
+ `"pickers": [ { "type": "continent" } ]`
577
+
578
+ #### region selector
579
+
580
+ Resource records which region metadata matches region of the requestor are
581
+ picked by this selector, and passed to the next non-selector picker, if there is
582
+ no match - next configured picker starts with all records. e.g. `fr-nor` for
583
+ France/Normandy. Example: `"pickers": [ { "type": "region" } ]`
584
+
585
+ #### ip selector
586
+
587
+ Resource records which IP metadata matches IP of the requestor are picked by
588
+ this selector, and passed to the next non-selector picker, if there is no
589
+ match - next configured picker starts with all records. Maximum 100 subnets are
590
+ allowed to specify in meta of RR. Example: `"pickers": [ { "type": "ip" } ]`
591
+
592
+ #### default selector
593
+
594
+ When enabled, records marked as default are selected:
595
+ `"meta": {"default": true}`. Example:
596
+ `"pickers": [ { "type": "geodns", "strict": false }, { "type": "default" }, { "type": "`first_n`", "limit": 2 } ]`
597
+
598
+ #### geodistance mutator
599
+
600
+ The resource records are rearranged in ascending order based on the distance (in
601
+ meters) from requestor to the coordinates specified in latlong metadata.
602
+ Distance is calculated using Haversine formula. The "nearest" to the user's IP
603
+ RR goes first. The records without latlong metadata come last. e.g. for Berlin
604
+ `[52.520008, 13.404954]`.; In this configuration the only "nearest" to the
605
+ requestor record to be returned:
606
+ `"pickers": [ { "type": "geodistance" }, { "type": "`first_n`", "limit": 1 } ]`
607
+
608
+ #### `weighted_shuffle` mutator
609
+
610
+ The resource records are rearranged in random order based on the `weight`
611
+ metadata. Default weight (if not specified) is 50. Example:
612
+ `"pickers": [ { "type": "`weighted_shuffle`" } ]`
613
+
614
+ #### `first_n` filter
615
+
616
+ Slices first N (N specified as a limit parameter value) resource records.
617
+ Example: `"pickers": [ { "type": "`first_n`", "limit": 1 } ]` returns only the
618
+ first resource record.
619
+
620
+ ##### limit parameter
621
+
622
+ Can be a positive value for a specific limit. Use zero or leave it blank to
623
+ indicate no limits.
624
+
625
+ Args:
626
+ resource_records: List of resource record from rrset
627
+
628
+ meta: Meta information for rrset
629
+
630
+ pickers: Set of pickers
631
+
632
+ extra_headers: Send extra headers
633
+
634
+ extra_query: Add additional query parameters to the request
635
+
636
+ extra_body: Add additional JSON properties to the request
637
+
638
+ timeout: Override the client-level default timeout for this request, in seconds
639
+ """
640
+ if not zone_name:
641
+ raise ValueError(f"Expected a non-empty value for `zone_name` but received {zone_name!r}")
642
+ if not rrset_name:
643
+ raise ValueError(f"Expected a non-empty value for `rrset_name` but received {rrset_name!r}")
644
+ if not rrset_type:
645
+ raise ValueError(f"Expected a non-empty value for `rrset_type` but received {rrset_type!r}")
646
+ return await self._post(
647
+ f"/dns/v2/zones/{zone_name}/{rrset_name}/{rrset_type}",
648
+ body=await async_maybe_transform(
649
+ {
650
+ "resource_records": resource_records,
651
+ "meta": meta,
652
+ "pickers": pickers,
653
+ "ttl": ttl,
654
+ },
655
+ rrset_create_params.RrsetCreateParams,
656
+ ),
657
+ options=make_request_options(
658
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
659
+ ),
660
+ cast_to=DNSOutputRrset,
661
+ )
662
+
663
+ async def list(
664
+ self,
665
+ zone_name: str,
666
+ *,
667
+ limit: int | NotGiven = NOT_GIVEN,
668
+ offset: int | NotGiven = NOT_GIVEN,
669
+ order_by: str | NotGiven = NOT_GIVEN,
670
+ order_direction: Literal["asc", "desc"] | NotGiven = NOT_GIVEN,
671
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
672
+ # The extra values given here take precedence over values defined on the client or passed to this method.
673
+ extra_headers: Headers | None = None,
674
+ extra_query: Query | None = None,
675
+ extra_body: Body | None = None,
676
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
677
+ ) -> RrsetListResponse:
678
+ """
679
+ List of RRset.
680
+
681
+ Args:
682
+ limit: Max number of records in response
683
+
684
+ offset: Amount of records to skip before beginning to write in response.
685
+
686
+ order_by: Field name to sort by
687
+
688
+ order_direction: Ascending or descending order
689
+
690
+ extra_headers: Send extra headers
691
+
692
+ extra_query: Add additional query parameters to the request
693
+
694
+ extra_body: Add additional JSON properties to the request
695
+
696
+ timeout: Override the client-level default timeout for this request, in seconds
697
+ """
698
+ if not zone_name:
699
+ raise ValueError(f"Expected a non-empty value for `zone_name` but received {zone_name!r}")
700
+ return await self._get(
701
+ f"/dns/v2/zones/{zone_name}/rrsets",
702
+ options=make_request_options(
703
+ extra_headers=extra_headers,
704
+ extra_query=extra_query,
705
+ extra_body=extra_body,
706
+ timeout=timeout,
707
+ query=await async_maybe_transform(
708
+ {
709
+ "limit": limit,
710
+ "offset": offset,
711
+ "order_by": order_by,
712
+ "order_direction": order_direction,
713
+ },
714
+ rrset_list_params.RrsetListParams,
715
+ ),
716
+ ),
717
+ cast_to=RrsetListResponse,
718
+ )
719
+
720
+ async def delete(
721
+ self,
722
+ rrset_type: str,
723
+ *,
724
+ zone_name: str,
725
+ rrset_name: str,
726
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
727
+ # The extra values given here take precedence over values defined on the client or passed to this method.
728
+ extra_headers: Headers | None = None,
729
+ extra_query: Query | None = None,
730
+ extra_body: Body | None = None,
731
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
732
+ ) -> object:
733
+ """
734
+ Delete RRset.
735
+
736
+ Args:
737
+ extra_headers: Send extra headers
738
+
739
+ extra_query: Add additional query parameters to the request
740
+
741
+ extra_body: Add additional JSON properties to the request
742
+
743
+ timeout: Override the client-level default timeout for this request, in seconds
744
+ """
745
+ if not zone_name:
746
+ raise ValueError(f"Expected a non-empty value for `zone_name` but received {zone_name!r}")
747
+ if not rrset_name:
748
+ raise ValueError(f"Expected a non-empty value for `rrset_name` but received {rrset_name!r}")
749
+ if not rrset_type:
750
+ raise ValueError(f"Expected a non-empty value for `rrset_type` but received {rrset_type!r}")
751
+ return await self._delete(
752
+ f"/dns/v2/zones/{zone_name}/{rrset_name}/{rrset_type}",
753
+ options=make_request_options(
754
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
755
+ ),
756
+ cast_to=object,
757
+ )
758
+
759
+ async def get(
760
+ self,
761
+ rrset_type: str,
762
+ *,
763
+ zone_name: str,
764
+ rrset_name: str,
765
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
766
+ # The extra values given here take precedence over values defined on the client or passed to this method.
767
+ extra_headers: Headers | None = None,
768
+ extra_query: Query | None = None,
769
+ extra_body: Body | None = None,
770
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
771
+ ) -> DNSOutputRrset:
772
+ """
773
+ Particular RRset item info
774
+
775
+ Args:
776
+ extra_headers: Send extra headers
777
+
778
+ extra_query: Add additional query parameters to the request
779
+
780
+ extra_body: Add additional JSON properties to the request
781
+
782
+ timeout: Override the client-level default timeout for this request, in seconds
783
+ """
784
+ if not zone_name:
785
+ raise ValueError(f"Expected a non-empty value for `zone_name` but received {zone_name!r}")
786
+ if not rrset_name:
787
+ raise ValueError(f"Expected a non-empty value for `rrset_name` but received {rrset_name!r}")
788
+ if not rrset_type:
789
+ raise ValueError(f"Expected a non-empty value for `rrset_type` but received {rrset_type!r}")
790
+ return await self._get(
791
+ f"/dns/v2/zones/{zone_name}/{rrset_name}/{rrset_type}",
792
+ options=make_request_options(
793
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
794
+ ),
795
+ cast_to=DNSOutputRrset,
796
+ )
797
+
798
+ async def get_failover_logs(
799
+ self,
800
+ rrset_type: str,
801
+ *,
802
+ zone_name: str,
803
+ rrset_name: str,
804
+ limit: int | NotGiven = NOT_GIVEN,
805
+ offset: int | NotGiven = NOT_GIVEN,
806
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
807
+ # The extra values given here take precedence over values defined on the client or passed to this method.
808
+ extra_headers: Headers | None = None,
809
+ extra_query: Query | None = None,
810
+ extra_body: Body | None = None,
811
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
812
+ ) -> RrsetGetFailoverLogsResponse:
813
+ """
814
+ Get failover history for the RRset
815
+
816
+ Args:
817
+ limit: Max number of records in response
818
+
819
+ offset: Amount of records to skip before beginning to write in response.
820
+
821
+ extra_headers: Send extra headers
822
+
823
+ extra_query: Add additional query parameters to the request
824
+
825
+ extra_body: Add additional JSON properties to the request
826
+
827
+ timeout: Override the client-level default timeout for this request, in seconds
828
+ """
829
+ if not zone_name:
830
+ raise ValueError(f"Expected a non-empty value for `zone_name` but received {zone_name!r}")
831
+ if not rrset_name:
832
+ raise ValueError(f"Expected a non-empty value for `rrset_name` but received {rrset_name!r}")
833
+ if not rrset_type:
834
+ raise ValueError(f"Expected a non-empty value for `rrset_type` but received {rrset_type!r}")
835
+ return await self._get(
836
+ f"/dns/v2/zones/{zone_name}/{rrset_name}/{rrset_type}/failover/log",
837
+ options=make_request_options(
838
+ extra_headers=extra_headers,
839
+ extra_query=extra_query,
840
+ extra_body=extra_body,
841
+ timeout=timeout,
842
+ query=await async_maybe_transform(
843
+ {
844
+ "limit": limit,
845
+ "offset": offset,
846
+ },
847
+ rrset_get_failover_logs_params.RrsetGetFailoverLogsParams,
848
+ ),
849
+ ),
850
+ cast_to=RrsetGetFailoverLogsResponse,
851
+ )
852
+
853
+ async def replace(
854
+ self,
855
+ rrset_type: str,
856
+ *,
857
+ zone_name: str,
858
+ rrset_name: str,
859
+ resource_records: Iterable[rrset_replace_params.ResourceRecord],
860
+ meta: Dict[str, object] | NotGiven = NOT_GIVEN,
861
+ pickers: Iterable[rrset_replace_params.Picker] | NotGiven = NOT_GIVEN,
862
+ ttl: int | NotGiven = NOT_GIVEN,
863
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
864
+ # The extra values given here take precedence over values defined on the client or passed to this method.
865
+ extra_headers: Headers | None = None,
866
+ extra_query: Query | None = None,
867
+ extra_body: Body | None = None,
868
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
869
+ ) -> DNSOutputRrset:
870
+ """
871
+ Create/update RRset.
872
+
873
+ Args:
874
+ resource_records: List of resource record from rrset
875
+
876
+ meta: Meta information for rrset
877
+
878
+ pickers: Set of pickers
879
+
880
+ extra_headers: Send extra headers
881
+
882
+ extra_query: Add additional query parameters to the request
883
+
884
+ extra_body: Add additional JSON properties to the request
885
+
886
+ timeout: Override the client-level default timeout for this request, in seconds
887
+ """
888
+ if not zone_name:
889
+ raise ValueError(f"Expected a non-empty value for `zone_name` but received {zone_name!r}")
890
+ if not rrset_name:
891
+ raise ValueError(f"Expected a non-empty value for `rrset_name` but received {rrset_name!r}")
892
+ if not rrset_type:
893
+ raise ValueError(f"Expected a non-empty value for `rrset_type` but received {rrset_type!r}")
894
+ return await self._put(
895
+ f"/dns/v2/zones/{zone_name}/{rrset_name}/{rrset_type}",
896
+ body=await async_maybe_transform(
897
+ {
898
+ "resource_records": resource_records,
899
+ "meta": meta,
900
+ "pickers": pickers,
901
+ "ttl": ttl,
902
+ },
903
+ rrset_replace_params.RrsetReplaceParams,
904
+ ),
905
+ options=make_request_options(
906
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
907
+ ),
908
+ cast_to=DNSOutputRrset,
909
+ )
910
+
911
+
912
+ class RrsetsResourceWithRawResponse:
913
+ def __init__(self, rrsets: RrsetsResource) -> None:
914
+ self._rrsets = rrsets
915
+
916
+ self.create = to_raw_response_wrapper(
917
+ rrsets.create,
918
+ )
919
+ self.list = to_raw_response_wrapper(
920
+ rrsets.list,
921
+ )
922
+ self.delete = to_raw_response_wrapper(
923
+ rrsets.delete,
924
+ )
925
+ self.get = to_raw_response_wrapper(
926
+ rrsets.get,
927
+ )
928
+ self.get_failover_logs = to_raw_response_wrapper(
929
+ rrsets.get_failover_logs,
930
+ )
931
+ self.replace = to_raw_response_wrapper(
932
+ rrsets.replace,
933
+ )
934
+
935
+
936
+ class AsyncRrsetsResourceWithRawResponse:
937
+ def __init__(self, rrsets: AsyncRrsetsResource) -> None:
938
+ self._rrsets = rrsets
939
+
940
+ self.create = async_to_raw_response_wrapper(
941
+ rrsets.create,
942
+ )
943
+ self.list = async_to_raw_response_wrapper(
944
+ rrsets.list,
945
+ )
946
+ self.delete = async_to_raw_response_wrapper(
947
+ rrsets.delete,
948
+ )
949
+ self.get = async_to_raw_response_wrapper(
950
+ rrsets.get,
951
+ )
952
+ self.get_failover_logs = async_to_raw_response_wrapper(
953
+ rrsets.get_failover_logs,
954
+ )
955
+ self.replace = async_to_raw_response_wrapper(
956
+ rrsets.replace,
957
+ )
958
+
959
+
960
+ class RrsetsResourceWithStreamingResponse:
961
+ def __init__(self, rrsets: RrsetsResource) -> None:
962
+ self._rrsets = rrsets
963
+
964
+ self.create = to_streamed_response_wrapper(
965
+ rrsets.create,
966
+ )
967
+ self.list = to_streamed_response_wrapper(
968
+ rrsets.list,
969
+ )
970
+ self.delete = to_streamed_response_wrapper(
971
+ rrsets.delete,
972
+ )
973
+ self.get = to_streamed_response_wrapper(
974
+ rrsets.get,
975
+ )
976
+ self.get_failover_logs = to_streamed_response_wrapper(
977
+ rrsets.get_failover_logs,
978
+ )
979
+ self.replace = to_streamed_response_wrapper(
980
+ rrsets.replace,
981
+ )
982
+
983
+
984
+ class AsyncRrsetsResourceWithStreamingResponse:
985
+ def __init__(self, rrsets: AsyncRrsetsResource) -> None:
986
+ self._rrsets = rrsets
987
+
988
+ self.create = async_to_streamed_response_wrapper(
989
+ rrsets.create,
990
+ )
991
+ self.list = async_to_streamed_response_wrapper(
992
+ rrsets.list,
993
+ )
994
+ self.delete = async_to_streamed_response_wrapper(
995
+ rrsets.delete,
996
+ )
997
+ self.get = async_to_streamed_response_wrapper(
998
+ rrsets.get,
999
+ )
1000
+ self.get_failover_logs = async_to_streamed_response_wrapper(
1001
+ rrsets.get_failover_logs,
1002
+ )
1003
+ self.replace = async_to_streamed_response_wrapper(
1004
+ rrsets.replace,
1005
+ )