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.
- gcore/__init__.py +2 -1
- gcore/_base_client.py +44 -2
- gcore/_client.py +9 -0
- gcore/_models.py +2 -0
- gcore/_types.py +2 -0
- gcore/_version.py +1 -1
- gcore/pagination.py +61 -1
- gcore/resources/__init__.py +14 -0
- gcore/resources/cloud/baremetal/flavors.py +11 -137
- gcore/resources/cloud/baremetal/images.py +10 -12
- gcore/resources/cloud/baremetal/servers.py +75 -78
- gcore/resources/cloud/billing_reservations.py +2 -2
- gcore/resources/cloud/file_shares/file_shares.py +7 -8
- gcore/resources/cloud/floating_ips.py +9 -14
- gcore/resources/cloud/gpu_baremetal_clusters/gpu_baremetal_clusters.py +39 -28
- gcore/resources/cloud/gpu_baremetal_clusters/images.py +11 -12
- gcore/resources/cloud/gpu_baremetal_clusters/interfaces.py +2 -2
- gcore/resources/cloud/gpu_baremetal_clusters/servers.py +12 -8
- gcore/resources/cloud/inference/deployments/deployments.py +16 -8
- gcore/resources/cloud/inference/registry_credentials.py +2 -2
- gcore/resources/cloud/inference/secrets.py +8 -8
- gcore/resources/cloud/instances/flavors.py +9 -233
- gcore/resources/cloud/instances/images.py +47 -37
- gcore/resources/cloud/instances/instances.py +107 -100
- gcore/resources/cloud/instances/interfaces.py +6 -6
- gcore/resources/cloud/ip_ranges.py +34 -2
- gcore/resources/cloud/load_balancers/flavors.py +2 -2
- gcore/resources/cloud/load_balancers/l7_policies/l7_policies.py +30 -22
- gcore/resources/cloud/load_balancers/listeners.py +31 -22
- gcore/resources/cloud/load_balancers/load_balancers.py +99 -43
- gcore/resources/cloud/load_balancers/metrics.py +2 -2
- gcore/resources/cloud/load_balancers/pools/health_monitors.py +2 -2
- gcore/resources/cloud/load_balancers/pools/members.py +12 -8
- gcore/resources/cloud/networks/networks.py +83 -19
- gcore/resources/cloud/networks/routers.py +18 -18
- gcore/resources/cloud/networks/subnets.py +55 -15
- gcore/resources/cloud/projects.py +38 -24
- gcore/resources/cloud/quotas/quotas.py +6 -6
- gcore/resources/cloud/quotas/requests.py +8 -8
- gcore/resources/cloud/registries/artifacts.py +4 -4
- gcore/resources/cloud/registries/registries.py +14 -20
- gcore/resources/cloud/registries/repositories.py +4 -4
- gcore/resources/cloud/registries/tags.py +2 -2
- gcore/resources/cloud/registries/users.py +25 -32
- gcore/resources/cloud/reserved_fixed_ips/reserved_fixed_ips.py +26 -26
- gcore/resources/cloud/reserved_fixed_ips/vip.py +10 -10
- gcore/resources/cloud/security_groups/rules.py +6 -6
- gcore/resources/cloud/security_groups/security_groups.py +70 -31
- gcore/resources/cloud/ssh_keys.py +2 -2
- gcore/resources/cloud/tasks.py +102 -94
- gcore/resources/cloud/users/role_assignments.py +16 -18
- gcore/resources/cloud/volumes.py +155 -65
- gcore/resources/iam/__init__.py +47 -0
- gcore/resources/iam/api_tokens.py +521 -0
- gcore/resources/iam/iam.py +199 -0
- gcore/resources/iam/users.py +642 -0
- gcore/resources/waap/__init__.py +84 -0
- gcore/resources/waap/advanced_rules.py +135 -0
- gcore/resources/waap/custom_page_sets.py +805 -0
- gcore/resources/waap/domains/__init__.py +140 -0
- gcore/resources/waap/domains/advanced_rules.py +876 -0
- gcore/resources/waap/domains/analytics/__init__.py +33 -0
- gcore/resources/waap/domains/analytics/analytics.py +676 -0
- gcore/resources/waap/domains/analytics/requests.py +378 -0
- gcore/resources/waap/domains/api_discovery/__init__.py +33 -0
- gcore/resources/waap/domains/api_discovery/api_discovery.py +530 -0
- gcore/resources/waap/domains/api_discovery/scan_results.py +352 -0
- gcore/resources/waap/domains/api_path_groups.py +163 -0
- gcore/resources/waap/domains/api_paths.py +771 -0
- gcore/resources/waap/domains/custom_rules.py +889 -0
- gcore/resources/waap/domains/domains.py +399 -0
- gcore/resources/waap/domains/firewall_rules.py +884 -0
- gcore/resources/waap/domains/insight_silences.py +689 -0
- gcore/resources/waap/domains/insights.py +425 -0
- gcore/resources/waap/domains/policies.py +173 -0
- gcore/resources/waap/domains/settings.py +5 -5
- gcore/resources/waap/ip_info.py +1017 -0
- gcore/resources/waap/organizations.py +217 -0
- gcore/resources/waap/statistics.py +225 -0
- gcore/resources/waap/tags.py +233 -0
- gcore/resources/waap/waap.py +257 -0
- gcore/types/cloud/allowed_address_pairs.py +2 -2
- gcore/types/cloud/baremetal/__init__.py +0 -1
- gcore/types/cloud/baremetal/baremetal_server.py +1 -1
- gcore/types/cloud/baremetal/image_list_params.py +1 -5
- gcore/types/cloud/baremetal/server_create_params.py +13 -17
- gcore/types/cloud/baremetal/server_list_params.py +8 -12
- gcore/types/cloud/baremetal/server_rebuild_params.py +1 -1
- gcore/types/cloud/baremetal_flavor.py +3 -3
- gcore/types/cloud/container_probe_config.py +1 -1
- gcore/types/cloud/container_probe_config_create_param.py +1 -1
- gcore/types/cloud/container_scale_triggers.py +2 -2
- gcore/types/cloud/ddos_profile.py +9 -3
- gcore/types/cloud/file_share_create_params.py +3 -5
- gcore/types/cloud/floating_ip_create_params.py +2 -4
- gcore/types/cloud/floating_ip_detailed.py +1 -1
- gcore/types/cloud/floating_ip_list_params.py +2 -6
- gcore/types/cloud/gpu_baremetal_cluster.py +1 -1
- gcore/types/cloud/gpu_baremetal_cluster_create_params.py +4 -5
- gcore/types/cloud/gpu_baremetal_cluster_delete_params.py +1 -1
- gcore/types/cloud/gpu_baremetal_cluster_rebuild_params.py +1 -1
- gcore/types/cloud/gpu_baremetal_cluster_server.py +1 -1
- gcore/types/cloud/gpu_baremetal_clusters/image_upload_params.py +3 -5
- gcore/types/cloud/gpu_baremetal_clusters/server_attach_interface_params.py +10 -10
- gcore/types/cloud/gpu_baremetal_flavor.py +3 -3
- gcore/types/cloud/health_monitor.py +6 -1
- gcore/types/cloud/image.py +1 -1
- gcore/types/cloud/inference/deployment_create_params.py +4 -4
- gcore/types/cloud/inference/deployment_update_params.py +6 -6
- gcore/types/cloud/inference/inference.py +2 -4
- gcore/types/cloud/instance.py +1 -1
- gcore/types/cloud/instance_create_params.py +15 -18
- gcore/types/cloud/instance_list_params.py +8 -12
- gcore/types/cloud/instances/__init__.py +0 -2
- gcore/types/cloud/instances/image_create_from_volume_params.py +2 -4
- gcore/types/cloud/instances/image_list_params.py +1 -5
- gcore/types/cloud/instances/image_upload_params.py +2 -4
- gcore/types/cloud/instances/instance_flavor.py +3 -3
- gcore/types/cloud/instances/interface_attach_params.py +10 -10
- gcore/types/cloud/load_balancer_create_params.py +25 -19
- gcore/types/cloud/load_balancer_flavor_detail.py +3 -3
- gcore/types/cloud/load_balancer_l7_policy.py +5 -5
- gcore/types/cloud/load_balancer_list_params.py +5 -9
- gcore/types/cloud/load_balancer_listener_detail.py +4 -4
- gcore/types/cloud/load_balancer_update_params.py +24 -0
- gcore/types/cloud/load_balancers/l7_policy_create_params.py +5 -5
- gcore/types/cloud/load_balancers/l7_policy_replace_params.py +5 -5
- gcore/types/cloud/load_balancers/listener_create_params.py +4 -4
- gcore/types/cloud/load_balancers/listener_update_params.py +3 -3
- gcore/types/cloud/load_balancers/pool_create_params.py +10 -5
- gcore/types/cloud/load_balancers/pool_update_params.py +10 -5
- gcore/types/cloud/load_balancers/pools/member_add_params.py +9 -4
- gcore/types/cloud/member.py +8 -3
- gcore/types/cloud/network.py +2 -2
- gcore/types/cloud/network_create_params.py +2 -3
- gcore/types/cloud/network_details.py +2 -2
- gcore/types/cloud/network_list_params.py +5 -6
- gcore/types/cloud/network_update_params.py +28 -2
- gcore/types/cloud/networks/router_list_params.py +2 -2
- gcore/types/cloud/networks/subnet_create_params.py +3 -4
- gcore/types/cloud/networks/subnet_list_params.py +2 -6
- gcore/types/cloud/networks/subnet_update_params.py +25 -0
- gcore/types/cloud/region.py +4 -4
- gcore/types/cloud/registries/__init__.py +1 -0
- gcore/types/cloud/registries/user_create_multiple_params.py +3 -5
- gcore/types/cloud/registries/user_create_params.py +3 -5
- gcore/types/cloud/registries/user_refresh_secret_response.py +31 -0
- gcore/types/cloud/registry_create_params.py +3 -5
- gcore/types/cloud/reserved_fixed_ip_create_params.py +2 -2
- gcore/types/cloud/reserved_fixed_ip_list_params.py +3 -3
- gcore/types/cloud/security_group_list_params.py +3 -7
- gcore/types/cloud/security_group_update_params.py +25 -0
- gcore/types/cloud/session_persistence.py +1 -1
- gcore/types/cloud/ssh_key_created.py +3 -6
- gcore/types/cloud/tag_update_map_param.py +2 -2
- gcore/types/cloud/task.py +1 -1
- gcore/types/cloud/task_list_params.py +49 -45
- gcore/types/cloud/users/role_assignment_create_params.py +1 -1
- gcore/types/cloud/users/role_assignment_update_params.py +1 -1
- gcore/types/cloud/volume_create_params.py +6 -6
- gcore/types/cloud/volume_list_params.py +3 -7
- gcore/types/cloud/volume_update_params.py +29 -3
- gcore/types/iam/__init__.py +17 -0
- gcore/types/iam/account_overview.py +488 -0
- gcore/types/iam/api_token.py +78 -0
- gcore/types/iam/api_token_create.py +15 -0
- gcore/types/iam/api_token_create_params.py +42 -0
- gcore/types/iam/api_token_list.py +81 -0
- gcore/types/iam/api_token_list_params.py +41 -0
- gcore/types/iam/user.py +86 -0
- gcore/types/iam/user_detailed.py +104 -0
- gcore/types/iam/user_invite.py +15 -0
- gcore/types/iam/user_invite_params.py +37 -0
- gcore/types/iam/user_list_params.py +15 -0
- gcore/types/iam/user_update.py +104 -0
- gcore/types/iam/user_update_params.py +52 -0
- gcore/types/waap/__init__.py +97 -2
- gcore/types/waap/custom_page_set_create_params.py +35 -0
- gcore/types/waap/custom_page_set_list_params.py +25 -0
- gcore/types/waap/custom_page_set_preview_params.py +34 -0
- gcore/types/waap/custom_page_set_update_params.py +35 -0
- gcore/types/waap/domain_list_rule_sets_response.py +10 -0
- gcore/types/waap/domains/__init__.py +42 -0
- gcore/types/waap/domains/advanced_rule_create_params.py +80 -0
- gcore/types/waap/domains/advanced_rule_list_params.py +58 -0
- gcore/types/waap/domains/advanced_rule_update_params.py +83 -0
- gcore/types/waap/domains/analytics/__init__.py +5 -0
- gcore/types/waap/domains/analytics/request_list_params.py +53 -0
- gcore/types/waap/domains/analytics_get_event_statistics_params.py +34 -0
- gcore/types/waap/domains/analytics_list_ddos_attacks_params.py +28 -0
- gcore/types/waap/domains/analytics_list_ddos_info_params.py +31 -0
- gcore/types/waap/domains/analytics_list_event_traffic_params.py +26 -0
- gcore/types/waap/domains/analytics_list_event_traffic_response.py +10 -0
- gcore/types/waap/domains/api_discovery/__init__.py +7 -0
- gcore/types/waap/domains/api_discovery/scan_result_get_response.py +29 -0
- gcore/types/waap/domains/api_discovery/scan_result_list_params.py +41 -0
- gcore/types/waap/domains/api_discovery/scan_result_list_response.py +29 -0
- gcore/types/waap/domains/api_discovery_get_settings_response.py +36 -0
- gcore/types/waap/domains/api_discovery_scan_openapi_response.py +10 -0
- gcore/types/waap/domains/api_discovery_update_settings_params.py +34 -0
- gcore/types/waap/domains/api_discovery_update_settings_response.py +36 -0
- gcore/types/waap/domains/api_discovery_upload_openapi_params.py +19 -0
- gcore/types/waap/domains/api_discovery_upload_openapi_response.py +10 -0
- gcore/types/waap/domains/api_path_create_params.py +31 -0
- gcore/types/waap/domains/api_path_create_response.py +50 -0
- gcore/types/waap/domains/api_path_get_response.py +50 -0
- gcore/types/waap/domains/api_path_group_list_response.py +12 -0
- gcore/types/waap/domains/api_path_list_params.py +62 -0
- gcore/types/waap/domains/api_path_list_response.py +50 -0
- gcore/types/waap/domains/api_path_update_params.py +29 -0
- gcore/types/waap/domains/custom_rule_create_params.py +372 -0
- gcore/types/waap/domains/custom_rule_delete_multiple_params.py +13 -0
- gcore/types/waap/domains/custom_rule_list_params.py +35 -0
- gcore/types/waap/domains/custom_rule_update_params.py +375 -0
- gcore/types/waap/domains/firewall_rule_create_params.py +75 -0
- gcore/types/waap/domains/firewall_rule_delete_multiple_params.py +13 -0
- gcore/types/waap/domains/firewall_rule_list_params.py +33 -0
- gcore/types/waap/domains/firewall_rule_update_params.py +78 -0
- gcore/types/waap/domains/insight_list_params.py +34 -0
- gcore/types/waap/domains/insight_replace_params.py +17 -0
- gcore/types/waap/domains/insight_silence_create_params.py +28 -0
- gcore/types/waap/domains/insight_silence_list_params.py +33 -0
- gcore/types/waap/domains/insight_silence_update_params.py +28 -0
- gcore/types/waap/domains/setting_update_params.py +7 -0
- gcore/types/waap/ip_info_get_attack_time_series_params.py +12 -0
- gcore/types/waap/ip_info_get_attack_time_series_response.py +10 -0
- gcore/types/waap/ip_info_get_blocked_requests_params.py +15 -0
- gcore/types/waap/ip_info_get_blocked_requests_response.py +10 -0
- gcore/types/waap/ip_info_get_counts_params.py +19 -0
- gcore/types/waap/ip_info_get_ddos_attack_series_params.py +12 -0
- gcore/types/waap/ip_info_get_params.py +12 -0
- gcore/types/waap/ip_info_get_top_sessions_params.py +15 -0
- gcore/types/waap/ip_info_get_top_sessions_response.py +10 -0
- gcore/types/waap/ip_info_get_top_urls_params.py +15 -0
- gcore/types/waap/ip_info_get_top_urls_response.py +10 -0
- gcore/types/waap/ip_info_get_top_user_agents_params.py +15 -0
- gcore/types/waap/ip_info_get_top_user_agents_response.py +10 -0
- gcore/types/waap/ip_info_list_attacked_countries_params.py +12 -0
- gcore/types/waap/ip_info_list_attacked_countries_response.py +10 -0
- gcore/types/waap/organization_list_params.py +22 -0
- gcore/types/waap/statistic_get_usage_series_params.py +25 -0
- gcore/types/waap/tag_list_params.py +28 -0
- gcore/types/waap/waap_advanced_rule.py +83 -0
- gcore/types/waap/waap_advanced_rule_descriptor.py +49 -0
- gcore/types/waap/waap_advanced_rule_descriptor_list.py +15 -0
- gcore/types/waap/waap_block_csrf_page_data.py +28 -0
- gcore/types/waap/waap_block_csrf_page_data_param.py +28 -0
- gcore/types/waap/waap_block_page_data.py +28 -0
- gcore/types/waap/waap_block_page_data_param.py +28 -0
- gcore/types/waap/waap_blocked_statistics.py +36 -0
- gcore/types/waap/waap_captcha_page_data.py +31 -0
- gcore/types/waap/waap_captcha_page_data_param.py +31 -0
- gcore/types/waap/waap_common_tag.py +16 -0
- gcore/types/waap/waap_cookie_disabled_page_data.py +18 -0
- gcore/types/waap/waap_cookie_disabled_page_data_param.py +18 -0
- gcore/types/waap/waap_count_statistics.py +36 -0
- gcore/types/waap/waap_custom_page_preview.py +10 -0
- gcore/types/waap/waap_custom_page_set.py +36 -0
- gcore/types/waap/waap_custom_rule.py +377 -0
- gcore/types/waap/waap_customer_rule_state.py +7 -0
- gcore/types/waap/waap_ddos_attack.py +16 -0
- gcore/types/waap/waap_ddos_info.py +17 -0
- gcore/types/waap/{waap_api_urls.py → waap_domain_api_settings.py} +9 -2
- gcore/types/waap/waap_domain_policy.py +29 -0
- gcore/types/waap/{waap_domain_settings.py → waap_domain_settings_model.py} +4 -4
- gcore/types/waap/waap_event_statistics.py +15 -0
- gcore/types/waap/waap_firewall_rule.py +78 -0
- gcore/types/waap/waap_get_account_overview_response.py +34 -0
- gcore/types/waap/waap_handshake_page_data.py +25 -0
- gcore/types/waap/waap_handshake_page_data_param.py +25 -0
- gcore/types/waap/waap_insight.py +38 -0
- gcore/types/waap/waap_insight_silence.py +28 -0
- gcore/types/waap/waap_insight_silence_sort_by.py +9 -0
- gcore/types/waap/waap_insight_sort_by.py +20 -0
- gcore/types/waap/waap_insight_status.py +7 -0
- gcore/types/waap/waap_ip_country_attack.py +16 -0
- gcore/types/waap/waap_ip_ddos_info_model.py +23 -0
- gcore/types/waap/waap_ip_info.py +57 -0
- gcore/types/waap/waap_ip_info_counts.py +16 -0
- gcore/types/waap/waap_javascript_disabled_page_data.py +18 -0
- gcore/types/waap/waap_javascript_disabled_page_data_param.py +18 -0
- gcore/types/waap/waap_network_details.py +17 -0
- gcore/types/waap/waap_organization.py +13 -0
- gcore/types/waap/waap_page_type.py +9 -0
- gcore/types/waap/waap_paginated_custom_page_set.py +22 -0
- gcore/types/waap/waap_paginated_ddos_attack.py +22 -0
- gcore/types/waap/waap_paginated_ddos_info.py +22 -0
- gcore/types/waap/waap_paginated_request_summary.py +22 -0
- gcore/types/waap/waap_pattern_matched_tag.py +37 -0
- gcore/types/waap/waap_policy_action.py +7 -0
- gcore/types/waap/waap_policy_mode.py +10 -0
- gcore/types/waap/waap_request_details.py +92 -0
- gcore/types/waap/waap_request_organization.py +13 -0
- gcore/types/waap/waap_request_summary.py +59 -0
- gcore/types/waap/waap_resolution.py +7 -0
- gcore/types/waap/waap_rule_action_type.py +7 -0
- gcore/types/waap/waap_rule_blocked_requests.py +16 -0
- gcore/types/waap/waap_rule_set.py +41 -0
- gcore/types/waap/waap_statistic_item.py +18 -0
- gcore/types/waap/waap_statistics_series.py +16 -0
- gcore/types/waap/waap_tag.py +16 -0
- gcore/types/waap/waap_time_series_attack.py +23 -0
- gcore/types/waap/waap_top_session.py +24 -0
- gcore/types/waap/waap_top_url.py +13 -0
- gcore/types/waap/waap_top_user_agent.py +13 -0
- gcore/types/waap/waap_traffic_metrics.py +68 -0
- gcore/types/waap/waap_traffic_type.py +28 -0
- gcore/types/waap/waap_user_agent_details.py +40 -0
- {gcore-0.2.0.dist-info → gcore-0.4.0.dist-info}/METADATA +40 -3
- {gcore-0.2.0.dist-info → gcore-0.4.0.dist-info}/RECORD +312 -149
- gcore/types/cloud/baremetal/flavor_list_suitable_params.py +0 -22
- gcore/types/cloud/instances/flavor_list_for_resize_params.py +0 -16
- gcore/types/cloud/instances/flavor_list_suitable_params.py +0 -56
- {gcore-0.2.0.dist-info → gcore-0.4.0.dist-info}/WHEEL +0 -0
- {gcore-0.2.0.dist-info → gcore-0.4.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,92 @@
|
|
|
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 Literal
|
|
5
|
+
|
|
6
|
+
from ..._models import BaseModel
|
|
7
|
+
from .waap_common_tag import WaapCommonTag
|
|
8
|
+
from .waap_network_details import WaapNetworkDetails
|
|
9
|
+
from .waap_user_agent_details import WaapUserAgentDetails
|
|
10
|
+
from .waap_pattern_matched_tag import WaapPatternMatchedTag
|
|
11
|
+
|
|
12
|
+
__all__ = ["WaapRequestDetails"]
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class WaapRequestDetails(BaseModel):
|
|
16
|
+
id: str
|
|
17
|
+
"""Request ID"""
|
|
18
|
+
|
|
19
|
+
action: str
|
|
20
|
+
"""Request action"""
|
|
21
|
+
|
|
22
|
+
common_tags: List[WaapCommonTag]
|
|
23
|
+
"""List of common tags"""
|
|
24
|
+
|
|
25
|
+
content_type: str
|
|
26
|
+
"""Content type of request"""
|
|
27
|
+
|
|
28
|
+
domain: str
|
|
29
|
+
"""Domain name"""
|
|
30
|
+
|
|
31
|
+
http_status_code: int
|
|
32
|
+
"""Status code for http request"""
|
|
33
|
+
|
|
34
|
+
http_version: str
|
|
35
|
+
"""HTTP version of request"""
|
|
36
|
+
|
|
37
|
+
incident_id: str
|
|
38
|
+
"""ID of challenge that was generated"""
|
|
39
|
+
|
|
40
|
+
method: str
|
|
41
|
+
"""Request method"""
|
|
42
|
+
|
|
43
|
+
network: WaapNetworkDetails
|
|
44
|
+
"""Network details"""
|
|
45
|
+
|
|
46
|
+
path: str
|
|
47
|
+
"""Request path"""
|
|
48
|
+
|
|
49
|
+
pattern_matched_tags: List[WaapPatternMatchedTag]
|
|
50
|
+
"""List of shield tags"""
|
|
51
|
+
|
|
52
|
+
query_string: str
|
|
53
|
+
"""The query string of the request"""
|
|
54
|
+
|
|
55
|
+
reference_id: str
|
|
56
|
+
"""Reference ID to identify user sanction"""
|
|
57
|
+
|
|
58
|
+
request_headers: object
|
|
59
|
+
"""HTTP request headers"""
|
|
60
|
+
|
|
61
|
+
request_time: str
|
|
62
|
+
"""The time of the request"""
|
|
63
|
+
|
|
64
|
+
request_type: str
|
|
65
|
+
"""The type of the request that generated an event"""
|
|
66
|
+
|
|
67
|
+
requested_domain: str
|
|
68
|
+
"""The real domain name"""
|
|
69
|
+
|
|
70
|
+
response_time: str
|
|
71
|
+
"""Time took to process all request"""
|
|
72
|
+
|
|
73
|
+
result: Literal["passed", "blocked", "suppressed", ""]
|
|
74
|
+
"""The result of a request"""
|
|
75
|
+
|
|
76
|
+
rule_id: str
|
|
77
|
+
"""ID of the triggered rule"""
|
|
78
|
+
|
|
79
|
+
rule_name: str
|
|
80
|
+
"""Name of the triggered rule"""
|
|
81
|
+
|
|
82
|
+
scheme: str
|
|
83
|
+
"""The HTTP scheme of the request that generated an event"""
|
|
84
|
+
|
|
85
|
+
session_request_count: str
|
|
86
|
+
"""The number requests in session"""
|
|
87
|
+
|
|
88
|
+
traffic_types: List[str]
|
|
89
|
+
"""List of traffic types"""
|
|
90
|
+
|
|
91
|
+
user_agent: WaapUserAgentDetails
|
|
92
|
+
"""User agent details"""
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from ..._models import BaseModel
|
|
4
|
+
|
|
5
|
+
__all__ = ["WaapRequestOrganization"]
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class WaapRequestOrganization(BaseModel):
|
|
9
|
+
name: str
|
|
10
|
+
"""Organization name"""
|
|
11
|
+
|
|
12
|
+
subnet: str
|
|
13
|
+
"""Network range"""
|
|
@@ -0,0 +1,59 @@
|
|
|
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__ = ["WaapRequestSummary"]
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class WaapRequestSummary(BaseModel):
|
|
11
|
+
id: str
|
|
12
|
+
"""Request's unique id"""
|
|
13
|
+
|
|
14
|
+
action: str
|
|
15
|
+
"""Action of the triggered rule"""
|
|
16
|
+
|
|
17
|
+
client_ip: str
|
|
18
|
+
"""Client's IP address."""
|
|
19
|
+
|
|
20
|
+
country: str
|
|
21
|
+
"""Country code"""
|
|
22
|
+
|
|
23
|
+
domain: str
|
|
24
|
+
"""Domain name"""
|
|
25
|
+
|
|
26
|
+
method: str
|
|
27
|
+
"""HTTP method"""
|
|
28
|
+
|
|
29
|
+
organization: str
|
|
30
|
+
"""Organization"""
|
|
31
|
+
|
|
32
|
+
path: str
|
|
33
|
+
"""Request path"""
|
|
34
|
+
|
|
35
|
+
reference_id: str
|
|
36
|
+
"""The reference ID to a sanction that was given to a user."""
|
|
37
|
+
|
|
38
|
+
request_time: int
|
|
39
|
+
"""The UNIX timestamp in ms of the date a set of traffic counters was recorded"""
|
|
40
|
+
|
|
41
|
+
result: Literal["passed", "blocked", "suppressed", ""]
|
|
42
|
+
|
|
43
|
+
rule_id: str
|
|
44
|
+
"""The ID of the triggered rule."""
|
|
45
|
+
|
|
46
|
+
rule_name: str
|
|
47
|
+
"""Name of the triggered rule"""
|
|
48
|
+
|
|
49
|
+
status_code: int
|
|
50
|
+
"""Status code for http request"""
|
|
51
|
+
|
|
52
|
+
traffic_types: str
|
|
53
|
+
"""Comma separated list of traffic types."""
|
|
54
|
+
|
|
55
|
+
user_agent: str
|
|
56
|
+
"""User agent"""
|
|
57
|
+
|
|
58
|
+
user_agent_client: str
|
|
59
|
+
"""Client from parsed User agent header"""
|
|
@@ -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__ = ["WaapRuleActionType"]
|
|
6
|
+
|
|
7
|
+
WaapRuleActionType: TypeAlias = Literal["allow", "block", "captcha", "handshake", "monitor", "tag"]
|
|
@@ -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__ = ["WaapRuleBlockedRequests"]
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class WaapRuleBlockedRequests(BaseModel):
|
|
9
|
+
action: str
|
|
10
|
+
"""The action taken by the rule"""
|
|
11
|
+
|
|
12
|
+
count: int
|
|
13
|
+
"""The number of requests blocked by the rule"""
|
|
14
|
+
|
|
15
|
+
rule_name: str
|
|
16
|
+
"""The name of the rule that blocked the request"""
|
|
@@ -0,0 +1,41 @@
|
|
|
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_domain_policy import WaapDomainPolicy
|
|
7
|
+
|
|
8
|
+
__all__ = ["WaapRuleSet", "Tag"]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class Tag(BaseModel):
|
|
12
|
+
id: int
|
|
13
|
+
"""Identifier of the tag."""
|
|
14
|
+
|
|
15
|
+
description: str
|
|
16
|
+
"""Detailed description of the tag."""
|
|
17
|
+
|
|
18
|
+
name: str
|
|
19
|
+
"""Name of the tag."""
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class WaapRuleSet(BaseModel):
|
|
23
|
+
id: int
|
|
24
|
+
"""Identifier of the rule set."""
|
|
25
|
+
|
|
26
|
+
description: str
|
|
27
|
+
"""Detailed description of the rule set."""
|
|
28
|
+
|
|
29
|
+
is_active: bool
|
|
30
|
+
"""Indicates if the rule set is currently active."""
|
|
31
|
+
|
|
32
|
+
name: str
|
|
33
|
+
"""Name of the rule set."""
|
|
34
|
+
|
|
35
|
+
tags: List[Tag]
|
|
36
|
+
"""Collection of tags associated with the rule set."""
|
|
37
|
+
|
|
38
|
+
resource_slug: Optional[str] = None
|
|
39
|
+
"""The resource slug associated with the rule set."""
|
|
40
|
+
|
|
41
|
+
rules: Optional[List[WaapDomainPolicy]] = None
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from datetime import datetime
|
|
4
|
+
|
|
5
|
+
from ..._models import BaseModel
|
|
6
|
+
|
|
7
|
+
__all__ = ["WaapStatisticItem"]
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class WaapStatisticItem(BaseModel):
|
|
11
|
+
date_time: datetime
|
|
12
|
+
"""The date and time for the statistic in ISO 8601 format"""
|
|
13
|
+
|
|
14
|
+
value: int
|
|
15
|
+
"""The value for the statistic.
|
|
16
|
+
|
|
17
|
+
If there is no data for the given time, the value will be 0.
|
|
18
|
+
"""
|
|
@@ -0,0 +1,16 @@
|
|
|
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_statistic_item import WaapStatisticItem
|
|
7
|
+
|
|
8
|
+
__all__ = ["WaapStatisticsSeries"]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class WaapStatisticsSeries(BaseModel):
|
|
12
|
+
total_bytes: Optional[List[WaapStatisticItem]] = None
|
|
13
|
+
"""Will be returned if `total_bytes` is requested in the metrics parameter"""
|
|
14
|
+
|
|
15
|
+
total_requests: Optional[List[WaapStatisticItem]] = None
|
|
16
|
+
"""Will be included if `total_requests` is requested in the metrics parameter"""
|
|
@@ -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__ = ["WaapTag"]
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class WaapTag(BaseModel):
|
|
9
|
+
description: str
|
|
10
|
+
"""A tag's human readable description"""
|
|
11
|
+
|
|
12
|
+
name: str
|
|
13
|
+
"""The name of a tag that should be used in a WAAP rule condition"""
|
|
14
|
+
|
|
15
|
+
readable_name: str
|
|
16
|
+
"""The display name of the tag"""
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import List
|
|
4
|
+
|
|
5
|
+
from ..._models import BaseModel
|
|
6
|
+
|
|
7
|
+
__all__ = ["WaapTimeSeriesAttack", "Value"]
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Value(BaseModel):
|
|
11
|
+
count: int
|
|
12
|
+
"""The number of attacks"""
|
|
13
|
+
|
|
14
|
+
timestamp: int
|
|
15
|
+
"""The timestamp of the time series item as a POSIX timestamp"""
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class WaapTimeSeriesAttack(BaseModel):
|
|
19
|
+
attack_type: str
|
|
20
|
+
"""The type of attack"""
|
|
21
|
+
|
|
22
|
+
values: List[Value]
|
|
23
|
+
"""The time series data"""
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from datetime import datetime
|
|
4
|
+
|
|
5
|
+
from ..._models import BaseModel
|
|
6
|
+
|
|
7
|
+
__all__ = ["WaapTopSession"]
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class WaapTopSession(BaseModel):
|
|
11
|
+
blocked: int
|
|
12
|
+
"""The number of blocked requests in the session"""
|
|
13
|
+
|
|
14
|
+
duration: float
|
|
15
|
+
"""The duration of the session in seconds"""
|
|
16
|
+
|
|
17
|
+
requests: int
|
|
18
|
+
"""The number of requests in the session"""
|
|
19
|
+
|
|
20
|
+
session_id: str
|
|
21
|
+
"""The session ID"""
|
|
22
|
+
|
|
23
|
+
start_time: datetime
|
|
24
|
+
"""The start time of the session as a POSIX timestamp"""
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from ..._models import BaseModel
|
|
4
|
+
|
|
5
|
+
__all__ = ["WaapTopURL"]
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class WaapTopURL(BaseModel):
|
|
9
|
+
count: int
|
|
10
|
+
"""The number of attacks to the URL"""
|
|
11
|
+
|
|
12
|
+
url: str
|
|
13
|
+
"""The URL that was attacked"""
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from ..._models import BaseModel
|
|
4
|
+
|
|
5
|
+
__all__ = ["WaapTopUserAgent"]
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class WaapTopUserAgent(BaseModel):
|
|
9
|
+
count: int
|
|
10
|
+
"""The number of requests made with the user agent"""
|
|
11
|
+
|
|
12
|
+
user_agent: str
|
|
13
|
+
"""The user agent that was used"""
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import Optional
|
|
4
|
+
|
|
5
|
+
from pydantic import Field as FieldInfo
|
|
6
|
+
|
|
7
|
+
from ..._models import BaseModel
|
|
8
|
+
|
|
9
|
+
__all__ = ["WaapTrafficMetrics"]
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class WaapTrafficMetrics(BaseModel):
|
|
13
|
+
timestamp: int
|
|
14
|
+
"""UNIX timestamp indicating when the traffic data was recorded"""
|
|
15
|
+
|
|
16
|
+
ajax: Optional[int] = None
|
|
17
|
+
"""Number of AJAX requests made"""
|
|
18
|
+
|
|
19
|
+
api: Optional[int] = None
|
|
20
|
+
"""Number of API requests made"""
|
|
21
|
+
|
|
22
|
+
custom_allowed: Optional[int] = FieldInfo(alias="customAllowed", default=None)
|
|
23
|
+
"""Number of requests allowed through custom rules"""
|
|
24
|
+
|
|
25
|
+
custom_blocked: Optional[int] = FieldInfo(alias="customBlocked", default=None)
|
|
26
|
+
"""Number of requests blocked due to custom rules"""
|
|
27
|
+
|
|
28
|
+
ddos_blocked: Optional[int] = FieldInfo(alias="ddosBlocked", default=None)
|
|
29
|
+
"""Number of DDoS attack attempts successfully blocked"""
|
|
30
|
+
|
|
31
|
+
monitored: Optional[int] = None
|
|
32
|
+
"""Number of requests triggering monitoring actions"""
|
|
33
|
+
|
|
34
|
+
origin2xx: Optional[int] = None
|
|
35
|
+
"""Number of successful HTTP 2xx responses from the origin server"""
|
|
36
|
+
|
|
37
|
+
origin3xx: Optional[int] = None
|
|
38
|
+
"""Number of HTTP 3xx redirects issued by the origin server"""
|
|
39
|
+
|
|
40
|
+
origin_error4xx: Optional[int] = FieldInfo(alias="originError4xx", default=None)
|
|
41
|
+
"""Number of HTTP 4xx errors from the origin server"""
|
|
42
|
+
|
|
43
|
+
origin_error5xx: Optional[int] = FieldInfo(alias="originError5xx", default=None)
|
|
44
|
+
"""Number of HTTP 5xx errors from the origin server"""
|
|
45
|
+
|
|
46
|
+
origin_timeout: Optional[int] = FieldInfo(alias="originTimeout", default=None)
|
|
47
|
+
"""Number of timeouts experienced at the origin server"""
|
|
48
|
+
|
|
49
|
+
passed_to_origin: Optional[int] = FieldInfo(alias="passedToOrigin", default=None)
|
|
50
|
+
"""Number of requests served directly by the origin server"""
|
|
51
|
+
|
|
52
|
+
policy_allowed: Optional[int] = FieldInfo(alias="policyAllowed", default=None)
|
|
53
|
+
"""Number of requests allowed by security policies"""
|
|
54
|
+
|
|
55
|
+
policy_blocked: Optional[int] = FieldInfo(alias="policyBlocked", default=None)
|
|
56
|
+
"""Number of requests blocked by security policies"""
|
|
57
|
+
|
|
58
|
+
response_time: Optional[int] = FieldInfo(alias="responseTime", default=None)
|
|
59
|
+
"""Average origin server response time in milliseconds"""
|
|
60
|
+
|
|
61
|
+
static: Optional[int] = None
|
|
62
|
+
"""Number of static asset requests"""
|
|
63
|
+
|
|
64
|
+
total: Optional[int] = None
|
|
65
|
+
"""Total number of requests"""
|
|
66
|
+
|
|
67
|
+
uncategorized: Optional[int] = None
|
|
68
|
+
"""Requests resulting in neither blocks nor sanctions"""
|
|
@@ -0,0 +1,28 @@
|
|
|
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__ = ["WaapTrafficType"]
|
|
6
|
+
|
|
7
|
+
WaapTrafficType: TypeAlias = Literal[
|
|
8
|
+
"policy_allowed",
|
|
9
|
+
"policy_blocked",
|
|
10
|
+
"custom_rule_allowed",
|
|
11
|
+
"custom_blocked",
|
|
12
|
+
"legit_requests",
|
|
13
|
+
"sanctioned",
|
|
14
|
+
"dynamic",
|
|
15
|
+
"api",
|
|
16
|
+
"static",
|
|
17
|
+
"ajax",
|
|
18
|
+
"redirects",
|
|
19
|
+
"monitor",
|
|
20
|
+
"err_40x",
|
|
21
|
+
"err_50x",
|
|
22
|
+
"passed_to_origin",
|
|
23
|
+
"timeout",
|
|
24
|
+
"other",
|
|
25
|
+
"ddos",
|
|
26
|
+
"legit",
|
|
27
|
+
"monitored",
|
|
28
|
+
]
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from ..._models import BaseModel
|
|
4
|
+
|
|
5
|
+
__all__ = ["WaapUserAgentDetails"]
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class WaapUserAgentDetails(BaseModel):
|
|
9
|
+
base_browser: str
|
|
10
|
+
"""User agent browser"""
|
|
11
|
+
|
|
12
|
+
base_browser_version: str
|
|
13
|
+
"""User agent browser version"""
|
|
14
|
+
|
|
15
|
+
client: str
|
|
16
|
+
"""Client from User agent header"""
|
|
17
|
+
|
|
18
|
+
client_type: str
|
|
19
|
+
"""User agent client type"""
|
|
20
|
+
|
|
21
|
+
client_version: str
|
|
22
|
+
"""User agent client version"""
|
|
23
|
+
|
|
24
|
+
cpu: str
|
|
25
|
+
"""User agent cpu"""
|
|
26
|
+
|
|
27
|
+
device: str
|
|
28
|
+
"""User agent device"""
|
|
29
|
+
|
|
30
|
+
device_type: str
|
|
31
|
+
"""User agent device type"""
|
|
32
|
+
|
|
33
|
+
full_string: str
|
|
34
|
+
"""User agent"""
|
|
35
|
+
|
|
36
|
+
os: str
|
|
37
|
+
"""User agent os"""
|
|
38
|
+
|
|
39
|
+
rendering_engine: str
|
|
40
|
+
"""User agent engine"""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: gcore
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.0
|
|
4
4
|
Summary: The official Python library for the gcore API
|
|
5
5
|
Project-URL: Homepage, https://github.com/G-Core/gcore-python
|
|
6
6
|
Project-URL: Repository, https://github.com/G-Core/gcore-python
|
|
@@ -27,11 +27,14 @@ Requires-Dist: httpx<1,>=0.23.0
|
|
|
27
27
|
Requires-Dist: pydantic<3,>=1.9.0
|
|
28
28
|
Requires-Dist: sniffio
|
|
29
29
|
Requires-Dist: typing-extensions<5,>=4.10
|
|
30
|
+
Provides-Extra: aiohttp
|
|
31
|
+
Requires-Dist: aiohttp; extra == 'aiohttp'
|
|
32
|
+
Requires-Dist: httpx-aiohttp>=0.1.6; extra == 'aiohttp'
|
|
30
33
|
Description-Content-Type: text/markdown
|
|
31
34
|
|
|
32
35
|
# Gcore Python API library
|
|
33
36
|
|
|
34
|
-
[](https://pypi.org/project/gcore/)
|
|
37
|
+
[>)](https://pypi.org/project/gcore/)
|
|
35
38
|
|
|
36
39
|
The Gcore Python library provides convenient access to the Gcore REST API from any Python 3.8+
|
|
37
40
|
application. The library includes type definitions for all request params and response fields,
|
|
@@ -99,6 +102,40 @@ asyncio.run(main())
|
|
|
99
102
|
|
|
100
103
|
Functionality between the synchronous and asynchronous clients is otherwise identical.
|
|
101
104
|
|
|
105
|
+
### With aiohttp
|
|
106
|
+
|
|
107
|
+
By default, the async client uses `httpx` for HTTP requests. However, for improved concurrency performance you may also use `aiohttp` as the HTTP backend.
|
|
108
|
+
|
|
109
|
+
You can enable this by installing `aiohttp`:
|
|
110
|
+
|
|
111
|
+
```sh
|
|
112
|
+
# install from PyPI
|
|
113
|
+
pip install gcore[aiohttp]
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:
|
|
117
|
+
|
|
118
|
+
```python
|
|
119
|
+
import os
|
|
120
|
+
import asyncio
|
|
121
|
+
from gcore import DefaultAioHttpClient
|
|
122
|
+
from gcore import AsyncGcore
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
async def main() -> None:
|
|
126
|
+
async with AsyncGcore(
|
|
127
|
+
api_key=os.environ.get("GCORE_API_KEY"), # This is the default and can be omitted
|
|
128
|
+
http_client=DefaultAioHttpClient(),
|
|
129
|
+
) as client:
|
|
130
|
+
project = await client.cloud.projects.create(
|
|
131
|
+
name="New Project",
|
|
132
|
+
)
|
|
133
|
+
print(project.id)
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
asyncio.run(main())
|
|
137
|
+
```
|
|
138
|
+
|
|
102
139
|
## Using types
|
|
103
140
|
|
|
104
141
|
Nested request parameters are [TypedDicts](https://docs.python.org/3/library/typing.html#typing.TypedDict). Responses are [Pydantic models](https://docs.pydantic.dev) which also provide helper methods for things like:
|
|
@@ -283,7 +320,7 @@ client.with_options(max_retries=5).cloud.projects.create(
|
|
|
283
320
|
### Timeouts
|
|
284
321
|
|
|
285
322
|
By default requests time out after 1 minute. You can configure this with a `timeout` option,
|
|
286
|
-
which accepts a float or an [`httpx.Timeout`](https://www.python-httpx.org/advanced/#fine-tuning-the-configuration) object:
|
|
323
|
+
which accepts a float or an [`httpx.Timeout`](https://www.python-httpx.org/advanced/timeouts/#fine-tuning-the-configuration) object:
|
|
287
324
|
|
|
288
325
|
```python
|
|
289
326
|
from gcore import Gcore
|