gcore 0.8.0__py3-none-any.whl → 0.10.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 (164) hide show
  1. gcore/_base_client.py +4 -1
  2. gcore/_client.py +9 -0
  3. gcore/_files.py +4 -4
  4. gcore/_version.py +1 -1
  5. gcore/resources/__init__.py +14 -0
  6. gcore/resources/cloud/cost_reports.py +24 -0
  7. gcore/resources/cloud/load_balancers/pools/health_monitors.py +8 -4
  8. gcore/resources/cloud/load_balancers/pools/members.py +2 -2
  9. gcore/resources/cloud/quotas/requests.py +7 -15
  10. gcore/resources/fastedge/binaries.py +81 -1
  11. gcore/resources/security/__init__.py +75 -0
  12. gcore/resources/security/bgp_announces.py +308 -0
  13. gcore/resources/security/events.py +234 -0
  14. gcore/resources/security/profile_templates.py +143 -0
  15. gcore/resources/security/profiles.py +661 -0
  16. gcore/resources/security/security.py +198 -0
  17. gcore/resources/waap/__init__.py +14 -0
  18. gcore/resources/waap/custom_page_sets.py +40 -34
  19. gcore/resources/waap/domains/__init__.py +14 -28
  20. gcore/resources/waap/domains/advanced_rules.py +5 -8
  21. gcore/resources/waap/domains/{api_discovery/api_discovery.py → api_discovery.py} +292 -59
  22. gcore/resources/waap/domains/api_path_groups.py +5 -5
  23. gcore/resources/waap/domains/api_paths.py +15 -17
  24. gcore/resources/waap/domains/custom_rules.py +5 -8
  25. gcore/resources/waap/domains/domains.py +120 -64
  26. gcore/resources/waap/domains/firewall_rules.py +3 -5
  27. gcore/resources/waap/domains/insight_silences.py +28 -5
  28. gcore/resources/waap/domains/insights.py +36 -10
  29. gcore/resources/waap/domains/{analytics/analytics.py → statistics.py} +514 -213
  30. gcore/resources/waap/insights.py +233 -0
  31. gcore/resources/waap/ip_info/__init__.py +33 -0
  32. gcore/resources/waap/{ip_info.py → ip_info/ip_info.py} +149 -235
  33. gcore/resources/waap/ip_info/metrics.py +203 -0
  34. gcore/resources/waap/waap.py +40 -8
  35. gcore/types/cloud/cost_report_get_aggregated_monthly_params.py +3 -0
  36. gcore/types/cloud/cost_report_get_aggregated_params.py +3 -0
  37. gcore/types/cloud/cost_report_get_detailed_params.py +3 -0
  38. gcore/types/cloud/gpu_baremetal_flavor.py +16 -0
  39. gcore/types/cloud/health_monitor.py +6 -0
  40. gcore/types/cloud/load_balancer_create_params.py +8 -3
  41. gcore/types/cloud/load_balancers/pool_create_params.py +8 -3
  42. gcore/types/cloud/load_balancers/pool_update_params.py +8 -3
  43. gcore/types/cloud/load_balancers/pools/health_monitor_create_params.py +7 -2
  44. gcore/types/cloud/load_balancers/pools/member_add_params.py +1 -1
  45. gcore/types/cloud/quotas/request_list_params.py +2 -2
  46. gcore/types/cloud/region.py +6 -6
  47. gcore/types/fastedge/__init__.py +1 -0
  48. gcore/types/fastedge/binary_create_params.py +11 -0
  49. gcore/types/security/__init__.py +18 -0
  50. gcore/types/security/bgp_announce_list_params.py +18 -0
  51. gcore/types/security/bgp_announce_list_response.py +10 -0
  52. gcore/types/security/bgp_announce_toggle_params.py +16 -0
  53. gcore/types/security/client_announce.py +15 -0
  54. gcore/types/security/client_profile.py +56 -0
  55. gcore/types/security/client_profile_template.py +43 -0
  56. gcore/types/security/client_view.py +29 -0
  57. gcore/types/security/event_list_params.py +38 -0
  58. gcore/types/security/profile_create_params.py +24 -0
  59. gcore/types/security/profile_list_params.py +17 -0
  60. gcore/types/security/profile_list_response.py +10 -0
  61. gcore/types/security/profile_recreate_params.py +24 -0
  62. gcore/types/security/profile_replace_params.py +24 -0
  63. gcore/types/security/profile_template_list_response.py +10 -0
  64. gcore/types/waap/__init__.py +6 -54
  65. gcore/types/waap/custom_page_set_create_params.py +121 -14
  66. gcore/types/waap/custom_page_set_preview_params.py +11 -4
  67. gcore/types/waap/custom_page_set_update_params.py +122 -15
  68. gcore/types/waap/domain_list_params.py +1 -3
  69. gcore/types/waap/domains/__init__.py +28 -18
  70. gcore/types/waap/domains/advanced_rule_list_params.py +1 -3
  71. gcore/types/waap/domains/{api_discovery/scan_result_list_params.py → api_discovery_list_scan_results_params.py} +2 -2
  72. gcore/types/waap/domains/{api_path_group_list_response.py → api_path_group_list.py} +2 -2
  73. gcore/types/waap/domains/custom_rule_list_params.py +1 -3
  74. gcore/types/waap/domains/insight_list_params.py +16 -6
  75. gcore/types/waap/domains/insight_replace_params.py +2 -4
  76. gcore/types/waap/domains/insight_silence_list_params.py +13 -4
  77. gcore/types/waap/domains/{analytics_list_ddos_attacks_params.py → statistic_get_ddos_attacks_params.py} +2 -2
  78. gcore/types/waap/domains/{analytics_list_ddos_info_params.py → statistic_get_ddos_info_params.py} +2 -2
  79. gcore/types/waap/domains/{analytics_get_event_statistics_params.py → statistic_get_events_aggregated_params.py} +2 -2
  80. gcore/types/waap/domains/{analytics/request_list_params.py → statistic_get_requests_series_params.py} +27 -5
  81. gcore/types/waap/domains/{analytics_list_event_traffic_params.py → statistic_get_traffic_series_params.py} +4 -5
  82. gcore/types/waap/domains/statistic_get_traffic_series_response.py +10 -0
  83. gcore/types/waap/{waap_advanced_rule.py → domains/waap_advanced_rule.py} +1 -1
  84. gcore/types/waap/domains/{api_discovery_get_settings_response.py → waap_api_discovery_settings.py} +2 -2
  85. gcore/types/waap/domains/{api_path_get_response.py → waap_api_path.py} +2 -2
  86. gcore/types/waap/domains/{api_discovery/scan_result_get_response.py → waap_api_scan_result.py} +3 -3
  87. gcore/types/waap/{waap_blocked_statistics.py → domains/waap_blocked_statistics.py} +1 -1
  88. gcore/types/waap/{waap_count_statistics.py → domains/waap_count_statistics.py} +1 -1
  89. gcore/types/waap/{waap_custom_rule.py → domains/waap_custom_rule.py} +1 -1
  90. gcore/types/waap/{waap_ddos_attack.py → domains/waap_ddos_attack.py} +1 -1
  91. gcore/types/waap/{waap_ddos_info.py → domains/waap_ddos_info.py} +1 -1
  92. gcore/types/waap/{waap_event_statistics.py → domains/waap_event_statistics.py} +1 -1
  93. gcore/types/waap/{waap_firewall_rule.py → domains/waap_firewall_rule.py} +1 -1
  94. gcore/types/waap/{waap_insight.py → domains/waap_insight.py} +3 -3
  95. gcore/types/waap/{waap_insight_silence.py → domains/waap_insight_silence.py} +1 -1
  96. gcore/types/waap/domains/waap_request_details.py +185 -0
  97. gcore/types/waap/{waap_request_summary.py → domains/waap_request_summary.py} +1 -1
  98. gcore/types/waap/domains/{api_discovery_scan_openapi_response.py → waap_task_id.py} +2 -2
  99. gcore/types/waap/{waap_traffic_metrics.py → domains/waap_traffic_metrics.py} +1 -1
  100. gcore/types/waap/insight_list_types_params.py +28 -0
  101. gcore/types/waap/ip_info/__init__.py +6 -0
  102. gcore/types/waap/{ip_info_get_counts_params.py → ip_info/metric_list_params.py} +2 -2
  103. gcore/types/waap/{waap_ip_info_counts.py → ip_info/waap_ip_info_counts.py} +1 -1
  104. gcore/types/waap/{ip_info_get_params.py → ip_info_get_ip_info_params.py} +2 -2
  105. gcore/types/waap/{waap_ip_info.py → ip_info_get_ip_info_response.py} +2 -2
  106. gcore/types/waap/ip_info_get_top_urls_response.py +12 -3
  107. gcore/types/waap/{ip_info_get_top_sessions_params.py → ip_info_get_top_user_sessions_params.py} +2 -2
  108. gcore/types/waap/{ip_info_get_top_sessions_response.py → ip_info_get_top_user_sessions_response.py} +2 -2
  109. gcore/types/waap/waap_custom_page_set.py +113 -13
  110. gcore/types/waap/waap_detailed_domain.py +2 -2
  111. gcore/types/waap/waap_insight_type.py +33 -0
  112. gcore/types/waap/waap_rule_set.py +26 -3
  113. gcore/types/waap/waap_summary_domain.py +2 -2
  114. {gcore-0.8.0.dist-info → gcore-0.10.0.dist-info}/METADATA +1 -1
  115. {gcore-0.8.0.dist-info → gcore-0.10.0.dist-info}/RECORD +117 -134
  116. gcore/resources/waap/domains/analytics/__init__.py +0 -33
  117. gcore/resources/waap/domains/analytics/requests.py +0 -378
  118. gcore/resources/waap/domains/api_discovery/__init__.py +0 -33
  119. gcore/resources/waap/domains/api_discovery/scan_results.py +0 -352
  120. gcore/resources/waap/domains/policies.py +0 -173
  121. gcore/types/waap/domains/analytics/__init__.py +0 -5
  122. gcore/types/waap/domains/analytics_list_event_traffic_response.py +0 -10
  123. gcore/types/waap/domains/api_discovery/__init__.py +0 -7
  124. gcore/types/waap/domains/api_discovery/scan_result_list_response.py +0 -29
  125. gcore/types/waap/domains/api_discovery_update_settings_response.py +0 -36
  126. gcore/types/waap/domains/api_discovery_upload_openapi_response.py +0 -10
  127. gcore/types/waap/domains/api_path_create_response.py +0 -50
  128. gcore/types/waap/domains/api_path_list_response.py +0 -50
  129. gcore/types/waap/waap_block_csrf_page_data.py +0 -28
  130. gcore/types/waap/waap_block_csrf_page_data_param.py +0 -28
  131. gcore/types/waap/waap_block_page_data.py +0 -28
  132. gcore/types/waap/waap_block_page_data_param.py +0 -28
  133. gcore/types/waap/waap_captcha_page_data.py +0 -31
  134. gcore/types/waap/waap_captcha_page_data_param.py +0 -31
  135. gcore/types/waap/waap_common_tag.py +0 -16
  136. gcore/types/waap/waap_cookie_disabled_page_data.py +0 -18
  137. gcore/types/waap/waap_cookie_disabled_page_data_param.py +0 -18
  138. gcore/types/waap/waap_customer_rule_state.py +0 -7
  139. gcore/types/waap/waap_domain_policy.py +0 -29
  140. gcore/types/waap/waap_domain_status.py +0 -7
  141. gcore/types/waap/waap_handshake_page_data.py +0 -25
  142. gcore/types/waap/waap_handshake_page_data_param.py +0 -25
  143. gcore/types/waap/waap_insight_silence_sort_by.py +0 -9
  144. gcore/types/waap/waap_insight_sort_by.py +0 -20
  145. gcore/types/waap/waap_insight_status.py +0 -7
  146. gcore/types/waap/waap_javascript_disabled_page_data.py +0 -18
  147. gcore/types/waap/waap_javascript_disabled_page_data_param.py +0 -18
  148. gcore/types/waap/waap_network_details.py +0 -17
  149. gcore/types/waap/waap_page_type.py +0 -9
  150. gcore/types/waap/waap_paginated_custom_page_set.py +0 -22
  151. gcore/types/waap/waap_paginated_ddos_attack.py +0 -22
  152. gcore/types/waap/waap_paginated_ddos_info.py +0 -22
  153. gcore/types/waap/waap_paginated_request_summary.py +0 -22
  154. gcore/types/waap/waap_pattern_matched_tag.py +0 -37
  155. gcore/types/waap/waap_policy_action.py +0 -7
  156. gcore/types/waap/waap_request_details.py +0 -92
  157. gcore/types/waap/waap_request_organization.py +0 -13
  158. gcore/types/waap/waap_resolution.py +0 -7
  159. gcore/types/waap/waap_rule_action_type.py +0 -7
  160. gcore/types/waap/waap_top_url.py +0 -13
  161. gcore/types/waap/waap_traffic_type.py +0 -28
  162. gcore/types/waap/waap_user_agent_details.py +0 -40
  163. {gcore-0.8.0.dist-info → gcore-0.10.0.dist-info}/WHEEL +0 -0
  164. {gcore-0.8.0.dist-info → gcore-0.10.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,203 @@
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 Optional
6
+
7
+ import httpx
8
+
9
+ from ...._types import NOT_GIVEN, Body, Query, Headers, NotGiven
10
+ from ...._utils import maybe_transform, async_maybe_transform
11
+ from ...._compat import cached_property
12
+ from ...._resource import SyncAPIResource, AsyncAPIResource
13
+ from ...._response import (
14
+ to_raw_response_wrapper,
15
+ to_streamed_response_wrapper,
16
+ async_to_raw_response_wrapper,
17
+ async_to_streamed_response_wrapper,
18
+ )
19
+ from ...._base_client import make_request_options
20
+ from ....types.waap.ip_info import metric_list_params
21
+ from ....types.waap.ip_info.waap_ip_info_counts import WaapIPInfoCounts
22
+
23
+ __all__ = ["MetricsResource", "AsyncMetricsResource"]
24
+
25
+
26
+ class MetricsResource(SyncAPIResource):
27
+ @cached_property
28
+ def with_raw_response(self) -> MetricsResourceWithRawResponse:
29
+ """
30
+ This property can be used as a prefix for any HTTP method call to return
31
+ the raw response object instead of the parsed content.
32
+
33
+ For more information, see https://www.github.com/G-Core/gcore-python#accessing-raw-response-data-eg-headers
34
+ """
35
+ return MetricsResourceWithRawResponse(self)
36
+
37
+ @cached_property
38
+ def with_streaming_response(self) -> MetricsResourceWithStreamingResponse:
39
+ """
40
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
41
+
42
+ For more information, see https://www.github.com/G-Core/gcore-python#with_streaming_response
43
+ """
44
+ return MetricsResourceWithStreamingResponse(self)
45
+
46
+ def list(
47
+ self,
48
+ *,
49
+ ip: str,
50
+ domain_id: Optional[int] | NotGiven = NOT_GIVEN,
51
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
52
+ # The extra values given here take precedence over values defined on the client or passed to this method.
53
+ extra_headers: Headers | None = None,
54
+ extra_query: Query | None = None,
55
+ extra_body: Body | None = None,
56
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
57
+ ) -> WaapIPInfoCounts:
58
+ """
59
+ Retrieve metrics encompassing the counts of total requests, blocked requests and
60
+ unique sessions associated with a specified IP address. Metrics provide a
61
+ statistical overview, aiding in analyzing the interaction and access patterns of
62
+ the IP address in context.
63
+
64
+ Args:
65
+ ip: The IP address to check
66
+
67
+ domain_id: The identifier for a domain. When specified, the response will exclusively
68
+ contain data pertinent to the indicated domain, filtering out information from
69
+ other domains.
70
+
71
+ extra_headers: Send extra headers
72
+
73
+ extra_query: Add additional query parameters to the request
74
+
75
+ extra_body: Add additional JSON properties to the request
76
+
77
+ timeout: Override the client-level default timeout for this request, in seconds
78
+ """
79
+ return self._get(
80
+ "/waap/v1/ip-info/counts",
81
+ options=make_request_options(
82
+ extra_headers=extra_headers,
83
+ extra_query=extra_query,
84
+ extra_body=extra_body,
85
+ timeout=timeout,
86
+ query=maybe_transform(
87
+ {
88
+ "ip": ip,
89
+ "domain_id": domain_id,
90
+ },
91
+ metric_list_params.MetricListParams,
92
+ ),
93
+ ),
94
+ cast_to=WaapIPInfoCounts,
95
+ )
96
+
97
+
98
+ class AsyncMetricsResource(AsyncAPIResource):
99
+ @cached_property
100
+ def with_raw_response(self) -> AsyncMetricsResourceWithRawResponse:
101
+ """
102
+ This property can be used as a prefix for any HTTP method call to return
103
+ the raw response object instead of the parsed content.
104
+
105
+ For more information, see https://www.github.com/G-Core/gcore-python#accessing-raw-response-data-eg-headers
106
+ """
107
+ return AsyncMetricsResourceWithRawResponse(self)
108
+
109
+ @cached_property
110
+ def with_streaming_response(self) -> AsyncMetricsResourceWithStreamingResponse:
111
+ """
112
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
113
+
114
+ For more information, see https://www.github.com/G-Core/gcore-python#with_streaming_response
115
+ """
116
+ return AsyncMetricsResourceWithStreamingResponse(self)
117
+
118
+ async def list(
119
+ self,
120
+ *,
121
+ ip: str,
122
+ domain_id: Optional[int] | NotGiven = NOT_GIVEN,
123
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
124
+ # The extra values given here take precedence over values defined on the client or passed to this method.
125
+ extra_headers: Headers | None = None,
126
+ extra_query: Query | None = None,
127
+ extra_body: Body | None = None,
128
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
129
+ ) -> WaapIPInfoCounts:
130
+ """
131
+ Retrieve metrics encompassing the counts of total requests, blocked requests and
132
+ unique sessions associated with a specified IP address. Metrics provide a
133
+ statistical overview, aiding in analyzing the interaction and access patterns of
134
+ the IP address in context.
135
+
136
+ Args:
137
+ ip: The IP address to check
138
+
139
+ domain_id: The identifier for a domain. When specified, the response will exclusively
140
+ contain data pertinent to the indicated domain, filtering out information from
141
+ other domains.
142
+
143
+ extra_headers: Send extra headers
144
+
145
+ extra_query: Add additional query parameters to the request
146
+
147
+ extra_body: Add additional JSON properties to the request
148
+
149
+ timeout: Override the client-level default timeout for this request, in seconds
150
+ """
151
+ return await self._get(
152
+ "/waap/v1/ip-info/counts",
153
+ options=make_request_options(
154
+ extra_headers=extra_headers,
155
+ extra_query=extra_query,
156
+ extra_body=extra_body,
157
+ timeout=timeout,
158
+ query=await async_maybe_transform(
159
+ {
160
+ "ip": ip,
161
+ "domain_id": domain_id,
162
+ },
163
+ metric_list_params.MetricListParams,
164
+ ),
165
+ ),
166
+ cast_to=WaapIPInfoCounts,
167
+ )
168
+
169
+
170
+ class MetricsResourceWithRawResponse:
171
+ def __init__(self, metrics: MetricsResource) -> None:
172
+ self._metrics = metrics
173
+
174
+ self.list = to_raw_response_wrapper(
175
+ metrics.list,
176
+ )
177
+
178
+
179
+ class AsyncMetricsResourceWithRawResponse:
180
+ def __init__(self, metrics: AsyncMetricsResource) -> None:
181
+ self._metrics = metrics
182
+
183
+ self.list = async_to_raw_response_wrapper(
184
+ metrics.list,
185
+ )
186
+
187
+
188
+ class MetricsResourceWithStreamingResponse:
189
+ def __init__(self, metrics: MetricsResource) -> None:
190
+ self._metrics = metrics
191
+
192
+ self.list = to_streamed_response_wrapper(
193
+ metrics.list,
194
+ )
195
+
196
+
197
+ class AsyncMetricsResourceWithStreamingResponse:
198
+ def __init__(self, metrics: AsyncMetricsResource) -> None:
199
+ self._metrics = metrics
200
+
201
+ self.list = async_to_streamed_response_wrapper(
202
+ metrics.list,
203
+ )
@@ -12,15 +12,15 @@ from .tags import (
12
12
  TagsResourceWithStreamingResponse,
13
13
  AsyncTagsResourceWithStreamingResponse,
14
14
  )
15
- from .ip_info import (
16
- IPInfoResource,
17
- AsyncIPInfoResource,
18
- IPInfoResourceWithRawResponse,
19
- AsyncIPInfoResourceWithRawResponse,
20
- IPInfoResourceWithStreamingResponse,
21
- AsyncIPInfoResourceWithStreamingResponse,
22
- )
23
15
  from ..._types import NOT_GIVEN, Body, Query, Headers, NotGiven
16
+ from .insights import (
17
+ InsightsResource,
18
+ AsyncInsightsResource,
19
+ InsightsResourceWithRawResponse,
20
+ AsyncInsightsResourceWithRawResponse,
21
+ InsightsResourceWithStreamingResponse,
22
+ AsyncInsightsResourceWithStreamingResponse,
23
+ )
24
24
  from ..._compat import cached_property
25
25
  from .statistics import (
26
26
  StatisticsResource,
@@ -62,6 +62,14 @@ from .domains.domains import (
62
62
  DomainsResourceWithStreamingResponse,
63
63
  AsyncDomainsResourceWithStreamingResponse,
64
64
  )
65
+ from .ip_info.ip_info import (
66
+ IPInfoResource,
67
+ AsyncIPInfoResource,
68
+ IPInfoResourceWithRawResponse,
69
+ AsyncIPInfoResourceWithRawResponse,
70
+ IPInfoResourceWithStreamingResponse,
71
+ AsyncIPInfoResourceWithStreamingResponse,
72
+ )
65
73
  from .custom_page_sets import (
66
74
  CustomPageSetsResource,
67
75
  AsyncCustomPageSetsResource,
@@ -100,6 +108,10 @@ class WaapResource(SyncAPIResource):
100
108
  def organizations(self) -> OrganizationsResource:
101
109
  return OrganizationsResource(self._client)
102
110
 
111
+ @cached_property
112
+ def insights(self) -> InsightsResource:
113
+ return InsightsResource(self._client)
114
+
103
115
  @cached_property
104
116
  def ip_info(self) -> IPInfoResource:
105
117
  return IPInfoResource(self._client)
@@ -168,6 +180,10 @@ class AsyncWaapResource(AsyncAPIResource):
168
180
  def organizations(self) -> AsyncOrganizationsResource:
169
181
  return AsyncOrganizationsResource(self._client)
170
182
 
183
+ @cached_property
184
+ def insights(self) -> AsyncInsightsResource:
185
+ return AsyncInsightsResource(self._client)
186
+
171
187
  @cached_property
172
188
  def ip_info(self) -> AsyncIPInfoResource:
173
189
  return AsyncIPInfoResource(self._client)
@@ -243,6 +259,10 @@ class WaapResourceWithRawResponse:
243
259
  def organizations(self) -> OrganizationsResourceWithRawResponse:
244
260
  return OrganizationsResourceWithRawResponse(self._waap.organizations)
245
261
 
262
+ @cached_property
263
+ def insights(self) -> InsightsResourceWithRawResponse:
264
+ return InsightsResourceWithRawResponse(self._waap.insights)
265
+
246
266
  @cached_property
247
267
  def ip_info(self) -> IPInfoResourceWithRawResponse:
248
268
  return IPInfoResourceWithRawResponse(self._waap.ip_info)
@@ -280,6 +300,10 @@ class AsyncWaapResourceWithRawResponse:
280
300
  def organizations(self) -> AsyncOrganizationsResourceWithRawResponse:
281
301
  return AsyncOrganizationsResourceWithRawResponse(self._waap.organizations)
282
302
 
303
+ @cached_property
304
+ def insights(self) -> AsyncInsightsResourceWithRawResponse:
305
+ return AsyncInsightsResourceWithRawResponse(self._waap.insights)
306
+
283
307
  @cached_property
284
308
  def ip_info(self) -> AsyncIPInfoResourceWithRawResponse:
285
309
  return AsyncIPInfoResourceWithRawResponse(self._waap.ip_info)
@@ -317,6 +341,10 @@ class WaapResourceWithStreamingResponse:
317
341
  def organizations(self) -> OrganizationsResourceWithStreamingResponse:
318
342
  return OrganizationsResourceWithStreamingResponse(self._waap.organizations)
319
343
 
344
+ @cached_property
345
+ def insights(self) -> InsightsResourceWithStreamingResponse:
346
+ return InsightsResourceWithStreamingResponse(self._waap.insights)
347
+
320
348
  @cached_property
321
349
  def ip_info(self) -> IPInfoResourceWithStreamingResponse:
322
350
  return IPInfoResourceWithStreamingResponse(self._waap.ip_info)
@@ -354,6 +382,10 @@ class AsyncWaapResourceWithStreamingResponse:
354
382
  def organizations(self) -> AsyncOrganizationsResourceWithStreamingResponse:
355
383
  return AsyncOrganizationsResourceWithStreamingResponse(self._waap.organizations)
356
384
 
385
+ @cached_property
386
+ def insights(self) -> AsyncInsightsResourceWithStreamingResponse:
387
+ return AsyncInsightsResourceWithStreamingResponse(self._waap.insights)
388
+
357
389
  @cached_property
358
390
  def ip_info(self) -> AsyncIPInfoResourceWithStreamingResponse:
359
391
  return AsyncIPInfoResourceWithStreamingResponse(self._waap.ip_info)
@@ -54,6 +54,9 @@ class CostReportGetAggregatedMonthlyParams(TypedDict, total=False):
54
54
  response_format: Literal["csv_totals", "json"]
55
55
  """Format of the response (`csv_totals` or json)."""
56
56
 
57
+ rounding: bool
58
+ """Round cost values to 5 decimal places. When false, returns full precision."""
59
+
57
60
  schema_filter: SchemaFilter
58
61
  """Extended filter for field filtering."""
59
62
 
@@ -69,6 +69,9 @@ class CostReportGetAggregatedParams(TypedDict, total=False):
69
69
  response_format: Literal["csv_totals", "json"]
70
70
  """Format of the response (csv or json)."""
71
71
 
72
+ rounding: bool
73
+ """Round cost values to 5 decimal places. When false, returns full precision."""
74
+
72
75
  schema_filter: SchemaFilter
73
76
  """Extended filter for field filtering."""
74
77
 
@@ -76,6 +76,9 @@ class CostReportGetDetailedParams(TypedDict, total=False):
76
76
  response_format: Literal["csv_records", "json"]
77
77
  """Format of the response (csv or json)."""
78
78
 
79
+ rounding: bool
80
+ """Round cost values to 5 decimal places. When false, returns full precision."""
81
+
79
82
  schema_filter: SchemaFilter
80
83
  """Extended filter for field filtering."""
81
84
 
@@ -10,10 +10,12 @@ __all__ = [
10
10
  "GPUBaremetalFlavorSerializerWithoutPrice",
11
11
  "GPUBaremetalFlavorSerializerWithoutPriceHardwareDescription",
12
12
  "GPUBaremetalFlavorSerializerWithoutPriceHardwareProperties",
13
+ "GPUBaremetalFlavorSerializerWithoutPriceSupportedFeatures",
13
14
  "GPUBaremetalFlavorSerializerWithPrices",
14
15
  "GPUBaremetalFlavorSerializerWithPricesHardwareDescription",
15
16
  "GPUBaremetalFlavorSerializerWithPricesHardwareProperties",
16
17
  "GPUBaremetalFlavorSerializerWithPricesPrice",
18
+ "GPUBaremetalFlavorSerializerWithPricesSupportedFeatures",
17
19
  ]
18
20
 
19
21
 
@@ -45,6 +47,10 @@ class GPUBaremetalFlavorSerializerWithoutPriceHardwareProperties(BaseModel):
45
47
  """GPU model"""
46
48
 
47
49
 
50
+ class GPUBaremetalFlavorSerializerWithoutPriceSupportedFeatures(BaseModel):
51
+ security_groups: bool
52
+
53
+
48
54
  class GPUBaremetalFlavorSerializerWithoutPrice(BaseModel):
49
55
  architecture: Optional[str] = None
50
56
  """Flavor architecture type"""
@@ -64,6 +70,9 @@ class GPUBaremetalFlavorSerializerWithoutPrice(BaseModel):
64
70
  name: str
65
71
  """Flavor name"""
66
72
 
73
+ supported_features: GPUBaremetalFlavorSerializerWithoutPriceSupportedFeatures
74
+ """Set of enabled features based on the flavor's type and configuration"""
75
+
67
76
 
68
77
  class GPUBaremetalFlavorSerializerWithPricesHardwareDescription(BaseModel):
69
78
  cpu: str
@@ -107,6 +116,10 @@ class GPUBaremetalFlavorSerializerWithPricesPrice(BaseModel):
107
116
  """Price status for the UI"""
108
117
 
109
118
 
119
+ class GPUBaremetalFlavorSerializerWithPricesSupportedFeatures(BaseModel):
120
+ security_groups: bool
121
+
122
+
110
123
  class GPUBaremetalFlavorSerializerWithPrices(BaseModel):
111
124
  architecture: Optional[str] = None
112
125
  """Flavor architecture type"""
@@ -129,5 +142,8 @@ class GPUBaremetalFlavorSerializerWithPrices(BaseModel):
129
142
  price: GPUBaremetalFlavorSerializerWithPricesPrice
130
143
  """Flavor price"""
131
144
 
145
+ supported_features: GPUBaremetalFlavorSerializerWithPricesSupportedFeatures
146
+ """Set of enabled features based on the flavor's type and configuration"""
147
+
132
148
 
133
149
  GPUBaremetalFlavor: TypeAlias = Union[GPUBaremetalFlavorSerializerWithoutPrice, GPUBaremetalFlavorSerializerWithPrices]
@@ -45,6 +45,12 @@ class HealthMonitor(BaseModel):
45
45
  """Health monitor type. Once health monitor is created, cannot be changed."""
46
46
 
47
47
  expected_codes: Optional[str] = None
48
+ """Expected HTTP response codes.
49
+
50
+ Can be a single code or a range of codes. Can only be used together with `HTTP`
51
+ or `HTTPS` health monitor type. For example,
52
+ 200,202,300-302,401,403,404,500-504. If not specified, the default is 200.
53
+ """
48
54
 
49
55
  http_method: Optional[HTTPMethod] = None
50
56
  """HTTP method"""
@@ -147,7 +147,12 @@ class ListenerPoolHealthmonitor(TypedDict, total=False):
147
147
  """Health monitor type. Once health monitor is created, cannot be changed."""
148
148
 
149
149
  expected_codes: Optional[str]
150
- """Can only be used together with `HTTP` or `HTTPS` health monitor type."""
150
+ """Expected HTTP response codes.
151
+
152
+ Can be a single code or a range of codes. Can only be used together with `HTTP`
153
+ or `HTTPS` health monitor type. For example,
154
+ 200,202,300-302,401,403,404,500-504. If not specified, the default is 200.
155
+ """
151
156
 
152
157
  http_method: Optional[HTTPMethod]
153
158
  """HTTP method.
@@ -155,7 +160,7 @@ class ListenerPoolHealthmonitor(TypedDict, total=False):
155
160
  Can only be used together with `HTTP` or `HTTPS` health monitor type.
156
161
  """
157
162
 
158
- max_retries_down: Optional[int]
163
+ max_retries_down: int
159
164
  """Number of failures before the member is switched to ERROR state."""
160
165
 
161
166
  url_path: Optional[str]
@@ -210,7 +215,7 @@ class ListenerPoolMember(TypedDict, total=False):
210
215
  Either `subnet_id` or `instance_id` should be provided
211
216
  """
212
217
 
213
- weight: Optional[int]
218
+ weight: int
214
219
  """Member weight. Valid values are 0 < `weight` <= 256, defaults to 1."""
215
220
 
216
221
 
@@ -78,7 +78,12 @@ class Healthmonitor(TypedDict, total=False):
78
78
  """Health monitor type. Once health monitor is created, cannot be changed."""
79
79
 
80
80
  expected_codes: Optional[str]
81
- """Can only be used together with `HTTP` or `HTTPS` health monitor type."""
81
+ """Expected HTTP response codes.
82
+
83
+ Can be a single code or a range of codes. Can only be used together with `HTTP`
84
+ or `HTTPS` health monitor type. For example,
85
+ 200,202,300-302,401,403,404,500-504. If not specified, the default is 200.
86
+ """
82
87
 
83
88
  http_method: Optional[HTTPMethod]
84
89
  """HTTP method.
@@ -86,7 +91,7 @@ class Healthmonitor(TypedDict, total=False):
86
91
  Can only be used together with `HTTP` or `HTTPS` health monitor type.
87
92
  """
88
93
 
89
- max_retries_down: Optional[int]
94
+ max_retries_down: int
90
95
  """Number of failures before the member is switched to ERROR state."""
91
96
 
92
97
  url_path: Optional[str]
@@ -141,7 +146,7 @@ class Member(TypedDict, total=False):
141
146
  Either `subnet_id` or `instance_id` should be provided
142
147
  """
143
148
 
144
- weight: Optional[int]
149
+ weight: int
145
150
  """Member weight. Valid values are 0 < `weight` <= 256, defaults to 1."""
146
151
 
147
152
 
@@ -73,7 +73,12 @@ class Healthmonitor(TypedDict, total=False):
73
73
  """The maximum time to connect. Must be less than the delay value"""
74
74
 
75
75
  expected_codes: Optional[str]
76
- """Can only be used together with `HTTP` or `HTTPS` health monitor type."""
76
+ """Expected HTTP response codes.
77
+
78
+ Can be a single code or a range of codes. Can only be used together with `HTTP`
79
+ or `HTTPS` health monitor type. For example,
80
+ 200,202,300-302,401,403,404,500-504. If not specified, the default is 200.
81
+ """
77
82
 
78
83
  http_method: Optional[HTTPMethod]
79
84
  """HTTP method.
@@ -81,7 +86,7 @@ class Healthmonitor(TypedDict, total=False):
81
86
  Can only be used together with `HTTP` or `HTTPS` health monitor type.
82
87
  """
83
88
 
84
- max_retries_down: Optional[int]
89
+ max_retries_down: int
85
90
  """Number of failures before the member is switched to ERROR state."""
86
91
 
87
92
  type: Optional[LbHealthMonitorType]
@@ -139,7 +144,7 @@ class Member(TypedDict, total=False):
139
144
  Either `subnet_id` or `instance_id` should be provided
140
145
  """
141
146
 
142
- weight: Optional[int]
147
+ weight: int
143
148
  """Member weight. Valid values are 0 < `weight` <= 256, defaults to 1."""
144
149
 
145
150
 
@@ -32,7 +32,12 @@ class HealthMonitorCreateParams(TypedDict, total=False):
32
32
  """Health monitor type. Once health monitor is created, cannot be changed."""
33
33
 
34
34
  expected_codes: Optional[str]
35
- """Can only be used together with `HTTP` or `HTTPS` health monitor type."""
35
+ """Expected HTTP response codes.
36
+
37
+ Can be a single code or a range of codes. Can only be used together with `HTTP`
38
+ or `HTTPS` health monitor type. For example,
39
+ 200,202,300-302,401,403,404,500-504. If not specified, the default is 200.
40
+ """
36
41
 
37
42
  http_method: Optional[HTTPMethod]
38
43
  """HTTP method.
@@ -40,7 +45,7 @@ class HealthMonitorCreateParams(TypedDict, total=False):
40
45
  Can only be used together with `HTTP` or `HTTPS` health monitor type.
41
46
  """
42
47
 
43
- max_retries_down: Optional[int]
48
+ max_retries_down: int
44
49
  """Number of failures before the member is switched to ERROR state."""
45
50
 
46
51
  url_path: Optional[str]
@@ -58,5 +58,5 @@ class MemberAddParams(TypedDict, total=False):
58
58
  Either `subnet_id` or `instance_id` should be provided
59
59
  """
60
60
 
61
- weight: Optional[int]
61
+ weight: int
62
62
  """Member weight. Valid values are 0 < `weight` <= 256, defaults to 1."""
@@ -2,7 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import List, Optional
5
+ from typing import List
6
6
  from typing_extensions import Literal, TypedDict
7
7
 
8
8
  __all__ = ["RequestListParams"]
@@ -18,5 +18,5 @@ class RequestListParams(TypedDict, total=False):
18
18
  Offset value is used to exclude the first set of records from the result
19
19
  """
20
20
 
21
- status: Optional[List[Literal["done", "in progress", "rejected"]]]
21
+ status: List[Literal["done", "in progress", "rejected"]]
22
22
  """List of limit requests statuses for filtering"""
@@ -22,9 +22,6 @@ class Region(BaseModel):
22
22
  access_level: Literal["core", "edge"]
23
23
  """The access level of the region."""
24
24
 
25
- ai_service_endpoint_id: Optional[int] = None
26
- """AI service API endpoint ID"""
27
-
28
25
  available_volume_types: Optional[List[str]] = None
29
26
  """List of available volume types, 'standard', '`ssd_hiiops`', 'cold']."""
30
27
 
@@ -40,9 +37,6 @@ class Region(BaseModel):
40
37
  created_on: datetime
41
38
  """This field is deprecated. Use `created_at` instead."""
42
39
 
43
- ddos_endpoint_id: Optional[int] = None
44
- """DDoS endpoint ID"""
45
-
46
40
  display_name: str
47
41
  """Human-readable region name"""
48
42
 
@@ -70,6 +64,9 @@ class Region(BaseModel):
70
64
  has_dbaas: bool
71
65
  """Region has DBAAS service"""
72
66
 
67
+ has_ddos: bool
68
+ """Region has Advanced DDoS Protection capability"""
69
+
73
70
  has_k8s: bool
74
71
  """Region has managed kubernetes capability"""
75
72
 
@@ -99,3 +96,6 @@ class Region(BaseModel):
99
96
 
100
97
  zone: Optional[Literal["AMERICAS", "APAC", "EMEA", "RUSSIA_AND_CIS"]] = None
101
98
  """Geographical zone"""
99
+
100
+ ddos_endpoint_id: Optional[int] = None
101
+ """DDoS endpoint ID"""
@@ -23,6 +23,7 @@ from .app_update_params import AppUpdateParams as AppUpdateParams
23
23
  from .app_replace_params import AppReplaceParams as AppReplaceParams
24
24
  from .secret_list_params import SecretListParams as SecretListParams
25
25
  from .template_parameter import TemplateParameter as TemplateParameter
26
+ from .binary_create_params import BinaryCreateParams as BinaryCreateParams
26
27
  from .binary_list_response import BinaryListResponse as BinaryListResponse
27
28
  from .kv_store_list_params import KvStoreListParams as KvStoreListParams
28
29
  from .secret_create_params import SecretCreateParams as SecretCreateParams
@@ -0,0 +1,11 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import TypedDict
6
+
7
+ __all__ = ["BinaryCreateParams"]
8
+
9
+
10
+ class BinaryCreateParams(TypedDict, total=False):
11
+ pass
@@ -0,0 +1,18 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from .client_view import ClientView as ClientView
6
+ from .client_profile import ClientProfile as ClientProfile
7
+ from .client_announce import ClientAnnounce as ClientAnnounce
8
+ from .event_list_params import EventListParams as EventListParams
9
+ from .profile_list_params import ProfileListParams as ProfileListParams
10
+ from .profile_create_params import ProfileCreateParams as ProfileCreateParams
11
+ from .profile_list_response import ProfileListResponse as ProfileListResponse
12
+ from .profile_replace_params import ProfileReplaceParams as ProfileReplaceParams
13
+ from .client_profile_template import ClientProfileTemplate as ClientProfileTemplate
14
+ from .profile_recreate_params import ProfileRecreateParams as ProfileRecreateParams
15
+ from .bgp_announce_list_params import BgpAnnounceListParams as BgpAnnounceListParams
16
+ from .bgp_announce_list_response import BgpAnnounceListResponse as BgpAnnounceListResponse
17
+ from .bgp_announce_toggle_params import BgpAnnounceToggleParams as BgpAnnounceToggleParams
18
+ from .profile_template_list_response import ProfileTemplateListResponse as ProfileTemplateListResponse
@@ -0,0 +1,18 @@
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 Optional
6
+ from typing_extensions import Literal, TypedDict
7
+
8
+ __all__ = ["BgpAnnounceListParams"]
9
+
10
+
11
+ class BgpAnnounceListParams(TypedDict, total=False):
12
+ announced: Optional[bool]
13
+
14
+ client_id: Optional[int]
15
+
16
+ origin: Optional[Literal["STATIC", "DYNAMIC"]]
17
+
18
+ site: Optional[str]
@@ -0,0 +1,10 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List
4
+ from typing_extensions import TypeAlias
5
+
6
+ from .client_announce import ClientAnnounce
7
+
8
+ __all__ = ["BgpAnnounceListResponse"]
9
+
10
+ BgpAnnounceListResponse: TypeAlias = List[ClientAnnounce]