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
|
@@ -16,16 +16,12 @@ __all__ = [
|
|
|
16
16
|
"AITaskGetResponseResultAIResultsTranscribeSubtitle",
|
|
17
17
|
"AITaskGetResponseResultAIResultsContentmoderationSport",
|
|
18
18
|
"AITaskGetResponseResultAIResultsContentmoderationSportFrame",
|
|
19
|
-
"AITaskGetResponseResultAIResultsContentmoderationWeapon",
|
|
20
|
-
"AITaskGetResponseResultAIResultsContentmoderationWeaponFrame",
|
|
21
19
|
"AITaskGetResponseResultAIResultsContentmoderationNsfw",
|
|
22
20
|
"AITaskGetResponseResultAIResultsContentmoderationNsfwFrame",
|
|
23
21
|
"AITaskGetResponseResultAIResultsContentmoderationHardnudity",
|
|
24
22
|
"AITaskGetResponseResultAIResultsContentmoderationHardnudityFrame",
|
|
25
23
|
"AITaskGetResponseResultAIResultsContentmoderationSoftnudity",
|
|
26
24
|
"AITaskGetResponseResultAIResultsContentmoderationSoftnudityFrame",
|
|
27
|
-
"AITaskGetResponseResultAIResultsContentmoderationCasm",
|
|
28
|
-
"AITaskGetResponseResultAIResultsContentmoderationCasmFrame",
|
|
29
25
|
"AITaskGetResponseResultAIResultsFailure",
|
|
30
26
|
]
|
|
31
27
|
|
|
@@ -157,26 +153,6 @@ class AITaskGetResponseResultAIResultsContentmoderationSport(BaseModel):
|
|
|
157
153
|
"""A boolean value whether any sports were detected"""
|
|
158
154
|
|
|
159
155
|
|
|
160
|
-
class AITaskGetResponseResultAIResultsContentmoderationWeaponFrame(BaseModel):
|
|
161
|
-
confidence: Optional[float] = None
|
|
162
|
-
"""Percentage of probability of identifying the object"""
|
|
163
|
-
|
|
164
|
-
frame_number: Optional[int] = FieldInfo(alias="frame-number", default=None)
|
|
165
|
-
"""Video frame number where object was found"""
|
|
166
|
-
|
|
167
|
-
label: Optional[str] = None
|
|
168
|
-
"""Type of detected object"""
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
class AITaskGetResponseResultAIResultsContentmoderationWeapon(BaseModel):
|
|
172
|
-
detection_results: Optional[List[Literal["gun", "heavy weapon", "knife"]]] = None
|
|
173
|
-
|
|
174
|
-
frames: Optional[List[AITaskGetResponseResultAIResultsContentmoderationWeaponFrame]] = None
|
|
175
|
-
|
|
176
|
-
weapon_detected: Optional[bool] = None
|
|
177
|
-
"""A boolean value whether any weapon was detected"""
|
|
178
|
-
|
|
179
|
-
|
|
180
156
|
class AITaskGetResponseResultAIResultsContentmoderationNsfwFrame(BaseModel):
|
|
181
157
|
confidence: Optional[float] = None
|
|
182
158
|
"""Percentage of probability of identifying the object"""
|
|
@@ -271,26 +247,6 @@ class AITaskGetResponseResultAIResultsContentmoderationSoftnudity(BaseModel):
|
|
|
271
247
|
"""A boolean value whether any nudity and other body part was detected"""
|
|
272
248
|
|
|
273
249
|
|
|
274
|
-
class AITaskGetResponseResultAIResultsContentmoderationCasmFrame(BaseModel):
|
|
275
|
-
confidence: Optional[float] = None
|
|
276
|
-
"""Percentage of probability of identifying the object"""
|
|
277
|
-
|
|
278
|
-
frame_number: Optional[int] = FieldInfo(alias="frame-number", default=None)
|
|
279
|
-
"""Video frame number where object was found"""
|
|
280
|
-
|
|
281
|
-
label: Optional[str] = None
|
|
282
|
-
"""Type of detected object"""
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
class AITaskGetResponseResultAIResultsContentmoderationCasm(BaseModel):
|
|
286
|
-
child_pornography_detected: Optional[bool] = None
|
|
287
|
-
"""A boolean value whether child pornography was detected"""
|
|
288
|
-
|
|
289
|
-
detection_results: Optional[List[Literal["0-2", "3-9", "10-19"]]] = None
|
|
290
|
-
|
|
291
|
-
frames: Optional[List[AITaskGetResponseResultAIResultsContentmoderationCasmFrame]] = None
|
|
292
|
-
|
|
293
|
-
|
|
294
250
|
class AITaskGetResponseResultAIResultsFailure(BaseModel):
|
|
295
251
|
error: str
|
|
296
252
|
|
|
@@ -298,11 +254,9 @@ class AITaskGetResponseResultAIResultsFailure(BaseModel):
|
|
|
298
254
|
AITaskGetResponseResult: TypeAlias = Union[
|
|
299
255
|
AITaskGetResponseResultAIResultsTranscribe,
|
|
300
256
|
AITaskGetResponseResultAIResultsContentmoderationSport,
|
|
301
|
-
AITaskGetResponseResultAIResultsContentmoderationWeapon,
|
|
302
257
|
AITaskGetResponseResultAIResultsContentmoderationNsfw,
|
|
303
258
|
AITaskGetResponseResultAIResultsContentmoderationHardnudity,
|
|
304
259
|
AITaskGetResponseResultAIResultsContentmoderationSoftnudity,
|
|
305
|
-
AITaskGetResponseResultAIResultsContentmoderationCasm,
|
|
306
260
|
AITaskGetResponseResultAIResultsFailure,
|
|
307
261
|
]
|
|
308
262
|
|
gcore/types/streaming/clip.py
CHANGED
|
@@ -38,7 +38,8 @@ class Clip(BaseModel):
|
|
|
38
38
|
deleted from memory and is no longer available via the link. You need to create
|
|
39
39
|
a new segment, or use `vod_required: true` attribute. If value is omitted, then
|
|
40
40
|
expiration is counted as +3600 seconds (1 hour) to the end of the clip (i.e.
|
|
41
|
-
`unix timestamp = + + 3600`). Allowed range: 1m <= expiration
|
|
41
|
+
`unix timestamp = <start> + <duration> + 3600`). Allowed range: 1m <= expiration
|
|
42
|
+
<= 4h. Example:
|
|
42
43
|
`24.05.2024 14:00:00 (GMT) + 60 seconds of duration + 3600 seconds of expiration = 24.05.2024 15:01:00 (GMT) is Unix timestamp = 1716562860`
|
|
43
44
|
"""
|
|
44
45
|
|
|
@@ -25,16 +25,16 @@ class CreateVideoParam(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 CreateVideoParam(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 CreateVideoParam(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 CreateVideoParam(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 CreateVideoParam(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__ = ["MaxStreamSeries", "
|
|
8
|
+
__all__ = ["MaxStreamSeries", "MaxStreamSeriesItem", "MaxStreamSeriesItemMetrics"]
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
class
|
|
11
|
+
class MaxStreamSeriesItemMetrics(BaseModel):
|
|
12
12
|
streams: List[int]
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
class
|
|
15
|
+
class MaxStreamSeriesItem(BaseModel):
|
|
16
16
|
client: int
|
|
17
17
|
|
|
18
|
-
metrics:
|
|
18
|
+
metrics: MaxStreamSeriesItemMetrics
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
MaxStreamSeries: TypeAlias = List[
|
|
21
|
+
MaxStreamSeries: TypeAlias = List[MaxStreamSeriesItem]
|
|
@@ -49,7 +49,7 @@ class Playlist(BaseModel):
|
|
|
49
49
|
|
|
50
50
|
This URL is a link to the main manifest. But you can also manually specify
|
|
51
51
|
suffix-options that will allow you to change the manifest to your request:
|
|
52
|
-
|
|
52
|
+
`/playlists/{client_id}_{playlist_id}/master[-cmaf][-min-N][-max-N][-img][-(h264|hevc|av1)].m3u8`
|
|
53
53
|
Please see the details in `hls_url` attribute of /videos/{id} method.
|
|
54
54
|
|
|
55
55
|
Caution. Solely master.m3u8 (and master[-options].m3u8) is officially documented
|
|
@@ -49,7 +49,7 @@ class PlaylistCreateParams(TypedDict, total=False):
|
|
|
49
49
|
|
|
50
50
|
This URL is a link to the main manifest. But you can also manually specify
|
|
51
51
|
suffix-options that will allow you to change the manifest to your request:
|
|
52
|
-
|
|
52
|
+
`/playlists/{client_id}_{playlist_id}/master[-cmaf][-min-N][-max-N][-img][-(h264|hevc|av1)].m3u8`
|
|
53
53
|
Please see the details in `hls_url` attribute of /videos/{id} method.
|
|
54
54
|
|
|
55
55
|
Caution. Solely master.m3u8 (and master[-options].m3u8) is officially documented
|
|
@@ -49,7 +49,7 @@ class PlaylistUpdateParams(TypedDict, total=False):
|
|
|
49
49
|
|
|
50
50
|
This URL is a link to the main manifest. But you can also manually specify
|
|
51
51
|
suffix-options that will allow you to change the manifest to your request:
|
|
52
|
-
|
|
52
|
+
`/playlists/{client_id}_{playlist_id}/master[-cmaf][-min-N][-max-N][-img][-(h264|hevc|av1)].m3u8`
|
|
53
53
|
Please see the details in `hls_url` attribute of /videos/{id} method.
|
|
54
54
|
|
|
55
55
|
Caution. Solely master.m3u8 (and master[-options].m3u8) is officially documented
|
|
@@ -26,16 +26,16 @@ class PlaylistVideo(BaseModel):
|
|
|
26
26
|
attribute of API POST /streaming/ai/transcribe . Example:
|
|
27
27
|
|
|
28
28
|
```
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
auto_transcribe_audio_language: "auto"
|
|
30
|
+
auto_transcribe_audio_language: "ger"
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
More details:
|
|
34
34
|
|
|
35
35
|
- List of AI tasks – API
|
|
36
|
-
[GET /streaming/ai/tasks](
|
|
36
|
+
[GET /streaming/ai/tasks](/docs/api-reference/streaming/ai/get-list-of-ai-tasks)
|
|
37
37
|
- Add subtitles to an exist video – API
|
|
38
|
-
[POST /streaming/videos/{`video_id`}/subtitles](
|
|
38
|
+
[POST /streaming/videos/{`video_id`}/subtitles](/docs/api-reference/streaming/subtitles/add-subtitle).
|
|
39
39
|
"""
|
|
40
40
|
|
|
41
41
|
auto_translate_subtitles_language: Optional[Literal["disable", "default", "<language_codes,>"]] = None
|
|
@@ -54,8 +54,8 @@ class PlaylistVideo(BaseModel):
|
|
|
54
54
|
subtitle will be generated for each language. Example:
|
|
55
55
|
|
|
56
56
|
```
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
auto_translate_subtitles_language: default
|
|
58
|
+
auto_translate_subtitles_language: eng,fre,ger
|
|
59
59
|
```
|
|
60
60
|
|
|
61
61
|
Please note that subtitle translation is done separately and after
|
|
@@ -96,7 +96,7 @@ class PlaylistVideo(BaseModel):
|
|
|
96
96
|
|
|
97
97
|
Will be used as credentials to authenticate a request to download a file
|
|
98
98
|
(specified in "`origin_url`" parameter) on an external server. Syntax:
|
|
99
|
-
`Authorization:
|
|
99
|
+
`Authorization: <auth-scheme> <authorization-parameters>` Examples:
|
|
100
100
|
|
|
101
101
|
- "`origin_http_headers`": "Authorization: Basic ..."
|
|
102
102
|
- "`origin_http_headers`": "Authorization: Bearer ..."
|
|
@@ -105,10 +105,11 @@ class PlaylistVideo(BaseModel):
|
|
|
105
105
|
|
|
106
106
|
```
|
|
107
107
|
POST https://api.gcore.com/streaming/videos
|
|
108
|
+
|
|
108
109
|
"video": {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
110
|
+
"name": "IBC 2024 intro.mp4",
|
|
111
|
+
"origin_url": "https://www.googleapis.com/drive/v3/files/...?alt=media",
|
|
112
|
+
"origin_http_headers": "Authorization: Bearer ABC"
|
|
112
113
|
}
|
|
113
114
|
```
|
|
114
115
|
"""
|
|
@@ -129,8 +130,8 @@ class PlaylistVideo(BaseModel):
|
|
|
129
130
|
image. Also use attribute "`screenshot_id`" to select poster as a default
|
|
130
131
|
screnshot. Attribute accepts single image as base64-encoded string
|
|
131
132
|
[(RFC 2397 – The "data" URL scheme)](https://www.rfc-editor.org/rfc/rfc2397). In
|
|
132
|
-
format: `data:[];base64
|
|
133
|
-
and file sizes up to 1Mb. Examples:
|
|
133
|
+
format: `data:[<mediatype>];base64,<data>` MIME-types are image/jpeg,
|
|
134
|
+
image/webp, and image/png and file sizes up to 1Mb. Examples:
|
|
134
135
|
|
|
135
136
|
- `data:image/jpeg;base64,/9j/4AA...qf/2Q==`
|
|
136
137
|
- `data:image/png;base64,iVBORw0KGg...ggg==`
|
|
@@ -5,19 +5,19 @@ from typing_extensions import TypeAlias
|
|
|
5
5
|
|
|
6
6
|
from ..._models import BaseModel
|
|
7
7
|
|
|
8
|
-
__all__ = ["StorageSeries", "
|
|
8
|
+
__all__ = ["StorageSeries", "StorageSeriesItem", "StorageSeriesItemMetrics"]
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
class
|
|
11
|
+
class StorageSeriesItemMetrics(BaseModel):
|
|
12
12
|
max_volume_usage: List[int]
|
|
13
13
|
|
|
14
14
|
storage: List[List[int]]
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
class
|
|
17
|
+
class StorageSeriesItem(BaseModel):
|
|
18
18
|
client: int
|
|
19
19
|
|
|
20
|
-
metrics:
|
|
20
|
+
metrics: StorageSeriesItemMetrics
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
StorageSeries: TypeAlias = List[
|
|
23
|
+
StorageSeries: TypeAlias = List[StorageSeriesItem]
|
gcore/types/streaming/stream.py
CHANGED
|
@@ -89,7 +89,7 @@ class Stream(BaseModel):
|
|
|
89
89
|
entity: video source, video id, parameters, etc. We do not use this field in any
|
|
90
90
|
way when processing the stream. You can store any data in any format (string,
|
|
91
91
|
json, etc), saved as a text string. Example:
|
|
92
|
-
|
|
92
|
+
`client_entity_data = '{ "seq_id": "1234567890", "name": "John Doe", "iat": 1516239022 }'`
|
|
93
93
|
"""
|
|
94
94
|
|
|
95
95
|
client_user_id: Optional[int] = None
|
|
@@ -168,7 +168,7 @@ class Stream(BaseModel):
|
|
|
168
168
|
- and its possible to enable ±3 sec for LL-HLS, just ask our Support Team.
|
|
169
169
|
|
|
170
170
|
It is also possible to use modifier-attributes, which are described in the
|
|
171
|
-
"`hls_mpegts_url`" field above. If you need to get
|
|
171
|
+
"`hls_mpegts_url`" field above. If you need to get MPEG-TS (.ts) chunks, look at
|
|
172
172
|
the attribute "`hls_mpegts_url`".
|
|
173
173
|
|
|
174
174
|
Read more information in the article "How Low Latency streaming works" in the
|
|
@@ -184,13 +184,13 @@ class Stream(BaseModel):
|
|
|
184
184
|
hls_mpegts_url: Optional[str] = None
|
|
185
185
|
"""HLS output for legacy devices.
|
|
186
186
|
|
|
187
|
-
URL for transcoded result of stream in HLS
|
|
188
|
-
Low Latency support: NO. Some legacy devices or software may require
|
|
189
|
-
(.ts) segments as a format for streaming, so we provide this options
|
|
190
|
-
backward compatibility with any of your existing workflows. For other
|
|
191
|
-
better to use "`hls_cmaf_url`" instead. You can use this legacy HLSv6
|
|
192
|
-
based on
|
|
193
|
-
sharing same segments size, manifest length (DVR), etc.
|
|
187
|
+
URL for transcoded result of stream in HLS MPEG-TS (.ts) format, with .m3u8
|
|
188
|
+
link. Low Latency support: NO. Some legacy devices or software may require
|
|
189
|
+
MPEG-TS (.ts) segments as a format for streaming, so we provide this options
|
|
190
|
+
keeping backward compatibility with any of your existing workflows. For other
|
|
191
|
+
cases it's better to use "`hls_cmaf_url`" instead. You can use this legacy HLSv6
|
|
192
|
+
format based on MPEG-TS segmenter in parallel with main HLS CMAF. Both formats
|
|
193
|
+
are sharing same segments size, manifest length (DVR), etc.
|
|
194
194
|
|
|
195
195
|
It is also possible to use additional modifier-attributes:
|
|
196
196
|
|
|
@@ -202,8 +202,8 @@ class Stream(BaseModel):
|
|
|
202
202
|
determine duration in seconds at the level of analyzing the logs of CDN
|
|
203
203
|
requests and compare it with file size (so to use it in your analytics). Such
|
|
204
204
|
modifier attributes are applied manually and added to the link obtained from
|
|
205
|
-
this field. I.e.
|
|
206
|
-
`https://demo.gvideo.io/mpegts
|
|
205
|
+
this field. I.e. `<hls_url>?get_duration_sec=true` Example:
|
|
206
|
+
`https://demo.gvideo.io/mpegts/2675_19146/master_mpegts.m3u8?get_duration_sec=true`
|
|
207
207
|
|
|
208
208
|
```
|
|
209
209
|
#EXTM3U
|
|
@@ -212,7 +212,7 @@ class Stream(BaseModel):
|
|
|
212
212
|
...
|
|
213
213
|
#EXTINF:2.000000,
|
|
214
214
|
#EXT-X-PROGRAM-DATE-TIME:2025-08-14T08:15:00
|
|
215
|
-
seg1.ts
|
|
215
|
+
seg1.ts?duration_sec=2
|
|
216
216
|
...
|
|
217
217
|
```
|
|
218
218
|
"""
|
|
@@ -239,28 +239,12 @@ class Stream(BaseModel):
|
|
|
239
239
|
with limits. That's why you may need to use this HTML web player. Please, look
|
|
240
240
|
Knowledge Base for details. Example of usage on a web page:
|
|
241
241
|
|
|
242
|
-
<iframe width="560" height="315" src="https://player.gvideo.co/streams
|
|
242
|
+
<iframe width="560" height="315" src="https://player.gvideo.co/streams/2675_201693" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
|
|
243
243
|
"""
|
|
244
244
|
|
|
245
245
|
live: Optional[bool] = None
|
|
246
246
|
"""State of receiving and transcoding master stream from source by main server"""
|
|
247
247
|
|
|
248
|
-
low_latency_enabled: Optional[bool] = None
|
|
249
|
-
"""
|
|
250
|
-
Deprecated, always returns "true". The only exception is that the attribute can
|
|
251
|
-
only be used by clients that have previously used the old stream format. This
|
|
252
|
-
method is outdated since we've made it easier to manage streams. For your
|
|
253
|
-
convenience, you no longer need to set this parameter at the stage of creating a
|
|
254
|
-
stream. Now all streams are prepared in 2 formats simultaniously: Low Latency
|
|
255
|
-
and Legacy. You can get the desired output format in the attributes
|
|
256
|
-
"`dash_url`", "`hls_cmaf_url`", "`hls_mpegts_url`". Or use them all at once.
|
|
257
|
-
|
|
258
|
-
---
|
|
259
|
-
|
|
260
|
-
Note: Links /streams/{id}/playlist.m3u8 are depricated too. Use value of the
|
|
261
|
-
"`hls_mpegts_url`" attribute instead.
|
|
262
|
-
"""
|
|
263
|
-
|
|
264
248
|
projection: Optional[Literal["regular", "vr360", "vr180", "vr360tb"]] = None
|
|
265
249
|
"""
|
|
266
250
|
Visualization mode for 360° streams, how the stream is rendered in our web
|
|
@@ -279,15 +263,19 @@ class Stream(BaseModel):
|
|
|
279
263
|
Has two possible values:
|
|
280
264
|
|
|
281
265
|
- true – stream is received by PULL method. Use this when need to get stream
|
|
282
|
-
from external server
|
|
266
|
+
from external server.
|
|
283
267
|
- false – stream is received by PUSH method. Use this when need to send stream
|
|
284
|
-
from end-device to our Streaming Platform, i.e. from mobile app
|
|
268
|
+
from end-device to our Streaming Platform, i.e. from your encoder, mobile app
|
|
269
|
+
or OBS Studio.
|
|
285
270
|
"""
|
|
286
271
|
|
|
287
272
|
push_url: Optional[str] = None
|
|
288
273
|
"""
|
|
289
274
|
URL to PUSH master stream to our main server using RTMP and RTMPS protocols. To
|
|
290
275
|
use RTMPS just manually change the protocol name from "rtmp://" to "rtmps://".
|
|
276
|
+
Use only 1 protocol of sending a master stream: eitheronly RTMP/S (`push_url`),
|
|
277
|
+
or only SRT (`push_url_srt`).
|
|
278
|
+
|
|
291
279
|
If you see an error like "invalid SSL certificate" try the following:
|
|
292
280
|
|
|
293
281
|
- Make sure the push URL is correct, and it contains "rtmps://".
|
|
@@ -295,20 +283,58 @@ class Stream(BaseModel):
|
|
|
295
283
|
port 443 in the URL. Here’s an example:
|
|
296
284
|
rtmps://vp-push.domain.com:443/in/stream?key.
|
|
297
285
|
- If you're still having trouble, then your encoder may not support RTMPS.
|
|
298
|
-
Double-check the documentation for your encoder.
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
286
|
+
Double-check the documentation for your encoder.
|
|
287
|
+
|
|
288
|
+
Please note that 1 connection and 1 protocol can be used at a single moment in
|
|
289
|
+
time per unique stream key input. Trying to send 2+ connection requests into
|
|
290
|
+
`push_url` to once, or 2+ protocols at once will not lead to a result. For
|
|
291
|
+
example, transcoding process will fail if:
|
|
292
|
+
|
|
293
|
+
- you are pushing primary and backup RTMP to the same single `push_url`
|
|
294
|
+
simultaneously
|
|
295
|
+
- you are pushing RTMP to `push_url` and SRT to `push_url_srt` simultaneously
|
|
296
|
+
|
|
297
|
+
For advanced customers only: For your complexly distributed broadcast systems,
|
|
298
|
+
it is also possible to additionally output an array of multi-regional ingestion
|
|
299
|
+
points for manual selection from them. To activate this mode, contact your
|
|
300
|
+
manager or the Support Team to activate the "`multi_region_push_urls`" attibute.
|
|
301
|
+
But if you clearly don’t understand why you need this, then it’s best to use the
|
|
302
|
+
default single URL in the "`push_url`" attribute.
|
|
305
303
|
"""
|
|
306
304
|
|
|
307
305
|
push_url_srt: Optional[str] = None
|
|
308
306
|
"""
|
|
309
307
|
URL to PUSH master stream to our main server using SRT protocol. Use only 1
|
|
310
|
-
protocol of sending a master stream:
|
|
311
|
-
|
|
308
|
+
protocol of sending a master stream: eitheronly RTMP/S (`push_url`), or only SRT
|
|
309
|
+
(`push_url_srt`).
|
|
310
|
+
|
|
311
|
+
**Setup SRT latency on your sender side** SRT is designed as a low-latency
|
|
312
|
+
transport protocol, but real networks are not always stable and in some cases
|
|
313
|
+
the end-to-end path from the venue to the ingest point can be long. For this
|
|
314
|
+
reason, it is important to configure the latency parameter carefully to match
|
|
315
|
+
the actual network conditions. Small latency values may lead to packet loss when
|
|
316
|
+
jitter or retransmissions occur, while very large values introduce unnecessary
|
|
317
|
+
end-to-end delay. \\**Incorrect or low default value is one of the most common
|
|
318
|
+
reasons for packet loss, frames loss, and bad picture.\\**
|
|
319
|
+
|
|
320
|
+
We therefore recommend setting latency manually rather than relying on the
|
|
321
|
+
default, to ensure the buffer is correctly sized for your environment. A
|
|
322
|
+
practical range is 400–2000 ms, with the exact value chosen based on RTT,
|
|
323
|
+
jitter, and expected packet loss. Be sure to check and test SRT settings on your
|
|
324
|
+
sender side. The default values do not take into account your specific scenarios
|
|
325
|
+
and do not work well. If necessary, ask us and we will help you.
|
|
326
|
+
|
|
327
|
+
Please note that 1 connection and 1 protocol can be used at a single moment in
|
|
328
|
+
time per unique stream key input. Trying to send 2+ connection requests into
|
|
329
|
+
`push_url_srt` to once, or 2+ protocols at once will not lead to a result. For
|
|
330
|
+
example, transcoding process will fail if:
|
|
331
|
+
|
|
332
|
+
- you are pushing primary and backup SRT to the same single `push_url_srt`
|
|
333
|
+
simultaneously
|
|
334
|
+
- you are pushing RTMP to `push_url` and SRT to `push_url_srt` simultaneously
|
|
335
|
+
|
|
336
|
+
See more information and best practices about SRT protocol in the Product
|
|
337
|
+
Documentation.
|
|
312
338
|
"""
|
|
313
339
|
|
|
314
340
|
push_url_whip: Optional[str] = None
|
|
@@ -321,9 +347,9 @@ class Stream(BaseModel):
|
|
|
321
347
|
receives video data. Signaling is a term to describe communication between
|
|
322
348
|
WebRTC endpoints, needed to initiate and maintain a session. WHIP is an open
|
|
323
349
|
specification for a simple signaling protocol for starting WebRTC sessions in an
|
|
324
|
-
outgoing direction, (i.e., streaming from your device).
|
|
325
|
-
|
|
326
|
-
stream:
|
|
350
|
+
outgoing direction, (i.e., streaming from your device). There is the primary
|
|
351
|
+
link only for WHIP, so no backup link. **WebRTC stream encoding parameters** At
|
|
352
|
+
least one video and audio track both must be present in the stream:
|
|
327
353
|
|
|
328
354
|
- Video must be encoded with H.264.
|
|
329
355
|
- Audio must be encoded with OPUS. Note. Specifically for WebRTC mode a method
|
|
@@ -339,8 +365,18 @@ class Stream(BaseModel):
|
|
|
339
365
|
https://stackblitz.com/edit/stackblitz-starters-j2r9ar?file=index.html Also
|
|
340
366
|
try to use the feature in UI of the Customer Portal. In the Streaming section
|
|
341
367
|
inside the settings of a specific live stream, a new section "Quick start in
|
|
342
|
-
browser" has been added.
|
|
343
|
-
|
|
368
|
+
browser" has been added.
|
|
369
|
+
|
|
370
|
+
Please note that 1 connection and 1 protocol can be used at a single moment in
|
|
371
|
+
time per unique stream key input. Trying to send 2+ connection requests into
|
|
372
|
+
`push_url_whip` to once, or 2+ protocols at once will not lead to a result. For
|
|
373
|
+
example, transcoding process will fail if:
|
|
374
|
+
|
|
375
|
+
- you are pushing primary and backup WHIP to the same single `push_url_whip`
|
|
376
|
+
simultaneously
|
|
377
|
+
- you are pushing WHIP to `push_url_whip` and RTMP to `push_url` simultaneously
|
|
378
|
+
|
|
379
|
+
More information in the Product Documentation on the website.
|
|
344
380
|
"""
|
|
345
381
|
|
|
346
382
|
quality_set_id: Optional[int] = None
|
|
@@ -407,10 +443,11 @@ class Stream(BaseModel):
|
|
|
407
443
|
round robin scheduling. If the first address does not respond, then the next one
|
|
408
444
|
in the list will be automatically requested, returning to the first and so on in
|
|
409
445
|
a circle. Also, if the sucessfully working stream stops sending data, then the
|
|
410
|
-
next one will be selected according to the same scheme. After
|
|
411
|
-
inactivity of your
|
|
412
|
-
|
|
413
|
-
for
|
|
446
|
+
next one will be selected according to the same scheme. After 2 hours of
|
|
447
|
+
inactivity of your original stream, the system stops PULL requests and the
|
|
448
|
+
stream is deactivated (the "active" field switches to "false"). Please, note
|
|
449
|
+
that this field is for PULL only, so is not suitable for PUSH. Look at fields
|
|
450
|
+
"`push_url`" and "`push_url_srt`" from GET method.
|
|
414
451
|
"""
|
|
415
452
|
|
|
416
453
|
video_height: Optional[float] = None
|
|
@@ -32,7 +32,8 @@ class StreamCreateClipParams(TypedDict, total=False):
|
|
|
32
32
|
deleted from memory and is no longer available via the link. You need to create
|
|
33
33
|
a new segment, or use `vod_required: true` attribute. If value is omitted, then
|
|
34
34
|
expiration is counted as +3600 seconds (1 hour) to the end of the clip (i.e.
|
|
35
|
-
`unix timestamp = + + 3600`). Allowed range: 1m <= expiration
|
|
35
|
+
`unix timestamp = <start> + <duration> + 3600`). Allowed range: 1m <= expiration
|
|
36
|
+
<= 4h. Example:
|
|
36
37
|
`24.05.2024 14:00:00 (GMT) + 60 seconds of duration + 3600 seconds of expiration = 24.05.2024 15:01:00 (GMT) is Unix timestamp = 1716562860`
|
|
37
38
|
"""
|
|
38
39
|
|
|
@@ -57,7 +57,7 @@ class StreamCreateParams(TypedDict, total=False):
|
|
|
57
57
|
entity: video source, video id, parameters, etc. We do not use this field in any
|
|
58
58
|
way when processing the stream. You can store any data in any format (string,
|
|
59
59
|
json, etc), saved as a text string. Example:
|
|
60
|
-
|
|
60
|
+
`client_entity_data = '{ "seq_id": "1234567890", "name": "John Doe", "iat": 1516239022 }'`
|
|
61
61
|
"""
|
|
62
62
|
|
|
63
63
|
client_user_id: int
|
|
@@ -94,22 +94,6 @@ class StreamCreateParams(TypedDict, total=False):
|
|
|
94
94
|
live streams
|
|
95
95
|
"""
|
|
96
96
|
|
|
97
|
-
low_latency_enabled: bool
|
|
98
|
-
"""
|
|
99
|
-
Deprecated, always returns "true". The only exception is that the attribute can
|
|
100
|
-
only be used by clients that have previously used the old stream format. This
|
|
101
|
-
method is outdated since we've made it easier to manage streams. For your
|
|
102
|
-
convenience, you no longer need to set this parameter at the stage of creating a
|
|
103
|
-
stream. Now all streams are prepared in 2 formats simultaniously: Low Latency
|
|
104
|
-
and Legacy. You can get the desired output format in the attributes
|
|
105
|
-
"`dash_url`", "`hls_cmaf_url`", "`hls_mpegts_url`". Or use them all at once.
|
|
106
|
-
|
|
107
|
-
---
|
|
108
|
-
|
|
109
|
-
Note: Links /streams/{id}/playlist.m3u8 are depricated too. Use value of the
|
|
110
|
-
"`hls_mpegts_url`" attribute instead.
|
|
111
|
-
"""
|
|
112
|
-
|
|
113
97
|
projection: Literal["regular", "vr360", "vr180", "vr360tb"]
|
|
114
98
|
"""
|
|
115
99
|
Visualization mode for 360° streams, how the stream is rendered in our web
|
|
@@ -128,9 +112,10 @@ class StreamCreateParams(TypedDict, total=False):
|
|
|
128
112
|
Has two possible values:
|
|
129
113
|
|
|
130
114
|
- true – stream is received by PULL method. Use this when need to get stream
|
|
131
|
-
from external server
|
|
115
|
+
from external server.
|
|
132
116
|
- false – stream is received by PUSH method. Use this when need to send stream
|
|
133
|
-
from end-device to our Streaming Platform, i.e. from mobile app
|
|
117
|
+
from end-device to our Streaming Platform, i.e. from your encoder, mobile app
|
|
118
|
+
or OBS Studio.
|
|
134
119
|
"""
|
|
135
120
|
|
|
136
121
|
quality_set_id: int
|
|
@@ -158,8 +143,9 @@ class StreamCreateParams(TypedDict, total=False):
|
|
|
158
143
|
round robin scheduling. If the first address does not respond, then the next one
|
|
159
144
|
in the list will be automatically requested, returning to the first and so on in
|
|
160
145
|
a circle. Also, if the sucessfully working stream stops sending data, then the
|
|
161
|
-
next one will be selected according to the same scheme. After
|
|
162
|
-
inactivity of your
|
|
163
|
-
|
|
164
|
-
for
|
|
146
|
+
next one will be selected according to the same scheme. After 2 hours of
|
|
147
|
+
inactivity of your original stream, the system stops PULL requests and the
|
|
148
|
+
stream is deactivated (the "active" field switches to "false"). Please, note
|
|
149
|
+
that this field is for PULL only, so is not suitable for PUSH. Look at fields
|
|
150
|
+
"`push_url`" and "`push_url_srt`" from GET method.
|
|
165
151
|
"""
|
|
@@ -5,17 +5,17 @@ from typing_extensions import TypeAlias
|
|
|
5
5
|
|
|
6
6
|
from ..._models import BaseModel
|
|
7
7
|
|
|
8
|
-
__all__ = ["StreamSeries", "
|
|
8
|
+
__all__ = ["StreamSeries", "StreamSeriesItem", "StreamSeriesItemMetrics"]
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
class
|
|
11
|
+
class StreamSeriesItemMetrics(BaseModel):
|
|
12
12
|
streams: List[int]
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
class
|
|
15
|
+
class StreamSeriesItem(BaseModel):
|
|
16
16
|
client: int
|
|
17
17
|
|
|
18
|
-
metrics:
|
|
18
|
+
metrics: StreamSeriesItemMetrics
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
StreamSeries: TypeAlias = List[
|
|
21
|
+
StreamSeries: TypeAlias = List[StreamSeriesItem]
|