gcore 0.2.0__py3-none-any.whl → 0.4.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 (315) hide show
  1. gcore/__init__.py +2 -1
  2. gcore/_base_client.py +44 -2
  3. gcore/_client.py +9 -0
  4. gcore/_models.py +2 -0
  5. gcore/_types.py +2 -0
  6. gcore/_version.py +1 -1
  7. gcore/pagination.py +61 -1
  8. gcore/resources/__init__.py +14 -0
  9. gcore/resources/cloud/baremetal/flavors.py +11 -137
  10. gcore/resources/cloud/baremetal/images.py +10 -12
  11. gcore/resources/cloud/baremetal/servers.py +75 -78
  12. gcore/resources/cloud/billing_reservations.py +2 -2
  13. gcore/resources/cloud/file_shares/file_shares.py +7 -8
  14. gcore/resources/cloud/floating_ips.py +9 -14
  15. gcore/resources/cloud/gpu_baremetal_clusters/gpu_baremetal_clusters.py +39 -28
  16. gcore/resources/cloud/gpu_baremetal_clusters/images.py +11 -12
  17. gcore/resources/cloud/gpu_baremetal_clusters/interfaces.py +2 -2
  18. gcore/resources/cloud/gpu_baremetal_clusters/servers.py +12 -8
  19. gcore/resources/cloud/inference/deployments/deployments.py +16 -8
  20. gcore/resources/cloud/inference/registry_credentials.py +2 -2
  21. gcore/resources/cloud/inference/secrets.py +8 -8
  22. gcore/resources/cloud/instances/flavors.py +9 -233
  23. gcore/resources/cloud/instances/images.py +47 -37
  24. gcore/resources/cloud/instances/instances.py +107 -100
  25. gcore/resources/cloud/instances/interfaces.py +6 -6
  26. gcore/resources/cloud/ip_ranges.py +34 -2
  27. gcore/resources/cloud/load_balancers/flavors.py +2 -2
  28. gcore/resources/cloud/load_balancers/l7_policies/l7_policies.py +30 -22
  29. gcore/resources/cloud/load_balancers/listeners.py +31 -22
  30. gcore/resources/cloud/load_balancers/load_balancers.py +99 -43
  31. gcore/resources/cloud/load_balancers/metrics.py +2 -2
  32. gcore/resources/cloud/load_balancers/pools/health_monitors.py +2 -2
  33. gcore/resources/cloud/load_balancers/pools/members.py +12 -8
  34. gcore/resources/cloud/networks/networks.py +83 -19
  35. gcore/resources/cloud/networks/routers.py +18 -18
  36. gcore/resources/cloud/networks/subnets.py +55 -15
  37. gcore/resources/cloud/projects.py +38 -24
  38. gcore/resources/cloud/quotas/quotas.py +6 -6
  39. gcore/resources/cloud/quotas/requests.py +8 -8
  40. gcore/resources/cloud/registries/artifacts.py +4 -4
  41. gcore/resources/cloud/registries/registries.py +14 -20
  42. gcore/resources/cloud/registries/repositories.py +4 -4
  43. gcore/resources/cloud/registries/tags.py +2 -2
  44. gcore/resources/cloud/registries/users.py +25 -32
  45. gcore/resources/cloud/reserved_fixed_ips/reserved_fixed_ips.py +26 -26
  46. gcore/resources/cloud/reserved_fixed_ips/vip.py +10 -10
  47. gcore/resources/cloud/security_groups/rules.py +6 -6
  48. gcore/resources/cloud/security_groups/security_groups.py +70 -31
  49. gcore/resources/cloud/ssh_keys.py +2 -2
  50. gcore/resources/cloud/tasks.py +102 -94
  51. gcore/resources/cloud/users/role_assignments.py +16 -18
  52. gcore/resources/cloud/volumes.py +155 -65
  53. gcore/resources/iam/__init__.py +47 -0
  54. gcore/resources/iam/api_tokens.py +521 -0
  55. gcore/resources/iam/iam.py +199 -0
  56. gcore/resources/iam/users.py +642 -0
  57. gcore/resources/waap/__init__.py +84 -0
  58. gcore/resources/waap/advanced_rules.py +135 -0
  59. gcore/resources/waap/custom_page_sets.py +805 -0
  60. gcore/resources/waap/domains/__init__.py +140 -0
  61. gcore/resources/waap/domains/advanced_rules.py +876 -0
  62. gcore/resources/waap/domains/analytics/__init__.py +33 -0
  63. gcore/resources/waap/domains/analytics/analytics.py +676 -0
  64. gcore/resources/waap/domains/analytics/requests.py +378 -0
  65. gcore/resources/waap/domains/api_discovery/__init__.py +33 -0
  66. gcore/resources/waap/domains/api_discovery/api_discovery.py +530 -0
  67. gcore/resources/waap/domains/api_discovery/scan_results.py +352 -0
  68. gcore/resources/waap/domains/api_path_groups.py +163 -0
  69. gcore/resources/waap/domains/api_paths.py +771 -0
  70. gcore/resources/waap/domains/custom_rules.py +889 -0
  71. gcore/resources/waap/domains/domains.py +399 -0
  72. gcore/resources/waap/domains/firewall_rules.py +884 -0
  73. gcore/resources/waap/domains/insight_silences.py +689 -0
  74. gcore/resources/waap/domains/insights.py +425 -0
  75. gcore/resources/waap/domains/policies.py +173 -0
  76. gcore/resources/waap/domains/settings.py +5 -5
  77. gcore/resources/waap/ip_info.py +1017 -0
  78. gcore/resources/waap/organizations.py +217 -0
  79. gcore/resources/waap/statistics.py +225 -0
  80. gcore/resources/waap/tags.py +233 -0
  81. gcore/resources/waap/waap.py +257 -0
  82. gcore/types/cloud/allowed_address_pairs.py +2 -2
  83. gcore/types/cloud/baremetal/__init__.py +0 -1
  84. gcore/types/cloud/baremetal/baremetal_server.py +1 -1
  85. gcore/types/cloud/baremetal/image_list_params.py +1 -5
  86. gcore/types/cloud/baremetal/server_create_params.py +13 -17
  87. gcore/types/cloud/baremetal/server_list_params.py +8 -12
  88. gcore/types/cloud/baremetal/server_rebuild_params.py +1 -1
  89. gcore/types/cloud/baremetal_flavor.py +3 -3
  90. gcore/types/cloud/container_probe_config.py +1 -1
  91. gcore/types/cloud/container_probe_config_create_param.py +1 -1
  92. gcore/types/cloud/container_scale_triggers.py +2 -2
  93. gcore/types/cloud/ddos_profile.py +9 -3
  94. gcore/types/cloud/file_share_create_params.py +3 -5
  95. gcore/types/cloud/floating_ip_create_params.py +2 -4
  96. gcore/types/cloud/floating_ip_detailed.py +1 -1
  97. gcore/types/cloud/floating_ip_list_params.py +2 -6
  98. gcore/types/cloud/gpu_baremetal_cluster.py +1 -1
  99. gcore/types/cloud/gpu_baremetal_cluster_create_params.py +4 -5
  100. gcore/types/cloud/gpu_baremetal_cluster_delete_params.py +1 -1
  101. gcore/types/cloud/gpu_baremetal_cluster_rebuild_params.py +1 -1
  102. gcore/types/cloud/gpu_baremetal_cluster_server.py +1 -1
  103. gcore/types/cloud/gpu_baremetal_clusters/image_upload_params.py +3 -5
  104. gcore/types/cloud/gpu_baremetal_clusters/server_attach_interface_params.py +10 -10
  105. gcore/types/cloud/gpu_baremetal_flavor.py +3 -3
  106. gcore/types/cloud/health_monitor.py +6 -1
  107. gcore/types/cloud/image.py +1 -1
  108. gcore/types/cloud/inference/deployment_create_params.py +4 -4
  109. gcore/types/cloud/inference/deployment_update_params.py +6 -6
  110. gcore/types/cloud/inference/inference.py +2 -4
  111. gcore/types/cloud/instance.py +1 -1
  112. gcore/types/cloud/instance_create_params.py +15 -18
  113. gcore/types/cloud/instance_list_params.py +8 -12
  114. gcore/types/cloud/instances/__init__.py +0 -2
  115. gcore/types/cloud/instances/image_create_from_volume_params.py +2 -4
  116. gcore/types/cloud/instances/image_list_params.py +1 -5
  117. gcore/types/cloud/instances/image_upload_params.py +2 -4
  118. gcore/types/cloud/instances/instance_flavor.py +3 -3
  119. gcore/types/cloud/instances/interface_attach_params.py +10 -10
  120. gcore/types/cloud/load_balancer_create_params.py +25 -19
  121. gcore/types/cloud/load_balancer_flavor_detail.py +3 -3
  122. gcore/types/cloud/load_balancer_l7_policy.py +5 -5
  123. gcore/types/cloud/load_balancer_list_params.py +5 -9
  124. gcore/types/cloud/load_balancer_listener_detail.py +4 -4
  125. gcore/types/cloud/load_balancer_update_params.py +24 -0
  126. gcore/types/cloud/load_balancers/l7_policy_create_params.py +5 -5
  127. gcore/types/cloud/load_balancers/l7_policy_replace_params.py +5 -5
  128. gcore/types/cloud/load_balancers/listener_create_params.py +4 -4
  129. gcore/types/cloud/load_balancers/listener_update_params.py +3 -3
  130. gcore/types/cloud/load_balancers/pool_create_params.py +10 -5
  131. gcore/types/cloud/load_balancers/pool_update_params.py +10 -5
  132. gcore/types/cloud/load_balancers/pools/member_add_params.py +9 -4
  133. gcore/types/cloud/member.py +8 -3
  134. gcore/types/cloud/network.py +2 -2
  135. gcore/types/cloud/network_create_params.py +2 -3
  136. gcore/types/cloud/network_details.py +2 -2
  137. gcore/types/cloud/network_list_params.py +5 -6
  138. gcore/types/cloud/network_update_params.py +28 -2
  139. gcore/types/cloud/networks/router_list_params.py +2 -2
  140. gcore/types/cloud/networks/subnet_create_params.py +3 -4
  141. gcore/types/cloud/networks/subnet_list_params.py +2 -6
  142. gcore/types/cloud/networks/subnet_update_params.py +25 -0
  143. gcore/types/cloud/region.py +4 -4
  144. gcore/types/cloud/registries/__init__.py +1 -0
  145. gcore/types/cloud/registries/user_create_multiple_params.py +3 -5
  146. gcore/types/cloud/registries/user_create_params.py +3 -5
  147. gcore/types/cloud/registries/user_refresh_secret_response.py +31 -0
  148. gcore/types/cloud/registry_create_params.py +3 -5
  149. gcore/types/cloud/reserved_fixed_ip_create_params.py +2 -2
  150. gcore/types/cloud/reserved_fixed_ip_list_params.py +3 -3
  151. gcore/types/cloud/security_group_list_params.py +3 -7
  152. gcore/types/cloud/security_group_update_params.py +25 -0
  153. gcore/types/cloud/session_persistence.py +1 -1
  154. gcore/types/cloud/ssh_key_created.py +3 -6
  155. gcore/types/cloud/tag_update_map_param.py +2 -2
  156. gcore/types/cloud/task.py +1 -1
  157. gcore/types/cloud/task_list_params.py +49 -45
  158. gcore/types/cloud/users/role_assignment_create_params.py +1 -1
  159. gcore/types/cloud/users/role_assignment_update_params.py +1 -1
  160. gcore/types/cloud/volume_create_params.py +6 -6
  161. gcore/types/cloud/volume_list_params.py +3 -7
  162. gcore/types/cloud/volume_update_params.py +29 -3
  163. gcore/types/iam/__init__.py +17 -0
  164. gcore/types/iam/account_overview.py +488 -0
  165. gcore/types/iam/api_token.py +78 -0
  166. gcore/types/iam/api_token_create.py +15 -0
  167. gcore/types/iam/api_token_create_params.py +42 -0
  168. gcore/types/iam/api_token_list.py +81 -0
  169. gcore/types/iam/api_token_list_params.py +41 -0
  170. gcore/types/iam/user.py +86 -0
  171. gcore/types/iam/user_detailed.py +104 -0
  172. gcore/types/iam/user_invite.py +15 -0
  173. gcore/types/iam/user_invite_params.py +37 -0
  174. gcore/types/iam/user_list_params.py +15 -0
  175. gcore/types/iam/user_update.py +104 -0
  176. gcore/types/iam/user_update_params.py +52 -0
  177. gcore/types/waap/__init__.py +97 -2
  178. gcore/types/waap/custom_page_set_create_params.py +35 -0
  179. gcore/types/waap/custom_page_set_list_params.py +25 -0
  180. gcore/types/waap/custom_page_set_preview_params.py +34 -0
  181. gcore/types/waap/custom_page_set_update_params.py +35 -0
  182. gcore/types/waap/domain_list_rule_sets_response.py +10 -0
  183. gcore/types/waap/domains/__init__.py +42 -0
  184. gcore/types/waap/domains/advanced_rule_create_params.py +80 -0
  185. gcore/types/waap/domains/advanced_rule_list_params.py +58 -0
  186. gcore/types/waap/domains/advanced_rule_update_params.py +83 -0
  187. gcore/types/waap/domains/analytics/__init__.py +5 -0
  188. gcore/types/waap/domains/analytics/request_list_params.py +53 -0
  189. gcore/types/waap/domains/analytics_get_event_statistics_params.py +34 -0
  190. gcore/types/waap/domains/analytics_list_ddos_attacks_params.py +28 -0
  191. gcore/types/waap/domains/analytics_list_ddos_info_params.py +31 -0
  192. gcore/types/waap/domains/analytics_list_event_traffic_params.py +26 -0
  193. gcore/types/waap/domains/analytics_list_event_traffic_response.py +10 -0
  194. gcore/types/waap/domains/api_discovery/__init__.py +7 -0
  195. gcore/types/waap/domains/api_discovery/scan_result_get_response.py +29 -0
  196. gcore/types/waap/domains/api_discovery/scan_result_list_params.py +41 -0
  197. gcore/types/waap/domains/api_discovery/scan_result_list_response.py +29 -0
  198. gcore/types/waap/domains/api_discovery_get_settings_response.py +36 -0
  199. gcore/types/waap/domains/api_discovery_scan_openapi_response.py +10 -0
  200. gcore/types/waap/domains/api_discovery_update_settings_params.py +34 -0
  201. gcore/types/waap/domains/api_discovery_update_settings_response.py +36 -0
  202. gcore/types/waap/domains/api_discovery_upload_openapi_params.py +19 -0
  203. gcore/types/waap/domains/api_discovery_upload_openapi_response.py +10 -0
  204. gcore/types/waap/domains/api_path_create_params.py +31 -0
  205. gcore/types/waap/domains/api_path_create_response.py +50 -0
  206. gcore/types/waap/domains/api_path_get_response.py +50 -0
  207. gcore/types/waap/domains/api_path_group_list_response.py +12 -0
  208. gcore/types/waap/domains/api_path_list_params.py +62 -0
  209. gcore/types/waap/domains/api_path_list_response.py +50 -0
  210. gcore/types/waap/domains/api_path_update_params.py +29 -0
  211. gcore/types/waap/domains/custom_rule_create_params.py +372 -0
  212. gcore/types/waap/domains/custom_rule_delete_multiple_params.py +13 -0
  213. gcore/types/waap/domains/custom_rule_list_params.py +35 -0
  214. gcore/types/waap/domains/custom_rule_update_params.py +375 -0
  215. gcore/types/waap/domains/firewall_rule_create_params.py +75 -0
  216. gcore/types/waap/domains/firewall_rule_delete_multiple_params.py +13 -0
  217. gcore/types/waap/domains/firewall_rule_list_params.py +33 -0
  218. gcore/types/waap/domains/firewall_rule_update_params.py +78 -0
  219. gcore/types/waap/domains/insight_list_params.py +34 -0
  220. gcore/types/waap/domains/insight_replace_params.py +17 -0
  221. gcore/types/waap/domains/insight_silence_create_params.py +28 -0
  222. gcore/types/waap/domains/insight_silence_list_params.py +33 -0
  223. gcore/types/waap/domains/insight_silence_update_params.py +28 -0
  224. gcore/types/waap/domains/setting_update_params.py +7 -0
  225. gcore/types/waap/ip_info_get_attack_time_series_params.py +12 -0
  226. gcore/types/waap/ip_info_get_attack_time_series_response.py +10 -0
  227. gcore/types/waap/ip_info_get_blocked_requests_params.py +15 -0
  228. gcore/types/waap/ip_info_get_blocked_requests_response.py +10 -0
  229. gcore/types/waap/ip_info_get_counts_params.py +19 -0
  230. gcore/types/waap/ip_info_get_ddos_attack_series_params.py +12 -0
  231. gcore/types/waap/ip_info_get_params.py +12 -0
  232. gcore/types/waap/ip_info_get_top_sessions_params.py +15 -0
  233. gcore/types/waap/ip_info_get_top_sessions_response.py +10 -0
  234. gcore/types/waap/ip_info_get_top_urls_params.py +15 -0
  235. gcore/types/waap/ip_info_get_top_urls_response.py +10 -0
  236. gcore/types/waap/ip_info_get_top_user_agents_params.py +15 -0
  237. gcore/types/waap/ip_info_get_top_user_agents_response.py +10 -0
  238. gcore/types/waap/ip_info_list_attacked_countries_params.py +12 -0
  239. gcore/types/waap/ip_info_list_attacked_countries_response.py +10 -0
  240. gcore/types/waap/organization_list_params.py +22 -0
  241. gcore/types/waap/statistic_get_usage_series_params.py +25 -0
  242. gcore/types/waap/tag_list_params.py +28 -0
  243. gcore/types/waap/waap_advanced_rule.py +83 -0
  244. gcore/types/waap/waap_advanced_rule_descriptor.py +49 -0
  245. gcore/types/waap/waap_advanced_rule_descriptor_list.py +15 -0
  246. gcore/types/waap/waap_block_csrf_page_data.py +28 -0
  247. gcore/types/waap/waap_block_csrf_page_data_param.py +28 -0
  248. gcore/types/waap/waap_block_page_data.py +28 -0
  249. gcore/types/waap/waap_block_page_data_param.py +28 -0
  250. gcore/types/waap/waap_blocked_statistics.py +36 -0
  251. gcore/types/waap/waap_captcha_page_data.py +31 -0
  252. gcore/types/waap/waap_captcha_page_data_param.py +31 -0
  253. gcore/types/waap/waap_common_tag.py +16 -0
  254. gcore/types/waap/waap_cookie_disabled_page_data.py +18 -0
  255. gcore/types/waap/waap_cookie_disabled_page_data_param.py +18 -0
  256. gcore/types/waap/waap_count_statistics.py +36 -0
  257. gcore/types/waap/waap_custom_page_preview.py +10 -0
  258. gcore/types/waap/waap_custom_page_set.py +36 -0
  259. gcore/types/waap/waap_custom_rule.py +377 -0
  260. gcore/types/waap/waap_customer_rule_state.py +7 -0
  261. gcore/types/waap/waap_ddos_attack.py +16 -0
  262. gcore/types/waap/waap_ddos_info.py +17 -0
  263. gcore/types/waap/{waap_api_urls.py → waap_domain_api_settings.py} +9 -2
  264. gcore/types/waap/waap_domain_policy.py +29 -0
  265. gcore/types/waap/{waap_domain_settings.py → waap_domain_settings_model.py} +4 -4
  266. gcore/types/waap/waap_event_statistics.py +15 -0
  267. gcore/types/waap/waap_firewall_rule.py +78 -0
  268. gcore/types/waap/waap_get_account_overview_response.py +34 -0
  269. gcore/types/waap/waap_handshake_page_data.py +25 -0
  270. gcore/types/waap/waap_handshake_page_data_param.py +25 -0
  271. gcore/types/waap/waap_insight.py +38 -0
  272. gcore/types/waap/waap_insight_silence.py +28 -0
  273. gcore/types/waap/waap_insight_silence_sort_by.py +9 -0
  274. gcore/types/waap/waap_insight_sort_by.py +20 -0
  275. gcore/types/waap/waap_insight_status.py +7 -0
  276. gcore/types/waap/waap_ip_country_attack.py +16 -0
  277. gcore/types/waap/waap_ip_ddos_info_model.py +23 -0
  278. gcore/types/waap/waap_ip_info.py +57 -0
  279. gcore/types/waap/waap_ip_info_counts.py +16 -0
  280. gcore/types/waap/waap_javascript_disabled_page_data.py +18 -0
  281. gcore/types/waap/waap_javascript_disabled_page_data_param.py +18 -0
  282. gcore/types/waap/waap_network_details.py +17 -0
  283. gcore/types/waap/waap_organization.py +13 -0
  284. gcore/types/waap/waap_page_type.py +9 -0
  285. gcore/types/waap/waap_paginated_custom_page_set.py +22 -0
  286. gcore/types/waap/waap_paginated_ddos_attack.py +22 -0
  287. gcore/types/waap/waap_paginated_ddos_info.py +22 -0
  288. gcore/types/waap/waap_paginated_request_summary.py +22 -0
  289. gcore/types/waap/waap_pattern_matched_tag.py +37 -0
  290. gcore/types/waap/waap_policy_action.py +7 -0
  291. gcore/types/waap/waap_policy_mode.py +10 -0
  292. gcore/types/waap/waap_request_details.py +92 -0
  293. gcore/types/waap/waap_request_organization.py +13 -0
  294. gcore/types/waap/waap_request_summary.py +59 -0
  295. gcore/types/waap/waap_resolution.py +7 -0
  296. gcore/types/waap/waap_rule_action_type.py +7 -0
  297. gcore/types/waap/waap_rule_blocked_requests.py +16 -0
  298. gcore/types/waap/waap_rule_set.py +41 -0
  299. gcore/types/waap/waap_statistic_item.py +18 -0
  300. gcore/types/waap/waap_statistics_series.py +16 -0
  301. gcore/types/waap/waap_tag.py +16 -0
  302. gcore/types/waap/waap_time_series_attack.py +23 -0
  303. gcore/types/waap/waap_top_session.py +24 -0
  304. gcore/types/waap/waap_top_url.py +13 -0
  305. gcore/types/waap/waap_top_user_agent.py +13 -0
  306. gcore/types/waap/waap_traffic_metrics.py +68 -0
  307. gcore/types/waap/waap_traffic_type.py +28 -0
  308. gcore/types/waap/waap_user_agent_details.py +40 -0
  309. {gcore-0.2.0.dist-info → gcore-0.4.0.dist-info}/METADATA +40 -3
  310. {gcore-0.2.0.dist-info → gcore-0.4.0.dist-info}/RECORD +312 -149
  311. gcore/types/cloud/baremetal/flavor_list_suitable_params.py +0 -22
  312. gcore/types/cloud/instances/flavor_list_for_resize_params.py +0 -16
  313. gcore/types/cloud/instances/flavor_list_suitable_params.py +0 -56
  314. {gcore-0.2.0.dist-info → gcore-0.4.0.dist-info}/WHEEL +0 -0
  315. {gcore-0.2.0.dist-info → gcore-0.4.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,31 @@
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 Required, TypedDict
6
+
7
+ __all__ = ["WaapCaptchaPageDataParam"]
8
+
9
+
10
+ class WaapCaptchaPageDataParam(TypedDict, total=False):
11
+ enabled: Required[bool]
12
+ """Indicates whether the custom custom page is active or inactive"""
13
+
14
+ error: str
15
+ """Error message"""
16
+
17
+ header: str
18
+ """The text to display in the header of the custom page"""
19
+
20
+ logo: str
21
+ """
22
+ Supported image types are JPEG, PNG and JPG, size is limited to width 450px,
23
+ height 130px. This should be a base 64 encoding of the full HTML img tag
24
+ compatible image, with the header included.
25
+ """
26
+
27
+ text: str
28
+ """The text to display in the body of the custom page"""
29
+
30
+ title: str
31
+ """The text to display in the title of the custom page"""
@@ -0,0 +1,16 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from ..._models import BaseModel
4
+
5
+ __all__ = ["WaapCommonTag"]
6
+
7
+
8
+ class WaapCommonTag(BaseModel):
9
+ description: str
10
+ """Tag description information"""
11
+
12
+ display_name: str
13
+ """The tag's display name"""
14
+
15
+ tag: str
16
+ """Tag name"""
@@ -0,0 +1,18 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Optional
4
+
5
+ from ..._models import BaseModel
6
+
7
+ __all__ = ["WaapCookieDisabledPageData"]
8
+
9
+
10
+ class WaapCookieDisabledPageData(BaseModel):
11
+ enabled: bool
12
+ """Indicates whether the custom custom page is active or inactive"""
13
+
14
+ header: Optional[str] = None
15
+ """The text to display in the header of the custom page"""
16
+
17
+ text: Optional[str] = None
18
+ """The text to display in the body of the custom page"""
@@ -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_extensions import Required, TypedDict
6
+
7
+ __all__ = ["WaapCookieDisabledPageDataParam"]
8
+
9
+
10
+ class WaapCookieDisabledPageDataParam(TypedDict, total=False):
11
+ enabled: Required[bool]
12
+ """Indicates whether the custom custom page is active or inactive"""
13
+
14
+ header: str
15
+ """The text to display in the header of the custom page"""
16
+
17
+ text: str
18
+ """The text to display in the body of the custom page"""
@@ -0,0 +1,36 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List, Union
4
+
5
+ from ..._models import BaseModel
6
+
7
+ __all__ = ["WaapCountStatistics"]
8
+
9
+
10
+ class WaapCountStatistics(BaseModel):
11
+ action: List[List[Union[str, int]]]
12
+ """A collection of event counts per action.
13
+
14
+ The first item is the action's abbreviation/full action name, and the second
15
+ item is the number of events
16
+ """
17
+
18
+ country: List[List[Union[str, int]]]
19
+ """A collection of event counts per country of origin.
20
+
21
+ The first item is the country's ISO 3166-1 alpha-2, and the second item is the
22
+ number of events
23
+ """
24
+
25
+ org: List[List[Union[str, int]]]
26
+ """A collection of event counts per organization that owns the event's client IP.
27
+
28
+ The first item is the organization's name, and the second item is the number of
29
+ events
30
+ """
31
+
32
+ rule_name: List[List[Union[str, int]]]
33
+ """A collection of event counts per rule that triggered the event.
34
+
35
+ The first item is the rule's name, and the second item is the number of events
36
+ """
@@ -0,0 +1,10 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from ..._models import BaseModel
4
+
5
+ __all__ = ["WaapCustomPagePreview"]
6
+
7
+
8
+ class WaapCustomPagePreview(BaseModel):
9
+ html: str
10
+ """HTML content of the custom page"""
@@ -0,0 +1,36 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List, Optional
4
+
5
+ from ..._models import BaseModel
6
+ from .waap_block_page_data import WaapBlockPageData
7
+ from .waap_captcha_page_data import WaapCaptchaPageData
8
+ from .waap_handshake_page_data import WaapHandshakePageData
9
+ from .waap_block_csrf_page_data import WaapBlockCsrfPageData
10
+ from .waap_cookie_disabled_page_data import WaapCookieDisabledPageData
11
+ from .waap_javascript_disabled_page_data import WaapJavascriptDisabledPageData
12
+
13
+ __all__ = ["WaapCustomPageSet"]
14
+
15
+
16
+ class WaapCustomPageSet(BaseModel):
17
+ id: int
18
+ """The ID of the custom page set"""
19
+
20
+ name: str
21
+ """Name of the custom page set"""
22
+
23
+ block: Optional[WaapBlockPageData] = None
24
+
25
+ block_csrf: Optional[WaapBlockCsrfPageData] = None
26
+
27
+ captcha: Optional[WaapCaptchaPageData] = None
28
+
29
+ cookie_disabled: Optional[WaapCookieDisabledPageData] = None
30
+
31
+ domains: Optional[List[int]] = None
32
+ """List of domain IDs that are associated with this page set"""
33
+
34
+ handshake: Optional[WaapHandshakePageData] = None
35
+
36
+ javascript_disabled: Optional[WaapJavascriptDisabledPageData] = None
@@ -0,0 +1,377 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List, Optional
4
+ from typing_extensions import Literal
5
+
6
+ from ..._models import BaseModel
7
+
8
+ __all__ = [
9
+ "WaapCustomRule",
10
+ "Action",
11
+ "ActionBlock",
12
+ "ActionTag",
13
+ "Condition",
14
+ "ConditionContentType",
15
+ "ConditionCountry",
16
+ "ConditionFileExtension",
17
+ "ConditionHeader",
18
+ "ConditionHeaderExists",
19
+ "ConditionHTTPMethod",
20
+ "ConditionIP",
21
+ "ConditionIPRange",
22
+ "ConditionOrganization",
23
+ "ConditionOwnerTypes",
24
+ "ConditionRequestRate",
25
+ "ConditionResponseHeader",
26
+ "ConditionResponseHeaderExists",
27
+ "ConditionSessionRequestCount",
28
+ "ConditionTags",
29
+ "ConditionURL",
30
+ "ConditionUserAgent",
31
+ "ConditionUserDefinedTags",
32
+ ]
33
+
34
+
35
+ class ActionBlock(BaseModel):
36
+ action_duration: Optional[str] = None
37
+ """How long a rule's block action will apply to subsequent requests.
38
+
39
+ Can be specified in seconds or by using a numeral followed by 's', 'm', 'h', or
40
+ 'd' to represent time format (seconds, minutes, hours, or days)
41
+ """
42
+
43
+ status_code: Optional[Literal[403, 405, 418, 429]] = None
44
+ """Designates the HTTP status code to deliver when a request is blocked."""
45
+
46
+
47
+ class ActionTag(BaseModel):
48
+ tags: List[str]
49
+ """The list of user defined tags to tag the request with"""
50
+
51
+
52
+ class Action(BaseModel):
53
+ allow: Optional[object] = None
54
+ """The WAAP allowed the request"""
55
+
56
+ block: Optional[ActionBlock] = None
57
+ """
58
+ WAAP block action behavior could be configured with response status code and
59
+ action duration.
60
+ """
61
+
62
+ captcha: Optional[object] = None
63
+ """The WAAP presented the user with a captcha"""
64
+
65
+ handshake: Optional[object] = None
66
+ """The WAAP performed automatic browser validation"""
67
+
68
+ monitor: Optional[object] = None
69
+ """The WAAP monitored the request but took no action"""
70
+
71
+ tag: Optional[ActionTag] = None
72
+ """WAAP tag action gets a list of tags to tag the request scope with"""
73
+
74
+
75
+ class ConditionContentType(BaseModel):
76
+ content_type: List[str]
77
+ """The list of content types to match against"""
78
+
79
+ negation: Optional[bool] = None
80
+ """Whether or not to apply a boolean NOT operation to the rule's condition"""
81
+
82
+
83
+ class ConditionCountry(BaseModel):
84
+ country_code: List[str]
85
+ """
86
+ A list of ISO 3166-1 alpha-2 formatted strings representing the countries to
87
+ match against
88
+ """
89
+
90
+ negation: Optional[bool] = None
91
+ """Whether or not to apply a boolean NOT operation to the rule's condition"""
92
+
93
+
94
+ class ConditionFileExtension(BaseModel):
95
+ file_extension: List[str]
96
+ """The list of file extensions to match against"""
97
+
98
+ negation: Optional[bool] = None
99
+ """Whether or not to apply a boolean NOT operation to the rule's condition"""
100
+
101
+
102
+ class ConditionHeader(BaseModel):
103
+ header: str
104
+ """The request header name"""
105
+
106
+ value: str
107
+ """The request header value"""
108
+
109
+ match_type: Optional[Literal["Exact", "Contains"]] = None
110
+ """The type of matching condition for header and value."""
111
+
112
+ negation: Optional[bool] = None
113
+ """Whether or not to apply a boolean NOT operation to the rule's condition"""
114
+
115
+
116
+ class ConditionHeaderExists(BaseModel):
117
+ header: str
118
+ """The request header name"""
119
+
120
+ negation: Optional[bool] = None
121
+ """Whether or not to apply a boolean NOT operation to the rule's condition"""
122
+
123
+
124
+ class ConditionHTTPMethod(BaseModel):
125
+ http_method: Literal["CONNECT", "DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT", "TRACE"]
126
+ """HTTP methods and descriptions Methods from the following RFCs are all observed:
127
+
128
+ - RFC 7231: Hypertext Transfer Protocol (HTTP/1.1), obsoletes 2616
129
+ - RFC 5789: PATCH Method for HTTP
130
+ """
131
+
132
+ negation: Optional[bool] = None
133
+ """Whether or not to apply a boolean NOT operation to the rule's condition"""
134
+
135
+
136
+ class ConditionIP(BaseModel):
137
+ ip_address: str
138
+ """A single IPv4 or IPv6 address"""
139
+
140
+ negation: Optional[bool] = None
141
+ """Whether or not to apply a boolean NOT operation to the rule's condition"""
142
+
143
+
144
+ class ConditionIPRange(BaseModel):
145
+ lower_bound: str
146
+ """The lower bound IPv4 or IPv6 address to match against"""
147
+
148
+ upper_bound: str
149
+ """The upper bound IPv4 or IPv6 address to match against"""
150
+
151
+ negation: Optional[bool] = None
152
+ """Whether or not to apply a boolean NOT operation to the rule's condition"""
153
+
154
+
155
+ class ConditionOrganization(BaseModel):
156
+ organization: str
157
+ """The organization to match against"""
158
+
159
+ negation: Optional[bool] = None
160
+ """Whether or not to apply a boolean NOT operation to the rule's condition"""
161
+
162
+
163
+ class ConditionOwnerTypes(BaseModel):
164
+ negation: Optional[bool] = None
165
+ """Whether or not to apply a boolean NOT operation to the rule's condition"""
166
+
167
+ owner_types: Optional[
168
+ List[
169
+ Literal[
170
+ "COMMERCIAL",
171
+ "EDUCATIONAL",
172
+ "GOVERNMENT",
173
+ "HOSTING_SERVICES",
174
+ "ISP",
175
+ "MOBILE_NETWORK",
176
+ "NETWORK",
177
+ "RESERVED",
178
+ ]
179
+ ]
180
+ ] = None
181
+ """
182
+ Match the type of organization that owns the IP address making an incoming
183
+ request
184
+ """
185
+
186
+
187
+ class ConditionRequestRate(BaseModel):
188
+ path_pattern: str
189
+ """A regular expression matching the URL path of the incoming request"""
190
+
191
+ requests: int
192
+ """
193
+ The number of incoming requests over the given time that can trigger a request
194
+ rate condition
195
+ """
196
+
197
+ time: int
198
+ """
199
+ The number of seconds that the WAAP measures incoming requests over before
200
+ triggering a request rate condition
201
+ """
202
+
203
+ http_methods: Optional[
204
+ List[Literal["CONNECT", "DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT", "TRACE"]]
205
+ ] = None
206
+ """Possible HTTP request methods that can trigger a request rate condition"""
207
+
208
+ ips: Optional[List[str]] = None
209
+ """A list of source IPs that can trigger a request rate condition"""
210
+
211
+ user_defined_tag: Optional[str] = None
212
+ """
213
+ A user-defined tag that can be included in incoming requests and used to trigger
214
+ a request rate condition
215
+ """
216
+
217
+
218
+ class ConditionResponseHeader(BaseModel):
219
+ header: str
220
+ """The response header name"""
221
+
222
+ value: str
223
+ """The response header value"""
224
+
225
+ match_type: Optional[Literal["Exact", "Contains"]] = None
226
+ """The type of matching condition for header and value."""
227
+
228
+ negation: Optional[bool] = None
229
+ """Whether or not to apply a boolean NOT operation to the rule's condition"""
230
+
231
+
232
+ class ConditionResponseHeaderExists(BaseModel):
233
+ header: str
234
+ """The response header name"""
235
+
236
+ negation: Optional[bool] = None
237
+ """Whether or not to apply a boolean NOT operation to the rule's condition"""
238
+
239
+
240
+ class ConditionSessionRequestCount(BaseModel):
241
+ request_count: int
242
+ """The number of dynamic requests in the session"""
243
+
244
+ negation: Optional[bool] = None
245
+ """Whether or not to apply a boolean NOT operation to the rule's condition"""
246
+
247
+
248
+ class ConditionTags(BaseModel):
249
+ tags: List[str]
250
+ """A list of tags to match against the request tags"""
251
+
252
+ negation: Optional[bool] = None
253
+ """Whether or not to apply a boolean NOT operation to the rule's condition"""
254
+
255
+
256
+ class ConditionURL(BaseModel):
257
+ url: str
258
+ """
259
+ The pattern to match against the request URL. Constraints depend on
260
+ `match_type`:
261
+
262
+ - **Exact/Contains**: plain text matching (e.g., `/admin`).
263
+ - **Regex**: a valid regular expression (must comply with
264
+ `^[\\ww!\\$$~:#\\[[\\]]@\\((\\))\\*\\++,=\\//\\--\\..\\%%]+$`). Lookahead/lookbehind constructs are
265
+ forbidden.
266
+ """
267
+
268
+ match_type: Optional[Literal["Exact", "Contains", "Regex"]] = None
269
+ """The type of matching condition."""
270
+
271
+ negation: Optional[bool] = None
272
+ """Whether or not to apply a boolean NOT operation to the rule's condition"""
273
+
274
+
275
+ class ConditionUserAgent(BaseModel):
276
+ user_agent: str
277
+ """The user agent value to match"""
278
+
279
+ match_type: Optional[Literal["Exact", "Contains"]] = None
280
+ """The type of matching condition."""
281
+
282
+ negation: Optional[bool] = None
283
+ """Whether or not to apply a boolean NOT operation to the rule's condition"""
284
+
285
+
286
+ class ConditionUserDefinedTags(BaseModel):
287
+ tags: List[str]
288
+ """A list of user-defined tags to match against the request tags"""
289
+
290
+ negation: Optional[bool] = None
291
+ """Whether or not to apply a boolean NOT operation to the rule's condition"""
292
+
293
+
294
+ class Condition(BaseModel):
295
+ content_type: Optional[ConditionContentType] = None
296
+ """Match the requested Content-Type"""
297
+
298
+ country: Optional[ConditionCountry] = None
299
+ """Match the country that the request originated from"""
300
+
301
+ file_extension: Optional[ConditionFileExtension] = None
302
+ """Match the incoming file extension"""
303
+
304
+ header: Optional[ConditionHeader] = None
305
+ """Match an incoming request header"""
306
+
307
+ header_exists: Optional[ConditionHeaderExists] = None
308
+ """Match when an incoming request header is present"""
309
+
310
+ http_method: Optional[ConditionHTTPMethod] = None
311
+ """Match the incoming HTTP method"""
312
+
313
+ ip: Optional[ConditionIP] = None
314
+ """Match the incoming request against a single IP address"""
315
+
316
+ ip_range: Optional[ConditionIPRange] = None
317
+ """Match the incoming request against an IP range"""
318
+
319
+ organization: Optional[ConditionOrganization] = None
320
+ """
321
+ Match the organization the request originated from, as determined by a WHOIS
322
+ lookup of the requesting IP
323
+ """
324
+
325
+ owner_types: Optional[ConditionOwnerTypes] = None
326
+ """
327
+ Match the type of organization that owns the IP address making an incoming
328
+ request
329
+ """
330
+
331
+ request_rate: Optional[ConditionRequestRate] = None
332
+ """Match the rate at which requests come in that match certain conditions"""
333
+
334
+ response_header: Optional[ConditionResponseHeader] = None
335
+ """Match a response header"""
336
+
337
+ response_header_exists: Optional[ConditionResponseHeaderExists] = None
338
+ """Match when a response header is present"""
339
+
340
+ session_request_count: Optional[ConditionSessionRequestCount] = None
341
+ """Match the number of dynamic page requests made in a WAAP session"""
342
+
343
+ tags: Optional[ConditionTags] = None
344
+ """Matches requests based on specified tags"""
345
+
346
+ url: Optional[ConditionURL] = None
347
+ """Match the incoming request URL"""
348
+
349
+ user_agent: Optional[ConditionUserAgent] = None
350
+ """Match the user agent making the request"""
351
+
352
+ user_defined_tags: Optional[ConditionUserDefinedTags] = None
353
+ """Matches requests based on user-defined tags"""
354
+
355
+
356
+ class WaapCustomRule(BaseModel):
357
+ id: int
358
+ """The unique identifier for the rule"""
359
+
360
+ action: Action
361
+ """The action that a WAAP rule takes when triggered"""
362
+
363
+ conditions: List[Condition]
364
+ """The conditions required for the WAAP engine to trigger the rule.
365
+
366
+ Rules may have between 1 and 5 conditions. All conditions must pass for the rule
367
+ to trigger
368
+ """
369
+
370
+ enabled: bool
371
+ """Whether or not the rule is enabled"""
372
+
373
+ name: str
374
+ """The name assigned to the rule"""
375
+
376
+ description: Optional[str] = None
377
+ """The description assigned to the rule"""
@@ -0,0 +1,7 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing_extensions import Literal, TypeAlias
4
+
5
+ __all__ = ["WaapCustomerRuleState"]
6
+
7
+ WaapCustomerRuleState: TypeAlias = Literal["enable", "disable"]
@@ -0,0 +1,16 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Optional
4
+ from datetime import datetime
5
+
6
+ from ..._models import BaseModel
7
+
8
+ __all__ = ["WaapDDOSAttack"]
9
+
10
+
11
+ class WaapDDOSAttack(BaseModel):
12
+ end_time: Optional[datetime] = None
13
+ """End time of DDoS attack"""
14
+
15
+ start_time: Optional[datetime] = None
16
+ """Start time of DDoS attack"""
@@ -0,0 +1,17 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing_extensions import Literal
4
+
5
+ from ..._models import BaseModel
6
+
7
+ __all__ = ["WaapDDOSInfo"]
8
+
9
+
10
+ class WaapDDOSInfo(BaseModel):
11
+ count: int
12
+ """The number of requests made"""
13
+
14
+ identity: str
15
+ """The value for the grouped by type"""
16
+
17
+ type: Literal["URL", "IP", "User-Agent"]
@@ -4,12 +4,19 @@ from typing import List, Optional
4
4
 
5
5
  from ..._models import BaseModel
6
6
 
7
- __all__ = ["WaapAPIURLs"]
7
+ __all__ = ["WaapDomainAPISettings"]
8
8
 
9
9
 
10
- class WaapAPIURLs(BaseModel):
10
+ class WaapDomainAPISettings(BaseModel):
11
11
  api_urls: Optional[List[str]] = None
12
12
  """The API URLs for a domain.
13
13
 
14
14
  If your domain has a common base URL for all API paths, it can be set here
15
15
  """
16
+
17
+ is_api: Optional[bool] = None
18
+ """Indicates if the domain is an API domain.
19
+
20
+ All requests to an API domain are treated as API requests. If this is set to
21
+ true then the `api_urls` field is ignored.
22
+ """
@@ -0,0 +1,29 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from ..._models import BaseModel
4
+ from .waap_policy_action import WaapPolicyAction
5
+
6
+ __all__ = ["WaapDomainPolicy"]
7
+
8
+
9
+ class WaapDomainPolicy(BaseModel):
10
+ id: str
11
+ """Unique identifier for the security rule"""
12
+
13
+ action: WaapPolicyAction
14
+ """The action taken by the WAAP upon rule activation."""
15
+
16
+ description: str
17
+ """Detailed description of the security rule"""
18
+
19
+ group: str
20
+ """The rule set group name to which the rule belongs"""
21
+
22
+ mode: bool
23
+ """Indicates if the security rule is active"""
24
+
25
+ name: str
26
+ """Name of the security rule"""
27
+
28
+ rule_set_id: int
29
+ """Identifier of the rule set to which the rule belongs"""
@@ -1,14 +1,14 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  from ..._models import BaseModel
4
- from .waap_api_urls import WaapAPIURLs
4
+ from .waap_domain_api_settings import WaapDomainAPISettings
5
5
  from .waap_domain_ddos_settings import WaapDomainDDOSSettings
6
6
 
7
- __all__ = ["WaapDomainSettings"]
7
+ __all__ = ["WaapDomainSettingsModel"]
8
8
 
9
9
 
10
- class WaapDomainSettings(BaseModel):
11
- api: WaapAPIURLs
10
+ class WaapDomainSettingsModel(BaseModel):
11
+ api: WaapDomainAPISettings
12
12
  """API settings of a domain"""
13
13
 
14
14
  ddos: WaapDomainDDOSSettings
@@ -0,0 +1,15 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from ..._models import BaseModel
4
+ from .waap_count_statistics import WaapCountStatistics
5
+ from .waap_blocked_statistics import WaapBlockedStatistics
6
+
7
+ __all__ = ["WaapEventStatistics"]
8
+
9
+
10
+ class WaapEventStatistics(BaseModel):
11
+ blocked: WaapBlockedStatistics
12
+ """A collection of total numbers of events with blocked results per criteria"""
13
+
14
+ count: WaapCountStatistics
15
+ """A collection of total numbers of events per criteria"""