gcore 0.10.0__py3-none-any.whl → 0.12.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/_base_client.py +3 -3
- gcore/_client.py +18 -0
- gcore/_compat.py +48 -48
- gcore/_models.py +41 -41
- gcore/_types.py +35 -1
- gcore/_utils/__init__.py +9 -2
- gcore/_utils/_compat.py +45 -0
- gcore/_utils/_datetime_parse.py +136 -0
- gcore/_utils/_transform.py +11 -1
- gcore/_utils/_typing.py +6 -1
- gcore/_utils/_utils.py +0 -1
- gcore/_version.py +1 -1
- gcore/resources/__init__.py +28 -0
- gcore/resources/cloud/__init__.py +14 -0
- gcore/resources/cloud/audit_logs.py +3 -3
- gcore/resources/cloud/baremetal/images.py +3 -4
- gcore/resources/cloud/baremetal/servers.py +16 -4
- gcore/resources/cloud/cloud.py +32 -0
- gcore/resources/cloud/cost_reports.py +24 -16
- gcore/resources/cloud/file_shares/access_rules.py +2 -2
- gcore/resources/cloud/file_shares/file_shares.py +30 -14
- gcore/resources/cloud/floating_ips.py +196 -4
- gcore/resources/cloud/gpu_baremetal_clusters/flavors.py +1 -1
- gcore/resources/cloud/gpu_baremetal_clusters/gpu_baremetal_clusters.py +166 -190
- gcore/resources/cloud/gpu_baremetal_clusters/servers.py +268 -12
- gcore/resources/cloud/inference/__init__.py +14 -14
- gcore/resources/cloud/inference/applications/__init__.py +47 -0
- gcore/resources/cloud/inference/applications/applications.py +134 -0
- gcore/resources/cloud/inference/applications/deployments.py +649 -0
- gcore/resources/cloud/inference/applications/templates.py +238 -0
- gcore/resources/cloud/inference/deployments/deployments.py +41 -22
- gcore/resources/cloud/inference/inference.py +32 -32
- gcore/resources/cloud/inference/registry_credentials.py +8 -9
- gcore/resources/cloud/instances/images.py +4 -4
- gcore/resources/cloud/instances/instances.py +254 -4
- gcore/resources/cloud/instances/interfaces.py +544 -0
- gcore/resources/cloud/k8s/__init__.py +47 -0
- gcore/resources/cloud/k8s/clusters/__init__.py +47 -0
- gcore/resources/cloud/k8s/clusters/clusters.py +1391 -0
- gcore/resources/cloud/k8s/clusters/nodes.py +291 -0
- gcore/resources/cloud/k8s/clusters/pools/__init__.py +33 -0
- gcore/resources/cloud/k8s/clusters/pools/nodes.py +303 -0
- gcore/resources/cloud/k8s/clusters/pools/pools.py +870 -0
- gcore/resources/cloud/k8s/flavors.py +209 -0
- gcore/resources/cloud/k8s/k8s.py +233 -0
- gcore/resources/cloud/load_balancers/l7_policies/l7_policies.py +11 -12
- gcore/resources/cloud/load_balancers/l7_policies/rules.py +9 -10
- gcore/resources/cloud/load_balancers/listeners.py +18 -18
- gcore/resources/cloud/load_balancers/load_balancers.py +4 -4
- gcore/resources/cloud/load_balancers/pools/health_monitors.py +18 -6
- gcore/resources/cloud/load_balancers/pools/members.py +32 -2
- gcore/resources/cloud/load_balancers/pools/pools.py +32 -8
- gcore/resources/cloud/networks/networks.py +192 -4
- gcore/resources/cloud/networks/subnets.py +140 -8
- gcore/resources/cloud/reserved_fixed_ips/reserved_fixed_ips.py +608 -0
- gcore/resources/cloud/reserved_fixed_ips/vip.py +5 -7
- gcore/resources/cloud/security_groups/security_groups.py +6 -6
- gcore/resources/cloud/tasks.py +46 -46
- gcore/resources/cloud/users/role_assignments.py +5 -4
- gcore/resources/cloud/volumes.py +1125 -223
- gcore/resources/dns/__init__.py +75 -0
- gcore/resources/dns/dns.py +374 -0
- gcore/resources/dns/locations.py +288 -0
- gcore/resources/dns/metrics.py +214 -0
- gcore/resources/dns/pickers/__init__.py +33 -0
- gcore/resources/dns/pickers/pickers.py +167 -0
- gcore/resources/dns/pickers/presets.py +135 -0
- gcore/resources/dns/zones/__init__.py +47 -0
- gcore/resources/{cloud/inference/models.py → dns/zones/dnssec.py} +80 -122
- gcore/resources/dns/zones/rrsets.py +1005 -0
- gcore/resources/dns/zones/zones.py +1493 -0
- gcore/resources/storage/__init__.py +75 -0
- gcore/resources/storage/buckets/__init__.py +61 -0
- gcore/resources/storage/buckets/buckets.py +470 -0
- gcore/resources/storage/buckets/cors.py +265 -0
- gcore/resources/storage/buckets/lifecycle.py +276 -0
- gcore/resources/storage/buckets/policy.py +345 -0
- gcore/resources/storage/credentials.py +221 -0
- gcore/resources/storage/locations.py +190 -0
- gcore/resources/storage/statistics.py +364 -0
- gcore/resources/storage/storage.py +1046 -0
- gcore/resources/streaming/ai_tasks.py +56 -70
- gcore/resources/streaming/playlists.py +18 -18
- gcore/resources/streaming/quality_sets.py +8 -8
- gcore/resources/streaming/statistics.py +4 -122
- gcore/resources/streaming/streams/overlays.py +6 -6
- gcore/resources/streaming/streams/streams.py +40 -64
- gcore/resources/streaming/videos/subtitles.py +32 -30
- gcore/resources/streaming/videos/videos.py +78 -72
- gcore/resources/waap/domains/advanced_rules.py +2 -2
- gcore/resources/waap/domains/api_paths.py +13 -13
- gcore/resources/waap/domains/custom_rules.py +2 -2
- gcore/resources/waap/domains/domains.py +4 -4
- gcore/resources/waap/domains/firewall_rules.py +2 -2
- gcore/resources/waap/domains/insight_silences.py +6 -6
- gcore/resources/waap/domains/insights.py +7 -7
- gcore/resources/waap/domains/statistics.py +47 -47
- gcore/types/cloud/__init__.py +2 -4
- gcore/types/cloud/audit_log_list_params.py +2 -1
- gcore/types/cloud/baremetal/image_list_params.py +3 -2
- gcore/types/cloud/baremetal/server_create_params.py +8 -6
- gcore/types/cloud/baremetal/server_list_params.py +3 -2
- gcore/types/cloud/baremetal/server_rebuild_params.py +2 -0
- gcore/types/cloud/cost_report_get_aggregated_monthly_params.py +35 -31
- gcore/types/cloud/cost_report_get_aggregated_params.py +26 -25
- gcore/types/cloud/cost_report_get_detailed_params.py +26 -25
- gcore/types/cloud/ddos_profile.py +13 -7
- gcore/types/cloud/ddos_profile_field.py +21 -8
- gcore/types/cloud/ddos_profile_option_list.py +7 -6
- gcore/types/cloud/ddos_profile_status.py +2 -2
- gcore/types/cloud/ddos_profile_template.py +7 -3
- gcore/types/cloud/ddos_profile_template_field.py +12 -3
- gcore/types/cloud/file_share.py +2 -2
- gcore/types/cloud/file_share_create_params.py +12 -6
- gcore/types/cloud/floating_ip_list_params.py +3 -2
- gcore/types/cloud/gpu_baremetal_cluster.py +101 -74
- gcore/types/cloud/gpu_baremetal_cluster_create_params.py +76 -93
- gcore/types/cloud/gpu_baremetal_cluster_delete_params.py +17 -10
- gcore/types/cloud/gpu_baremetal_cluster_list_params.py +14 -3
- gcore/types/cloud/gpu_baremetal_cluster_rebuild_params.py +4 -2
- gcore/types/cloud/gpu_baremetal_clusters/__init__.py +6 -0
- gcore/types/cloud/gpu_baremetal_clusters/gpu_baremetal_cluster_server.py +74 -0
- gcore/types/cloud/{gpu_baremetal_cluster_server.py → gpu_baremetal_clusters/gpu_baremetal_cluster_server_v1.py} +10 -10
- gcore/types/cloud/gpu_baremetal_clusters/gpu_baremetal_cluster_server_v1_list.py +16 -0
- gcore/types/cloud/{gpu_baremetal_flavor.py → gpu_baremetal_clusters/gpu_baremetal_flavor.py} +1 -1
- gcore/types/cloud/{gpu_baremetal_flavor_list.py → gpu_baremetal_clusters/gpu_baremetal_flavor_list.py} +1 -1
- gcore/types/cloud/gpu_baremetal_clusters/server_list_params.py +75 -0
- gcore/types/cloud/inference/__init__.py +0 -5
- gcore/types/cloud/inference/applications/__init__.py +12 -0
- gcore/types/cloud/inference/applications/deployment_create_params.py +68 -0
- gcore/types/cloud/inference/applications/deployment_patch_params.py +62 -0
- gcore/types/cloud/inference/applications/inference_application_deployment.py +111 -0
- gcore/types/cloud/inference/applications/inference_application_deployment_list.py +16 -0
- gcore/types/cloud/inference/applications/inference_application_template.py +94 -0
- gcore/types/cloud/inference/applications/inference_application_template_list.py +16 -0
- gcore/types/cloud/inference/deployment_create_params.py +7 -6
- gcore/types/cloud/inference/deployment_update_params.py +7 -6
- gcore/types/cloud/instance_assign_security_group_params.py +4 -2
- gcore/types/cloud/instance_list_params.py +3 -2
- gcore/types/cloud/instance_unassign_security_group_params.py +4 -2
- gcore/types/cloud/instances/image_list_params.py +3 -2
- gcore/types/cloud/k8s/__init__.py +13 -0
- gcore/types/cloud/k8s/cluster_create_params.py +299 -0
- gcore/types/cloud/k8s/cluster_delete_params.py +16 -0
- gcore/types/cloud/k8s/cluster_update_params.py +203 -0
- gcore/types/cloud/k8s/cluster_upgrade_params.py +16 -0
- gcore/types/cloud/k8s/clusters/__init__.py +10 -0
- gcore/types/cloud/k8s/clusters/k8s_cluster_pool.py +66 -0
- gcore/types/cloud/k8s/clusters/k8s_cluster_pool_list.py +16 -0
- gcore/types/cloud/k8s/clusters/node_list_params.py +16 -0
- gcore/types/cloud/k8s/clusters/pool_create_params.py +53 -0
- gcore/types/cloud/k8s/clusters/pool_resize_params.py +18 -0
- gcore/types/cloud/k8s/clusters/pool_update_params.py +34 -0
- gcore/types/cloud/k8s/clusters/pools/__init__.py +5 -0
- gcore/types/cloud/k8s/clusters/pools/node_list_params.py +18 -0
- gcore/types/cloud/k8s/flavor_list_params.py +19 -0
- gcore/types/cloud/k8s/k8s_cluster.py +209 -0
- gcore/types/cloud/k8s/k8s_cluster_certificate.py +13 -0
- gcore/types/cloud/k8s/k8s_cluster_kubeconfig.py +19 -0
- gcore/types/cloud/k8s/k8s_cluster_list.py +16 -0
- gcore/types/cloud/k8s_cluster_version.py +10 -0
- gcore/types/cloud/{gpu_baremetal_cluster_server_list.py → k8s_cluster_version_list.py} +4 -4
- gcore/types/cloud/load_balancer_create_params.py +23 -4
- gcore/types/cloud/load_balancer_list_params.py +3 -2
- gcore/types/cloud/load_balancers/l7_policies/rule_create_params.py +3 -2
- gcore/types/cloud/load_balancers/l7_policies/rule_replace_params.py +3 -2
- gcore/types/cloud/load_balancers/l7_policy_create_params.py +3 -2
- gcore/types/cloud/load_balancers/l7_policy_replace_params.py +3 -2
- gcore/types/cloud/load_balancers/listener_create_params.py +4 -3
- gcore/types/cloud/load_balancers/listener_update_params.py +5 -3
- gcore/types/cloud/load_balancers/pool_create_params.py +19 -1
- gcore/types/cloud/load_balancers/pool_update_params.py +19 -1
- gcore/types/cloud/load_balancers/pools/member_add_params.py +19 -1
- gcore/types/cloud/member.py +19 -1
- gcore/types/cloud/network_list_params.py +3 -2
- gcore/types/cloud/networks/subnet_create_params.py +3 -2
- gcore/types/cloud/networks/subnet_list_params.py +3 -2
- gcore/types/cloud/networks/subnet_update_params.py +3 -2
- gcore/types/cloud/project.py +9 -9
- gcore/types/cloud/reserved_fixed_ips/vip_replace_connected_ports_params.py +3 -2
- gcore/types/cloud/reserved_fixed_ips/vip_update_connected_ports_params.py +3 -2
- gcore/types/cloud/security_group_create_params.py +4 -2
- gcore/types/cloud/security_group_list_params.py +3 -2
- gcore/types/cloud/task_id_list.py +8 -1
- gcore/types/cloud/task_list_params.py +23 -23
- gcore/types/cloud/usage_report_get_params.py +26 -25
- gcore/types/cloud/users/role_assignment.py +2 -1
- gcore/types/cloud/users/role_assignment_create_params.py +4 -2
- gcore/types/cloud/users/role_assignment_update_params.py +4 -2
- gcore/types/cloud/volume_list_params.py +3 -2
- gcore/types/dns/__init__.py +31 -0
- gcore/types/dns/dns_get_account_overview_response.py +21 -0
- gcore/types/dns/dns_label_name.py +13 -0
- gcore/types/dns/dns_location_translations.py +11 -0
- gcore/types/dns/dns_lookup_params.py +15 -0
- gcore/types/dns/dns_lookup_response.py +21 -0
- gcore/types/dns/dns_name_server.py +17 -0
- gcore/types/dns/location_list_continents_response.py +10 -0
- gcore/types/dns/location_list_countries_response.py +10 -0
- gcore/types/dns/location_list_regions_response.py +10 -0
- gcore/types/dns/location_list_response.py +16 -0
- gcore/types/dns/metric_list_params.py +24 -0
- gcore/types/dns/metric_list_response.py +7 -0
- gcore/types/dns/picker_list_response.py +10 -0
- gcore/types/dns/pickers/__init__.py +5 -0
- gcore/types/dns/pickers/preset_list_response.py +10 -0
- gcore/types/dns/zone_check_delegation_status_response.py +20 -0
- gcore/types/dns/zone_create_params.py +59 -0
- gcore/types/dns/zone_create_response.py +13 -0
- gcore/types/dns/zone_export_response.py +11 -0
- gcore/types/dns/zone_get_response.py +106 -0
- gcore/types/dns/zone_get_statistics_params.py +43 -0
- gcore/types/dns/zone_get_statistics_response.py +19 -0
- gcore/types/dns/zone_import_params.py +32 -0
- gcore/types/dns/zone_import_response.py +26 -0
- gcore/types/dns/zone_list_params.py +57 -0
- gcore/types/dns/zone_list_response.py +105 -0
- gcore/types/dns/zone_replace_params.py +61 -0
- gcore/types/dns/zones/__init__.py +15 -0
- gcore/types/dns/zones/dns_failover_log.py +19 -0
- gcore/types/dns/zones/dns_output_rrset.py +123 -0
- gcore/types/dns/zones/dnssec_get_response.py +38 -0
- gcore/types/dns/zones/dnssec_update_params.py +11 -0
- gcore/types/dns/zones/dnssec_update_response.py +38 -0
- gcore/types/dns/zones/rrset_create_params.py +82 -0
- gcore/types/dns/zones/rrset_get_failover_logs_params.py +21 -0
- gcore/types/dns/zones/rrset_get_failover_logs_response.py +15 -0
- gcore/types/dns/zones/rrset_list_params.py +21 -0
- gcore/types/dns/zones/rrset_list_response.py +14 -0
- gcore/types/dns/zones/rrset_replace_params.py +82 -0
- gcore/types/security/client_profile.py +1 -1
- gcore/types/security/profile_create_params.py +2 -2
- gcore/types/security/profile_recreate_params.py +2 -2
- gcore/types/security/profile_replace_params.py +2 -2
- gcore/types/storage/__init__.py +21 -0
- gcore/types/storage/bucket.py +15 -0
- gcore/types/storage/bucket_list_params.py +15 -0
- gcore/types/storage/buckets/__init__.py +9 -0
- gcore/types/storage/buckets/bucket_cors.py +18 -0
- gcore/types/storage/buckets/bucket_policy.py +7 -0
- gcore/types/storage/buckets/cor_create_params.py +17 -0
- gcore/types/storage/buckets/lifecycle_create_params.py +18 -0
- gcore/types/storage/buckets/policy_get_response.py +7 -0
- gcore/types/storage/credential_recreate_params.py +36 -0
- gcore/types/storage/location.py +24 -0
- gcore/types/storage/location_list_params.py +13 -0
- gcore/types/storage/statistic_get_usage_aggregated_params.py +24 -0
- gcore/types/storage/statistic_get_usage_series_params.py +38 -0
- gcore/types/storage/statistic_get_usage_series_response.py +12 -0
- gcore/types/storage/storage.py +101 -0
- gcore/types/storage/storage_create_params.py +44 -0
- gcore/types/storage/storage_list_params.py +39 -0
- gcore/types/storage/storage_restore_params.py +11 -0
- gcore/types/storage/storage_update_params.py +18 -0
- gcore/types/storage/usage_series.py +201 -0
- gcore/types/storage/usage_total.py +54 -0
- gcore/types/streaming/__init__.py +0 -4
- gcore/types/streaming/ai_contentmoderation_hardnudity.py +1 -1
- gcore/types/streaming/ai_contentmoderation_nsfw.py +1 -1
- gcore/types/streaming/ai_contentmoderation_softnudity.py +1 -1
- gcore/types/streaming/ai_contentmoderation_sport.py +1 -1
- gcore/types/streaming/ai_task.py +1 -5
- gcore/types/streaming/ai_task_create_params.py +2 -2
- gcore/types/streaming/ai_task_get_response.py +0 -46
- gcore/types/streaming/clip.py +2 -1
- gcore/types/streaming/create_video_param.py +13 -12
- gcore/types/streaming/max_stream_series.py +5 -5
- gcore/types/streaming/playlist.py +1 -1
- gcore/types/streaming/playlist_create_params.py +1 -1
- gcore/types/streaming/playlist_update_params.py +1 -1
- gcore/types/streaming/playlist_video.py +13 -12
- gcore/types/streaming/storage_series.py +5 -5
- gcore/types/streaming/stream.py +86 -49
- gcore/types/streaming/stream_create_clip_params.py +2 -1
- gcore/types/streaming/stream_create_params.py +9 -23
- gcore/types/streaming/stream_series.py +5 -5
- gcore/types/streaming/stream_update_params.py +9 -23
- gcore/types/streaming/video.py +53 -42
- gcore/types/streaming/video_update_params.py +13 -12
- gcore/types/streaming/vod_statistics_series.py +5 -5
- gcore/types/streaming/vod_total_stream_duration_series.py +3 -3
- gcore/types/waap/domain_list_params.py +1 -1
- gcore/types/waap/domain_update_params.py +1 -1
- gcore/types/waap/domains/advanced_rule_create_params.py +7 -4
- gcore/types/waap/domains/advanced_rule_update_params.py +6 -3
- gcore/types/waap/domains/api_path_create_params.py +4 -3
- gcore/types/waap/domains/api_path_list_params.py +3 -1
- gcore/types/waap/domains/api_path_update_params.py +5 -4
- gcore/types/waap/domains/custom_rule_create_params.py +13 -14
- gcore/types/waap/domains/custom_rule_update_params.py +12 -13
- gcore/types/waap/domains/firewall_rule_create_params.py +3 -2
- gcore/types/waap/domains/firewall_rule_update_params.py +2 -1
- gcore/types/waap/domains/insight_list_params.py +4 -2
- gcore/types/waap/domains/insight_replace_params.py +1 -1
- gcore/types/waap/domains/insight_silence_list_params.py +5 -3
- gcore/types/waap/domains/setting_update_params.py +3 -2
- gcore/types/waap/domains/statistic_get_ddos_info_params.py +6 -9
- gcore/types/waap/domains/statistic_get_events_aggregated_params.py +9 -10
- gcore/types/waap/domains/statistic_get_requests_series_params.py +8 -9
- gcore/types/waap/domains/statistic_get_traffic_series_params.py +6 -9
- gcore/types/waap/domains/waap_advanced_rule.py +3 -2
- gcore/types/waap/domains/waap_api_path.py +4 -4
- gcore/types/waap/domains/waap_api_scan_result.py +2 -2
- gcore/types/waap/domains/waap_custom_rule.py +4 -7
- gcore/types/waap/domains/waap_firewall_rule.py +3 -2
- gcore/types/waap/domains/waap_insight.py +1 -1
- gcore/types/waap/domains/waap_request_details.py +5 -4
- gcore/types/waap/waap_ip_ddos_info_model.py +3 -3
- gcore/types/waap/waap_rule_set.py +1 -1
- {gcore-0.10.0.dist-info → gcore-0.12.0.dist-info}/METADATA +7 -2
- {gcore-0.10.0.dist-info → gcore-0.12.0.dist-info}/RECORD +313 -193
- gcore/types/cloud/inference/inference_model.py +0 -65
- gcore/types/cloud/inference/inference_registry_credentials_create.py +0 -22
- gcore/types/cloud/inference/model_list_params.py +0 -21
- gcore/types/streaming/ai_contentmoderation_casm.py +0 -39
- gcore/types/streaming/ai_contentmoderation_weapon.py +0 -39
- gcore/types/streaming/meet_series.py +0 -23
- gcore/types/streaming/statistic_get_meet_series_params.py +0 -20
- {gcore-0.10.0.dist-info → gcore-0.12.0.dist-info}/WHEEL +0 -0
- {gcore-0.10.0.dist-info → gcore-0.12.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -61,7 +61,7 @@ class Stream(TypedDict, total=False):
|
|
|
61
61
|
entity: video source, video id, parameters, etc. We do not use this field in any
|
|
62
62
|
way when processing the stream. You can store any data in any format (string,
|
|
63
63
|
json, etc), saved as a text string. Example:
|
|
64
|
-
|
|
64
|
+
`client_entity_data = '{ "seq_id": "1234567890", "name": "John Doe", "iat": 1516239022 }'`
|
|
65
65
|
"""
|
|
66
66
|
|
|
67
67
|
client_user_id: int
|
|
@@ -98,22 +98,6 @@ class Stream(TypedDict, total=False):
|
|
|
98
98
|
live streams
|
|
99
99
|
"""
|
|
100
100
|
|
|
101
|
-
low_latency_enabled: bool
|
|
102
|
-
"""
|
|
103
|
-
Deprecated, always returns "true". The only exception is that the attribute can
|
|
104
|
-
only be used by clients that have previously used the old stream format. This
|
|
105
|
-
method is outdated since we've made it easier to manage streams. For your
|
|
106
|
-
convenience, you no longer need to set this parameter at the stage of creating a
|
|
107
|
-
stream. Now all streams are prepared in 2 formats simultaniously: Low Latency
|
|
108
|
-
and Legacy. You can get the desired output format in the attributes
|
|
109
|
-
"`dash_url`", "`hls_cmaf_url`", "`hls_mpegts_url`". Or use them all at once.
|
|
110
|
-
|
|
111
|
-
---
|
|
112
|
-
|
|
113
|
-
Note: Links /streams/{id}/playlist.m3u8 are depricated too. Use value of the
|
|
114
|
-
"`hls_mpegts_url`" attribute instead.
|
|
115
|
-
"""
|
|
116
|
-
|
|
117
101
|
projection: Literal["regular", "vr360", "vr180", "vr360tb"]
|
|
118
102
|
"""
|
|
119
103
|
Visualization mode for 360° streams, how the stream is rendered in our web
|
|
@@ -132,9 +116,10 @@ class Stream(TypedDict, total=False):
|
|
|
132
116
|
Has two possible values:
|
|
133
117
|
|
|
134
118
|
- true – stream is received by PULL method. Use this when need to get stream
|
|
135
|
-
from external server
|
|
119
|
+
from external server.
|
|
136
120
|
- false – stream is received by PUSH method. Use this when need to send stream
|
|
137
|
-
from end-device to our Streaming Platform, i.e. from mobile app
|
|
121
|
+
from end-device to our Streaming Platform, i.e. from your encoder, mobile app
|
|
122
|
+
or OBS Studio.
|
|
138
123
|
"""
|
|
139
124
|
|
|
140
125
|
quality_set_id: int
|
|
@@ -162,8 +147,9 @@ class Stream(TypedDict, total=False):
|
|
|
162
147
|
round robin scheduling. If the first address does not respond, then the next one
|
|
163
148
|
in the list will be automatically requested, returning to the first and so on in
|
|
164
149
|
a circle. Also, if the sucessfully working stream stops sending data, then the
|
|
165
|
-
next one will be selected according to the same scheme. After
|
|
166
|
-
inactivity of your
|
|
167
|
-
|
|
168
|
-
for
|
|
150
|
+
next one will be selected according to the same scheme. After 2 hours of
|
|
151
|
+
inactivity of your original stream, the system stops PULL requests and the
|
|
152
|
+
stream is deactivated (the "active" field switches to "false"). Please, note
|
|
153
|
+
that this field is for PULL only, so is not suitable for PUSH. Look at fields
|
|
154
|
+
"`push_url`" and "`push_url_srt`" from GET method.
|
|
169
155
|
"""
|
gcore/types/streaming/video.py
CHANGED
|
@@ -32,41 +32,64 @@ class ConvertedVideo(BaseModel):
|
|
|
32
32
|
- /videos/{`client_id`}\\__{slug}/{filename}.mp4
|
|
33
33
|
- /videos/{`client_id`}\\__{slug}/{filename}.mp4/download
|
|
34
34
|
- /videos/{`client_id`}\\__{slug}/{filename}.mp4/download={`custom_filename`} The
|
|
35
|
-
first option returns the file as is.
|
|
36
|
-
header that directly tells browsers to download the file instead of playing it
|
|
37
|
-
in the browser.
|
|
35
|
+
first option returns the file as is. Response will be:
|
|
38
36
|
|
|
39
37
|
```
|
|
40
|
-
|
|
38
|
+
GET .mp4
|
|
39
|
+
...
|
|
40
|
+
content-type: video/mp4
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
The second option with /download will respond with HTTP response header that
|
|
44
|
+
directly tells browsers to download the file instead of playing it in the
|
|
45
|
+
browser:
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
GET .mp4/download
|
|
49
|
+
...
|
|
50
|
+
content-type: video/mp4
|
|
51
|
+
content-disposition: attachment
|
|
52
|
+
access-control-expose-headers: Content-Disposition
|
|
41
53
|
```
|
|
42
54
|
|
|
43
55
|
The third option allows you to set a custom name for the file being downloaded.
|
|
44
56
|
You can optionally specify a custom filename (just name excluding the .mp4
|
|
45
|
-
extension) using the download= query. Filename
|
|
57
|
+
extension) using the download= query. Filename constraints:
|
|
46
58
|
|
|
47
59
|
- Length: 1-255 characters
|
|
48
60
|
- Must NOT include the .mp4 extension (it is added automatically)
|
|
49
61
|
- Allowed characters: a-z, A-Z, 0-9, \\__(underscore), -(dash), .(dot)
|
|
50
|
-
- First character cannot be .(dot)
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
**Default MP4 file name structure** Link to the file {filename} contains
|
|
54
|
-
information about the encoding method using format: `___.mp4`
|
|
55
|
-
|
|
56
|
-
- ```– Internal quality identifier and file version. Please do not use it, can be changed at any time without any notice.
|
|
62
|
+
- First character cannot be .(dot)
|
|
63
|
+
- Example valid filenames: `holiday2025`, `_backup.final`, `clip-v1.2`
|
|
57
64
|
|
|
58
|
-
|
|
59
|
-
|
|
65
|
+
```
|
|
66
|
+
GET .mp4/download={custom_filename}
|
|
67
|
+
...
|
|
68
|
+
content-type: video/mp4
|
|
69
|
+
content-disposition: attachment; filename="{custom_filename}.mp4"
|
|
70
|
+
access-control-expose-headers: Content-Disposition
|
|
71
|
+
```
|
|
60
72
|
|
|
61
|
-
|
|
62
|
-
- ```– Encoding bitrate in Kbps.
|
|
73
|
+
Examples:
|
|
63
74
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
75
|
+
- Video:
|
|
76
|
+
`https://demo-public.gvideo.io/videos/2675_1OFgHZ1FWZNNvx1A/qid3567v1_h264_4050_1080.mp4/download`
|
|
77
|
+
- Video with custom download filename:
|
|
78
|
+
`https://demo-public.gvideo.io/videos/2675_1OFgHZ1FWZNNvx1A/qid3567v1_h264_4050_1080.mp4/download=highlights_v1.1_2025-05-30`
|
|
68
79
|
|
|
69
|
-
|
|
80
|
+
**Default MP4 file name structure** Link to the file {filename} contains
|
|
81
|
+
information about the encoding method using format:
|
|
82
|
+
`<quality_version>_<codec>_<bitrate>_<height>.mp4`
|
|
83
|
+
|
|
84
|
+
- `<quality_version>` – Internal quality identifier and file version. Please do
|
|
85
|
+
not use it, can be changed at any time without any notice.
|
|
86
|
+
- `<codec>` – Codec name that was used to encode the video, or audio codec if it
|
|
87
|
+
is an audio-only file.
|
|
88
|
+
- `<bitrate>` – Encoding bitrate in Kbps.
|
|
89
|
+
- `<height>` – Video height, or word "audio" if it is an audio-only file. Note
|
|
90
|
+
that this link format has been applied since 14.08.2024. If the video entity
|
|
91
|
+
was uploaded earlier, links may have old simplified format. Example:
|
|
92
|
+
`/videos/{client_id}_{slug}/qid3567v1_h264_4050_1080.mp4`
|
|
70
93
|
|
|
71
94
|
**Dynamic speed limiting** This mode sets different limits for different users
|
|
72
95
|
or for different types of content. The speed is adjusted based on requests with
|
|
@@ -88,15 +111,6 @@ class ConvertedVideo(BaseModel):
|
|
|
88
111
|
- ip: The user’s IP address Example:
|
|
89
112
|
`?md5=QX39c77lbQKvYgMMAvpyMQ&expires=1743167062` Read more in Product
|
|
90
113
|
Documentation in Streaming section "Protected temporarily link".
|
|
91
|
-
|
|
92
|
-
**Examples**
|
|
93
|
-
|
|
94
|
-
- Audio-only:
|
|
95
|
-
`` https://demo-public.gvideo.io/videos/`2675_JNnccG5l97XPxsov`/`qid3585v1_aac_128_audio`.mp4 ``
|
|
96
|
-
- Video:
|
|
97
|
-
`` https://demo-public.gvideo.io/videos/`2675_3MlggU4xDb1Ssa5Y`/`qid3567v1_h264_4050_1080`.mp4/download ``
|
|
98
|
-
- Video with custom download filename:
|
|
99
|
-
`` https://demo-public.gvideo.io/videos/`2675_XtMKxzJM6Xt7SBUV`/1080.mp4/download=`highlights_v1`.`1_2025`-05-30 ``
|
|
100
114
|
"""
|
|
101
115
|
|
|
102
116
|
name: Optional[str] = None
|
|
@@ -171,8 +185,8 @@ class Video(BaseModel):
|
|
|
171
185
|
|
|
172
186
|
This URL is a link to the main manifest. But you can also manually specify
|
|
173
187
|
suffix-options that will allow you to change the manifest to your request:
|
|
174
|
-
|
|
175
|
-
|
|
188
|
+
`/videos/{client_id}_{slug}/master[-min-N][-max-N][-(h264|hevc|av1)].mpd` List
|
|
189
|
+
of suffix-options:
|
|
176
190
|
|
|
177
191
|
- [-min-N] – ABR soft limitation of qualities from below.
|
|
178
192
|
- [-max-N] – ABR soft limitation of qualities from above.
|
|
@@ -231,7 +245,7 @@ class Video(BaseModel):
|
|
|
231
245
|
|
|
232
246
|
You can also manually specify suffix-options that will allow you to change the
|
|
233
247
|
manifest to your request:
|
|
234
|
-
|
|
248
|
+
`/videos/{client_id}_{video_slug}/master[-cmaf][-min-N][-max-N][-img][-(h264|hevc|av1)].m3u8`
|
|
235
249
|
List of suffix-options:
|
|
236
250
|
|
|
237
251
|
- [-cmaf] – getting HLS CMAF version of the manifest. Look at the `hls_cmaf_url`
|
|
@@ -270,10 +284,10 @@ class Video(BaseModel):
|
|
|
270
284
|
direct link. Also the video player can be integrated into your web pages using
|
|
271
285
|
the Iframe tag. Example of usage on a web page:
|
|
272
286
|
|
|
273
|
-
<iframe width="100%" height="100%" src="https://player.gvideo.co/videos
|
|
287
|
+
<iframe width="100%" height="100%" src="https://player.gvideo.co/videos/2675_FnlHXwA16ZMxmUr" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
|
|
274
288
|
|
|
275
289
|
There are some link modificators you can specify and add manually:
|
|
276
|
-
- ?`no_low_latency` – player is forced to use non-low-latency streams HLS MPEG
|
|
290
|
+
- ?`no_low_latency` – player is forced to use non-low-latency streams HLS MPEG-TS, instead of MPEG-DASH CMAF or HLS/LL-HLS CMAF.
|
|
277
291
|
- ?t=(integer) – time to start playback from specified point in the video. Applicable for VOD only.
|
|
278
292
|
- ?`sub_lang`=(language) – force subtitles to specific language (2 letters ISO 639 code of a language).
|
|
279
293
|
- Read more in the Product Documentation.
|
|
@@ -312,13 +326,10 @@ class Video(BaseModel):
|
|
|
312
326
|
like viewing an MP4 rendition. The MP4 file becomes available for downloading
|
|
313
327
|
when the video entity "status" changes from "new" to "pending". The file is
|
|
314
328
|
stored for 7 days, after which it will be automatically deleted. Format of URL
|
|
315
|
-
is
|
|
316
|
-
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
- ```– Video height.
|
|
320
|
-
This is a premium feature, available only upon request through your manager or support team.
|
|
321
|
-
```
|
|
329
|
+
is `/videos/<cid>_<slug>/origin_<bitrate>_<height>.mp4` Where:
|
|
330
|
+
- `<bitrate>` – Encoding bitrate in Kbps.
|
|
331
|
+
- `<height>` – Video height. This is a premium feature, available only upon
|
|
332
|
+
request through your manager or support team.
|
|
322
333
|
"""
|
|
323
334
|
|
|
324
335
|
origin_video_duration: Optional[int] = None
|
|
@@ -25,16 +25,16 @@ class VideoUpdateParams(TypedDict, total=False):
|
|
|
25
25
|
attribute of API POST /streaming/ai/transcribe . Example:
|
|
26
26
|
|
|
27
27
|
```
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
auto_transcribe_audio_language: "auto"
|
|
29
|
+
auto_transcribe_audio_language: "ger"
|
|
30
30
|
```
|
|
31
31
|
|
|
32
32
|
More details:
|
|
33
33
|
|
|
34
34
|
- List of AI tasks – API
|
|
35
|
-
[GET /streaming/ai/tasks](
|
|
35
|
+
[GET /streaming/ai/tasks](/docs/api-reference/streaming/ai/get-list-of-ai-tasks)
|
|
36
36
|
- Add subtitles to an exist video – API
|
|
37
|
-
[POST /streaming/videos/{`video_id`}/subtitles](
|
|
37
|
+
[POST /streaming/videos/{`video_id`}/subtitles](/docs/api-reference/streaming/subtitles/add-subtitle).
|
|
38
38
|
"""
|
|
39
39
|
|
|
40
40
|
auto_translate_subtitles_language: Literal["disable", "default", "<language_codes,>"]
|
|
@@ -53,8 +53,8 @@ class VideoUpdateParams(TypedDict, total=False):
|
|
|
53
53
|
subtitle will be generated for each language. Example:
|
|
54
54
|
|
|
55
55
|
```
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
auto_translate_subtitles_language: default
|
|
57
|
+
auto_translate_subtitles_language: eng,fre,ger
|
|
58
58
|
```
|
|
59
59
|
|
|
60
60
|
Please note that subtitle translation is done separately and after
|
|
@@ -95,7 +95,7 @@ class VideoUpdateParams(TypedDict, total=False):
|
|
|
95
95
|
|
|
96
96
|
Will be used as credentials to authenticate a request to download a file
|
|
97
97
|
(specified in "`origin_url`" parameter) on an external server. Syntax:
|
|
98
|
-
`Authorization:
|
|
98
|
+
`Authorization: <auth-scheme> <authorization-parameters>` Examples:
|
|
99
99
|
|
|
100
100
|
- "`origin_http_headers`": "Authorization: Basic ..."
|
|
101
101
|
- "`origin_http_headers`": "Authorization: Bearer ..."
|
|
@@ -104,10 +104,11 @@ class VideoUpdateParams(TypedDict, total=False):
|
|
|
104
104
|
|
|
105
105
|
```
|
|
106
106
|
POST https://api.gcore.com/streaming/videos
|
|
107
|
+
|
|
107
108
|
"video": {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
109
|
+
"name": "IBC 2024 intro.mp4",
|
|
110
|
+
"origin_url": "https://www.googleapis.com/drive/v3/files/...?alt=media",
|
|
111
|
+
"origin_http_headers": "Authorization: Bearer ABC"
|
|
111
112
|
}
|
|
112
113
|
```
|
|
113
114
|
"""
|
|
@@ -128,8 +129,8 @@ class VideoUpdateParams(TypedDict, total=False):
|
|
|
128
129
|
image. Also use attribute "`screenshot_id`" to select poster as a default
|
|
129
130
|
screnshot. Attribute accepts single image as base64-encoded string
|
|
130
131
|
[(RFC 2397 – The "data" URL scheme)](https://www.rfc-editor.org/rfc/rfc2397). In
|
|
131
|
-
format: `data:[];base64
|
|
132
|
-
and file sizes up to 1Mb. Examples:
|
|
132
|
+
format: `data:[<mediatype>];base64,<data>` MIME-types are image/jpeg,
|
|
133
|
+
image/webp, and image/png and file sizes up to 1Mb. Examples:
|
|
133
134
|
|
|
134
135
|
- `data:image/jpeg;base64,/9j/4AA...qf/2Q==`
|
|
135
136
|
- `data:image/png;base64,iVBORw0KGg...ggg==`
|
|
@@ -5,17 +5,17 @@ from typing_extensions import TypeAlias
|
|
|
5
5
|
|
|
6
6
|
from ..._models import BaseModel
|
|
7
7
|
|
|
8
|
-
__all__ = ["VodStatisticsSeries", "
|
|
8
|
+
__all__ = ["VodStatisticsSeries", "VodStatisticsSeriesItem", "VodStatisticsSeriesItemMetrics"]
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
class
|
|
11
|
+
class VodStatisticsSeriesItemMetrics(BaseModel):
|
|
12
12
|
vod: List[int]
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
class
|
|
15
|
+
class VodStatisticsSeriesItem(BaseModel):
|
|
16
16
|
client: int
|
|
17
17
|
|
|
18
|
-
metrics:
|
|
18
|
+
metrics: VodStatisticsSeriesItemMetrics
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
VodStatisticsSeries: TypeAlias = List[
|
|
21
|
+
VodStatisticsSeries: TypeAlias = List[VodStatisticsSeriesItem]
|
|
@@ -5,10 +5,10 @@ from typing_extensions import TypeAlias
|
|
|
5
5
|
|
|
6
6
|
from ..._models import BaseModel
|
|
7
7
|
|
|
8
|
-
__all__ = ["VodTotalStreamDurationSeries", "
|
|
8
|
+
__all__ = ["VodTotalStreamDurationSeries", "VodTotalStreamDurationSeriesItem"]
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
class
|
|
11
|
+
class VodTotalStreamDurationSeriesItem(BaseModel):
|
|
12
12
|
client: int
|
|
13
13
|
|
|
14
14
|
duration: int
|
|
@@ -19,4 +19,4 @@ class VodTotalStreamDurationSeryItem(BaseModel):
|
|
|
19
19
|
stream_id: Optional[str] = None
|
|
20
20
|
|
|
21
21
|
|
|
22
|
-
VodTotalStreamDurationSeries: TypeAlias = List[
|
|
22
|
+
VodTotalStreamDurationSeries: TypeAlias = List[VodTotalStreamDurationSeriesItem]
|
|
@@ -2,15 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import
|
|
5
|
+
from typing import Optional
|
|
6
6
|
from typing_extensions import Literal, Required, TypedDict
|
|
7
7
|
|
|
8
|
+
from ...._types import SequenceNotStr
|
|
9
|
+
|
|
8
10
|
__all__ = ["AdvancedRuleCreateParams", "Action", "ActionBlock", "ActionTag"]
|
|
9
11
|
|
|
10
12
|
|
|
11
13
|
class AdvancedRuleCreateParams(TypedDict, total=False):
|
|
12
14
|
action: Required[Action]
|
|
13
|
-
"""The action that
|
|
15
|
+
"""The action that the rule takes when triggered"""
|
|
14
16
|
|
|
15
17
|
enabled: Required[bool]
|
|
16
18
|
"""Whether or not the rule is enabled"""
|
|
@@ -45,7 +47,8 @@ class ActionBlock(TypedDict, total=False):
|
|
|
45
47
|
"""How long a rule's block action will apply to subsequent requests.
|
|
46
48
|
|
|
47
49
|
Can be specified in seconds or by using a numeral followed by 's', 'm', 'h', or
|
|
48
|
-
'd' to represent time format (seconds, minutes, hours, or days)
|
|
50
|
+
'd' to represent time format (seconds, minutes, hours, or days). Empty time
|
|
51
|
+
intervals are not allowed.
|
|
49
52
|
"""
|
|
50
53
|
|
|
51
54
|
status_code: Optional[Literal[403, 405, 418, 429]]
|
|
@@ -53,7 +56,7 @@ class ActionBlock(TypedDict, total=False):
|
|
|
53
56
|
|
|
54
57
|
|
|
55
58
|
class ActionTag(TypedDict, total=False):
|
|
56
|
-
tags: Required[
|
|
59
|
+
tags: Required[SequenceNotStr[str]]
|
|
57
60
|
"""The list of user defined tags to tag the request with"""
|
|
58
61
|
|
|
59
62
|
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import
|
|
5
|
+
from typing import Optional
|
|
6
6
|
from typing_extensions import Literal, Required, TypedDict
|
|
7
7
|
|
|
8
|
+
from ...._types import SequenceNotStr
|
|
9
|
+
|
|
8
10
|
__all__ = ["AdvancedRuleUpdateParams", "Action", "ActionBlock", "ActionTag"]
|
|
9
11
|
|
|
10
12
|
|
|
@@ -48,7 +50,8 @@ class ActionBlock(TypedDict, total=False):
|
|
|
48
50
|
"""How long a rule's block action will apply to subsequent requests.
|
|
49
51
|
|
|
50
52
|
Can be specified in seconds or by using a numeral followed by 's', 'm', 'h', or
|
|
51
|
-
'd' to represent time format (seconds, minutes, hours, or days)
|
|
53
|
+
'd' to represent time format (seconds, minutes, hours, or days). Empty time
|
|
54
|
+
intervals are not allowed.
|
|
52
55
|
"""
|
|
53
56
|
|
|
54
57
|
status_code: Optional[Literal[403, 405, 418, 429]]
|
|
@@ -56,7 +59,7 @@ class ActionBlock(TypedDict, total=False):
|
|
|
56
59
|
|
|
57
60
|
|
|
58
61
|
class ActionTag(TypedDict, total=False):
|
|
59
|
-
tags: Required[
|
|
62
|
+
tags: Required[SequenceNotStr[str]]
|
|
60
63
|
"""The list of user defined tags to tag the request with"""
|
|
61
64
|
|
|
62
65
|
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import List
|
|
6
5
|
from typing_extensions import Literal, Required, TypedDict
|
|
7
6
|
|
|
7
|
+
from ...._types import SequenceNotStr
|
|
8
|
+
|
|
8
9
|
__all__ = ["APIPathCreateParams"]
|
|
9
10
|
|
|
10
11
|
|
|
@@ -21,11 +22,11 @@ class APIPathCreateParams(TypedDict, total=False):
|
|
|
21
22
|
brackets
|
|
22
23
|
"""
|
|
23
24
|
|
|
24
|
-
api_groups:
|
|
25
|
+
api_groups: SequenceNotStr[str]
|
|
25
26
|
"""An array of api groups associated with the API path"""
|
|
26
27
|
|
|
27
28
|
api_version: str
|
|
28
29
|
"""The API version"""
|
|
29
30
|
|
|
30
|
-
tags:
|
|
31
|
+
tags: SequenceNotStr[str]
|
|
31
32
|
"""An array of tags associated with the API path"""
|
|
@@ -5,6 +5,8 @@ from __future__ import annotations
|
|
|
5
5
|
from typing import List, Optional
|
|
6
6
|
from typing_extensions import Literal, TypedDict
|
|
7
7
|
|
|
8
|
+
from ...._types import SequenceNotStr
|
|
9
|
+
|
|
8
10
|
__all__ = ["APIPathListParams"]
|
|
9
11
|
|
|
10
12
|
|
|
@@ -18,7 +20,7 @@ class APIPathListParams(TypedDict, total=False):
|
|
|
18
20
|
http_scheme: Optional[Literal["HTTP", "HTTPS"]]
|
|
19
21
|
"""The different HTTP schemes an API path can have"""
|
|
20
22
|
|
|
21
|
-
ids: Optional[
|
|
23
|
+
ids: Optional[SequenceNotStr[str]]
|
|
22
24
|
"""Filter by the path ID"""
|
|
23
25
|
|
|
24
26
|
limit: int
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import List
|
|
6
5
|
from typing_extensions import Literal, Required, TypedDict
|
|
7
6
|
|
|
7
|
+
from ...._types import SequenceNotStr
|
|
8
|
+
|
|
8
9
|
__all__ = ["APIPathUpdateParams"]
|
|
9
10
|
|
|
10
11
|
|
|
@@ -12,7 +13,7 @@ class APIPathUpdateParams(TypedDict, total=False):
|
|
|
12
13
|
domain_id: Required[int]
|
|
13
14
|
"""The domain ID"""
|
|
14
15
|
|
|
15
|
-
api_groups:
|
|
16
|
+
api_groups: SequenceNotStr[str]
|
|
16
17
|
"""An array of api groups associated with the API path"""
|
|
17
18
|
|
|
18
19
|
path: str
|
|
@@ -23,7 +24,7 @@ class APIPathUpdateParams(TypedDict, total=False):
|
|
|
23
24
|
"""
|
|
24
25
|
|
|
25
26
|
status: Literal["CONFIRMED_API", "POTENTIAL_API", "NOT_API", "DELISTED_API"]
|
|
26
|
-
"""The
|
|
27
|
+
"""The status of the discovered API path"""
|
|
27
28
|
|
|
28
|
-
tags:
|
|
29
|
+
tags: SequenceNotStr[str]
|
|
29
30
|
"""An array of tags associated with the API path"""
|
|
@@ -5,6 +5,8 @@ from __future__ import annotations
|
|
|
5
5
|
from typing import List, Iterable, Optional
|
|
6
6
|
from typing_extensions import Literal, Required, TypedDict
|
|
7
7
|
|
|
8
|
+
from ...._types import SequenceNotStr
|
|
9
|
+
|
|
8
10
|
__all__ = [
|
|
9
11
|
"CustomRuleCreateParams",
|
|
10
12
|
"Action",
|
|
@@ -34,7 +36,7 @@ __all__ = [
|
|
|
34
36
|
|
|
35
37
|
class CustomRuleCreateParams(TypedDict, total=False):
|
|
36
38
|
action: Required[Action]
|
|
37
|
-
"""The action that
|
|
39
|
+
"""The action that the rule takes when triggered"""
|
|
38
40
|
|
|
39
41
|
conditions: Required[Iterable[Condition]]
|
|
40
42
|
"""The conditions required for the WAAP engine to trigger the rule.
|
|
@@ -58,7 +60,8 @@ class ActionBlock(TypedDict, total=False):
|
|
|
58
60
|
"""How long a rule's block action will apply to subsequent requests.
|
|
59
61
|
|
|
60
62
|
Can be specified in seconds or by using a numeral followed by 's', 'm', 'h', or
|
|
61
|
-
'd' to represent time format (seconds, minutes, hours, or days)
|
|
63
|
+
'd' to represent time format (seconds, minutes, hours, or days). Empty time
|
|
64
|
+
intervals are not allowed.
|
|
62
65
|
"""
|
|
63
66
|
|
|
64
67
|
status_code: Optional[Literal[403, 405, 418, 429]]
|
|
@@ -66,7 +69,7 @@ class ActionBlock(TypedDict, total=False):
|
|
|
66
69
|
|
|
67
70
|
|
|
68
71
|
class ActionTag(TypedDict, total=False):
|
|
69
|
-
tags: Required[
|
|
72
|
+
tags: Required[SequenceNotStr[str]]
|
|
70
73
|
"""The list of user defined tags to tag the request with"""
|
|
71
74
|
|
|
72
75
|
|
|
@@ -94,7 +97,7 @@ class Action(TypedDict, total=False):
|
|
|
94
97
|
|
|
95
98
|
|
|
96
99
|
class ConditionContentType(TypedDict, total=False):
|
|
97
|
-
content_type: Required[
|
|
100
|
+
content_type: Required[SequenceNotStr[str]]
|
|
98
101
|
"""The list of content types to match against"""
|
|
99
102
|
|
|
100
103
|
negation: bool
|
|
@@ -102,7 +105,7 @@ class ConditionContentType(TypedDict, total=False):
|
|
|
102
105
|
|
|
103
106
|
|
|
104
107
|
class ConditionCountry(TypedDict, total=False):
|
|
105
|
-
country_code: Required[
|
|
108
|
+
country_code: Required[SequenceNotStr[str]]
|
|
106
109
|
"""
|
|
107
110
|
A list of ISO 3166-1 alpha-2 formatted strings representing the countries to
|
|
108
111
|
match against
|
|
@@ -113,7 +116,7 @@ class ConditionCountry(TypedDict, total=False):
|
|
|
113
116
|
|
|
114
117
|
|
|
115
118
|
class ConditionFileExtension(TypedDict, total=False):
|
|
116
|
-
file_extension: Required[
|
|
119
|
+
file_extension: Required[SequenceNotStr[str]]
|
|
117
120
|
"""The list of file extensions to match against"""
|
|
118
121
|
|
|
119
122
|
negation: bool
|
|
@@ -144,11 +147,7 @@ class ConditionHeaderExists(TypedDict, total=False):
|
|
|
144
147
|
|
|
145
148
|
class ConditionHTTPMethod(TypedDict, total=False):
|
|
146
149
|
http_method: Required[Literal["CONNECT", "DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT", "TRACE"]]
|
|
147
|
-
"""HTTP methods
|
|
148
|
-
|
|
149
|
-
- RFC 7231: Hypertext Transfer Protocol (HTTP/1.1), obsoletes 2616
|
|
150
|
-
- RFC 5789: PATCH Method for HTTP
|
|
151
|
-
"""
|
|
150
|
+
"""HTTP methods of a request"""
|
|
152
151
|
|
|
153
152
|
negation: bool
|
|
154
153
|
"""Whether or not to apply a boolean NOT operation to the rule's condition"""
|
|
@@ -224,7 +223,7 @@ class ConditionRequestRate(TypedDict, total=False):
|
|
|
224
223
|
]
|
|
225
224
|
"""Possible HTTP request methods that can trigger a request rate condition"""
|
|
226
225
|
|
|
227
|
-
ips: Optional[
|
|
226
|
+
ips: Optional[SequenceNotStr[str]]
|
|
228
227
|
"""A list of source IPs that can trigger a request rate condition"""
|
|
229
228
|
|
|
230
229
|
user_defined_tag: Optional[str]
|
|
@@ -265,7 +264,7 @@ class ConditionSessionRequestCount(TypedDict, total=False):
|
|
|
265
264
|
|
|
266
265
|
|
|
267
266
|
class ConditionTags(TypedDict, total=False):
|
|
268
|
-
tags: Required[
|
|
267
|
+
tags: Required[SequenceNotStr[str]]
|
|
269
268
|
"""A list of tags to match against the request tags"""
|
|
270
269
|
|
|
271
270
|
negation: bool
|
|
@@ -303,7 +302,7 @@ class ConditionUserAgent(TypedDict, total=False):
|
|
|
303
302
|
|
|
304
303
|
|
|
305
304
|
class ConditionUserDefinedTags(TypedDict, total=False):
|
|
306
|
-
tags: Required[
|
|
305
|
+
tags: Required[SequenceNotStr[str]]
|
|
307
306
|
"""A list of user-defined tags to match against the request tags"""
|
|
308
307
|
|
|
309
308
|
negation: bool
|