gcore 0.6.0__py3-none-any.whl → 0.7.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of gcore might be problematic. Click here for more details.

Files changed (181) hide show
  1. gcore/_client.py +9 -0
  2. gcore/_models.py +24 -3
  3. gcore/_version.py +1 -1
  4. gcore/pagination.py +101 -1
  5. gcore/resources/__init__.py +14 -0
  6. gcore/resources/cloud/__init__.py +28 -0
  7. gcore/resources/cloud/cloud.py +64 -0
  8. gcore/resources/cloud/cost_reports.py +811 -0
  9. gcore/resources/cloud/file_shares/file_shares.py +10 -0
  10. gcore/resources/cloud/gpu_baremetal_clusters/gpu_baremetal_clusters.py +61 -26
  11. gcore/resources/cloud/inference/registry_credentials.py +4 -6
  12. gcore/resources/cloud/usage_reports.py +337 -0
  13. gcore/resources/streaming/__init__.py +159 -0
  14. gcore/resources/streaming/ai_tasks.py +1288 -0
  15. gcore/resources/streaming/broadcasts.py +579 -0
  16. gcore/resources/streaming/directories.py +515 -0
  17. gcore/resources/streaming/players.py +577 -0
  18. gcore/resources/streaming/playlists.py +1059 -0
  19. gcore/resources/streaming/quality_sets.py +331 -0
  20. gcore/resources/streaming/restreams.py +484 -0
  21. gcore/resources/streaming/statistics.py +3224 -0
  22. gcore/resources/streaming/streaming.py +390 -0
  23. gcore/resources/streaming/streams/__init__.py +33 -0
  24. gcore/resources/streaming/streams/overlays.py +716 -0
  25. gcore/resources/streaming/streams/streams.py +1592 -0
  26. gcore/resources/streaming/videos/__init__.py +33 -0
  27. gcore/resources/streaming/videos/subtitles.py +623 -0
  28. gcore/resources/streaming/videos/videos.py +1553 -0
  29. gcore/resources/waap/ip_info.py +28 -10
  30. gcore/types/cloud/__init__.py +10 -0
  31. gcore/types/cloud/cost_report_aggregated.py +865 -0
  32. gcore/types/cloud/cost_report_aggregated_monthly.py +865 -0
  33. gcore/types/cloud/cost_report_detailed.py +1343 -0
  34. gcore/types/cloud/cost_report_get_aggregated_monthly_params.py +394 -0
  35. gcore/types/cloud/cost_report_get_aggregated_params.py +409 -0
  36. gcore/types/cloud/cost_report_get_detailed_params.py +435 -0
  37. gcore/types/cloud/file_share.py +37 -3
  38. gcore/types/cloud/file_share_create_params.py +16 -0
  39. gcore/types/cloud/gpu_baremetal_cluster.py +2 -2
  40. gcore/types/cloud/gpu_baremetal_cluster_create_params.py +9 -0
  41. gcore/types/cloud/quota_get_all_response.py +24 -2
  42. gcore/types/cloud/quota_get_by_region_response.py +24 -2
  43. gcore/types/cloud/quotas/request_create_params.py +12 -1
  44. gcore/types/cloud/quotas/request_get_response.py +12 -1
  45. gcore/types/cloud/quotas/request_list_response.py +12 -1
  46. gcore/types/cloud/usage_report.py +1612 -0
  47. gcore/types/cloud/usage_report_get_params.py +432 -0
  48. gcore/types/streaming/__init__.py +143 -0
  49. gcore/types/streaming/ai_contentmoderation_casm.py +39 -0
  50. gcore/types/streaming/ai_contentmoderation_hardnudity.py +54 -0
  51. gcore/types/streaming/ai_contentmoderation_nsfw.py +39 -0
  52. gcore/types/streaming/ai_contentmoderation_softnudity.py +66 -0
  53. gcore/types/streaming/ai_contentmoderation_sport.py +39 -0
  54. gcore/types/streaming/ai_contentmoderation_weapon.py +39 -0
  55. gcore/types/streaming/ai_task.py +205 -0
  56. gcore/types/streaming/ai_task_cancel_response.py +12 -0
  57. gcore/types/streaming/ai_task_create_params.py +168 -0
  58. gcore/types/streaming/ai_task_create_response.py +10 -0
  59. gcore/types/streaming/ai_task_get_ai_settings_params.py +27 -0
  60. gcore/types/streaming/ai_task_get_ai_settings_response.py +12 -0
  61. gcore/types/streaming/ai_task_get_response.py +313 -0
  62. gcore/types/streaming/ai_task_list_params.py +50 -0
  63. gcore/types/streaming/broadcast.py +71 -0
  64. gcore/types/streaming/broadcast_create_params.py +76 -0
  65. gcore/types/streaming/broadcast_list_params.py +12 -0
  66. gcore/types/streaming/broadcast_spectators_count.py +12 -0
  67. gcore/types/streaming/broadcast_update_params.py +76 -0
  68. gcore/types/streaming/clip.py +78 -0
  69. gcore/types/streaming/create_video_param.py +214 -0
  70. gcore/types/streaming/direct_upload_parameters.py +33 -0
  71. gcore/types/streaming/directories_tree.py +19 -0
  72. gcore/types/streaming/directory_base.py +31 -0
  73. gcore/types/streaming/directory_create_params.py +15 -0
  74. gcore/types/streaming/directory_get_response.py +19 -0
  75. gcore/types/streaming/directory_item.py +13 -0
  76. gcore/types/streaming/directory_update_params.py +18 -0
  77. gcore/types/streaming/directory_video.py +13 -0
  78. gcore/types/streaming/ffprobes.py +25 -0
  79. gcore/types/streaming/max_stream_series.py +21 -0
  80. gcore/types/streaming/meet_series.py +23 -0
  81. gcore/types/streaming/player.py +114 -0
  82. gcore/types/streaming/player_create_params.py +18 -0
  83. gcore/types/streaming/player_list_params.py +12 -0
  84. gcore/types/streaming/player_param.py +114 -0
  85. gcore/types/streaming/player_update_params.py +18 -0
  86. gcore/types/streaming/playlist.py +102 -0
  87. gcore/types/streaming/playlist_create.py +12 -0
  88. gcore/types/streaming/playlist_create_params.py +102 -0
  89. gcore/types/streaming/playlist_list_params.py +12 -0
  90. gcore/types/streaming/playlist_list_videos_response.py +10 -0
  91. gcore/types/streaming/playlist_update_params.py +102 -0
  92. gcore/types/streaming/playlist_video.py +215 -0
  93. gcore/types/streaming/popular_videos.py +17 -0
  94. gcore/types/streaming/quality_set_set_default_params.py +23 -0
  95. gcore/types/streaming/quality_sets.py +57 -0
  96. gcore/types/streaming/restream.py +37 -0
  97. gcore/types/streaming/restream_create_params.py +41 -0
  98. gcore/types/streaming/restream_list_params.py +12 -0
  99. gcore/types/streaming/restream_update_params.py +41 -0
  100. gcore/types/streaming/statistic_get_ffprobes_params.py +22 -0
  101. gcore/types/streaming/statistic_get_live_unique_viewers_params.py +26 -0
  102. gcore/types/streaming/statistic_get_live_unique_viewers_response.py +25 -0
  103. gcore/types/streaming/statistic_get_live_watch_time_cdn_params.py +32 -0
  104. gcore/types/streaming/statistic_get_live_watch_time_total_cdn_params.py +30 -0
  105. gcore/types/streaming/statistic_get_max_streams_series_params.py +20 -0
  106. gcore/types/streaming/statistic_get_meet_series_params.py +20 -0
  107. gcore/types/streaming/statistic_get_popular_videos_params.py +15 -0
  108. gcore/types/streaming/statistic_get_storage_series_params.py +20 -0
  109. gcore/types/streaming/statistic_get_stream_series_params.py +20 -0
  110. gcore/types/streaming/statistic_get_unique_viewers_cdn_params.py +27 -0
  111. gcore/types/streaming/statistic_get_unique_viewers_params.py +34 -0
  112. gcore/types/streaming/statistic_get_views_by_browsers_params.py +15 -0
  113. gcore/types/streaming/statistic_get_views_by_country_params.py +15 -0
  114. gcore/types/streaming/statistic_get_views_by_hostname_params.py +15 -0
  115. gcore/types/streaming/statistic_get_views_by_operating_system_params.py +15 -0
  116. gcore/types/streaming/statistic_get_views_by_referer_params.py +15 -0
  117. gcore/types/streaming/statistic_get_views_by_region_params.py +15 -0
  118. gcore/types/streaming/statistic_get_views_heatmap_params.py +21 -0
  119. gcore/types/streaming/statistic_get_views_params.py +34 -0
  120. gcore/types/streaming/statistic_get_vod_storage_volume_params.py +17 -0
  121. gcore/types/streaming/statistic_get_vod_transcoding_duration_params.py +17 -0
  122. gcore/types/streaming/statistic_get_vod_unique_viewers_cdn_params.py +26 -0
  123. gcore/types/streaming/statistic_get_vod_watch_time_cdn_params.py +32 -0
  124. gcore/types/streaming/statistic_get_vod_watch_time_total_cdn_params.py +30 -0
  125. gcore/types/streaming/statistic_get_vod_watch_time_total_cdn_response.py +22 -0
  126. gcore/types/streaming/storage_series.py +23 -0
  127. gcore/types/streaming/stream.py +420 -0
  128. gcore/types/streaming/stream_create_clip_params.py +48 -0
  129. gcore/types/streaming/stream_create_params.py +165 -0
  130. gcore/types/streaming/stream_list_clips_response.py +10 -0
  131. gcore/types/streaming/stream_list_params.py +18 -0
  132. gcore/types/streaming/stream_series.py +21 -0
  133. gcore/types/streaming/stream_start_recording_response.py +76 -0
  134. gcore/types/streaming/stream_update_params.py +169 -0
  135. gcore/types/streaming/streams/__init__.py +11 -0
  136. gcore/types/streaming/streams/overlay.py +43 -0
  137. gcore/types/streaming/streams/overlay_create_params.py +36 -0
  138. gcore/types/streaming/streams/overlay_create_response.py +10 -0
  139. gcore/types/streaming/streams/overlay_list_response.py +10 -0
  140. gcore/types/streaming/streams/overlay_update_multiple_params.py +39 -0
  141. gcore/types/streaming/streams/overlay_update_multiple_response.py +10 -0
  142. gcore/types/streaming/streams/overlay_update_params.py +33 -0
  143. gcore/types/streaming/subtitle.py +12 -0
  144. gcore/types/streaming/subtitle_base.py +18 -0
  145. gcore/types/streaming/subtitle_base_param.py +18 -0
  146. gcore/types/streaming/unique_viewers.py +35 -0
  147. gcore/types/streaming/unique_viewers_cdn.py +17 -0
  148. gcore/types/streaming/video.py +444 -0
  149. gcore/types/streaming/video_create_multiple_params.py +28 -0
  150. gcore/types/streaming/video_create_multiple_response.py +10 -0
  151. gcore/types/streaming/video_create_params.py +13 -0
  152. gcore/types/streaming/video_create_response.py +10 -0
  153. gcore/types/streaming/video_list_names_params.py +13 -0
  154. gcore/types/streaming/video_list_params.py +59 -0
  155. gcore/types/streaming/video_update_params.py +214 -0
  156. gcore/types/streaming/videos/__init__.py +7 -0
  157. gcore/types/streaming/videos/subtitle_create_params.py +17 -0
  158. gcore/types/streaming/videos/subtitle_list_response.py +10 -0
  159. gcore/types/streaming/videos/subtitle_update_params.py +20 -0
  160. gcore/types/streaming/views.py +35 -0
  161. gcore/types/streaming/views_by_browser.py +17 -0
  162. gcore/types/streaming/views_by_country.py +19 -0
  163. gcore/types/streaming/views_by_hostname.py +17 -0
  164. gcore/types/streaming/views_by_operating_system.py +17 -0
  165. gcore/types/streaming/views_by_referer.py +17 -0
  166. gcore/types/streaming/views_by_region.py +19 -0
  167. gcore/types/streaming/views_heatmap.py +19 -0
  168. gcore/types/streaming/vod_statistics_series.py +21 -0
  169. gcore/types/streaming/vod_total_stream_duration_series.py +22 -0
  170. gcore/types/waap/domains/custom_rule_create_params.py +4 -4
  171. gcore/types/waap/domains/custom_rule_update_params.py +4 -4
  172. gcore/types/waap/ip_info_get_blocked_requests_params.py +5 -1
  173. gcore/types/waap/ip_info_get_counts_params.py +2 -1
  174. gcore/types/waap/ip_info_get_top_sessions_params.py +5 -1
  175. gcore/types/waap/ip_info_get_top_urls_params.py +5 -1
  176. gcore/types/waap/ip_info_get_top_user_agents_params.py +5 -1
  177. gcore/types/waap/waap_custom_rule.py +4 -4
  178. {gcore-0.6.0.dist-info → gcore-0.7.0.dist-info}/METADATA +1 -1
  179. {gcore-0.6.0.dist-info → gcore-0.7.0.dist-info}/RECORD +181 -33
  180. {gcore-0.6.0.dist-info → gcore-0.7.0.dist-info}/WHEEL +0 -0
  181. {gcore-0.6.0.dist-info → gcore-0.7.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,420 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List, Optional
4
+ from typing_extensions import Literal
5
+
6
+ from ..._models import BaseModel
7
+ from .streams.overlay import Overlay
8
+
9
+ __all__ = ["Stream"]
10
+
11
+
12
+ class Stream(BaseModel):
13
+ name: str
14
+ """
15
+ Stream name. Often used as a human-readable name for the stream, but can contain
16
+ any text you wish. The values are not unique and may be repeated. Examples:
17
+
18
+ - Conference in July
19
+ - Stream #10003
20
+ - Open-Air Camera #31 Backstage
21
+ - 480fd499-2de2-4988-bc1a-a4eebe9818ee
22
+ """
23
+
24
+ id: Optional[int] = None
25
+ """Stream ID"""
26
+
27
+ active: Optional[bool] = None
28
+ """Stream switch between on and off.
29
+
30
+ This is not an indicator of the status "stream is receiving and it is LIVE", but
31
+ rather an on/off switch. When stream is switched off, there is no way to process
32
+ it: PULL is deactivated and PUSH will return an error.
33
+
34
+ - true – stream can be processed
35
+ - false – stream is off, and cannot be processed
36
+ """
37
+
38
+ auto_record: Optional[bool] = None
39
+ """Enables autotomatic recording of the stream when it started.
40
+
41
+ So you don't need to call recording manually. Result of recording is
42
+ automatically added to video hosting. For details see the
43
+ /streams/`start_recording` method and in knowledge base Values:
44
+
45
+ - true – auto recording is enabled
46
+ - false – auto recording is disabled
47
+ """
48
+
49
+ backup_live: Optional[bool] = None
50
+ """
51
+ State of receiving and transcoding master stream from source by backup server if
52
+ you pushing stream to "`backup_push_url`" or "`backup_push_url_srt`". Displays
53
+ the backup server status of PUSH method only. For PULL a "live" field is always
54
+ used, even when origin servers are switched using round robin scheduling (look
55
+ "uri" field for details).
56
+ """
57
+
58
+ backup_push_url: Optional[str] = None
59
+ """URL to PUSH master stream to our backup server using RTMP/S protocols.
60
+
61
+ Servers for the main and backup streams are distributed geographically. Mainly
62
+ sending one stream to main server is enough. But if you need a backup stream,
63
+ then this is the field to PUSH it. To use RTMPS just manually change the
64
+ protocol name from "rtmp://" to "rtmps://". The backup logs are as follows: In
65
+ PUSH mode, you initiate sending a stream from your machine. If your stream stops
66
+ or breaks for some reason and it stops coming to the main server, then after
67
+ 3-10 seconds of waiting the stream will turn off or the backup one will be
68
+ automatically turned on, if you are pushing it too.
69
+ """
70
+
71
+ backup_push_url_srt: Optional[str] = None
72
+ """
73
+ URL to PUSH master stream to our backup server using SRT protocol with the same
74
+ logic of backup-streams
75
+ """
76
+
77
+ broadcast_ids: Optional[List[int]] = None
78
+ """IDs of broadcasts which will include this stream"""
79
+
80
+ cdn_id: Optional[int] = None
81
+ """
82
+ ID of custom CDN resource from which the content will be delivered (only if you
83
+ know what you do)
84
+ """
85
+
86
+ client_entity_data: Optional[str] = None
87
+ """
88
+ Custom meta field designed to store your own extra information about a video
89
+ entity: video source, video id, parameters, etc. We do not use this field in any
90
+ way when processing the stream. You can store any data in any format (string,
91
+ json, etc), saved as a text string. Example:
92
+ `` client_entity_data = '{ "`seq_id`": "1234567890", "name": "John Doe", "iat": 1516239022 }' ``
93
+ """
94
+
95
+ client_user_id: Optional[int] = None
96
+ """Custom meta field for storing the Identifier in your system.
97
+
98
+ We do not use this field in any way when processing the stream. Example:
99
+ `client_user_id = 1001`
100
+ """
101
+
102
+ created_at: Optional[str] = None
103
+ """Datetime of creation in ISO 8601"""
104
+
105
+ dash_url: Optional[str] = None
106
+ """MPEG-DASH output.
107
+
108
+ URL for transcoded result stream in MPEG-DASH format, with .mpd link. Low
109
+ Latency support: YES. This is CMAF-based MPEG-DASH stream. Encoder and packager
110
+ dynamically assemble the video stream with fMP4 fragments. Chunks have ±2-4
111
+ seconds duration depending on the settings. All chunks for DASH are transferred
112
+ through CDN using chunk transfer technology, which allows to use all the
113
+ advantages of low latency delivery of DASH.
114
+
115
+ - by default low latency is ±4 sec, because it's stable for almost all last-mile
116
+ use cases.
117
+ - and its possible to enable ±2 sec for DASH, just ask our Support Team.
118
+
119
+ Read more information in the article "How Low Latency streaming works" in the
120
+ Knowledge Base.
121
+ """
122
+
123
+ dvr_duration: Optional[int] = None
124
+ """DVR duration in seconds if DVR feature is enabled for the stream.
125
+
126
+ So this is duration of how far the user can rewind the live stream.
127
+ `dvr_duration` range is [30...14400]. Maximum value is 4 hours = 14400 seconds.
128
+ If you need more, ask the Support Team please.
129
+ """
130
+
131
+ dvr_enabled: Optional[bool] = None
132
+ """Enables DVR for the stream:
133
+
134
+ - true – DVR is enabled
135
+ - false – DVR is disabled
136
+ """
137
+
138
+ finished_at_primary: Optional[str] = None
139
+ """Time when the stream ended for the last time.
140
+
141
+ Datetime in ISO 8601. After restarting the stream, this value is not reset to
142
+ "null", and the time of the last/previous end is always displayed here. That is,
143
+ when the start time is greater than the end time, it means the current session
144
+ is still ongoing and the stream has not ended yet. If you want to see all
145
+ information about acitivity of the stream, you can get it from another method
146
+ /streaming/statistics/ffprobe. This method shows aggregated activity parameters
147
+ during a time, when stream was alive and transcoded. Also you can create graphs
148
+ to see the activity. For example
149
+ /streaming/statistics/ffprobe?interval=6000&`date_from`=2023-10-01&`date_to`=2023-10-11&`stream_id`=12345
150
+ """
151
+
152
+ frame_rate: Optional[float] = None
153
+ """Current FPS of the original stream, if stream is transcoding"""
154
+
155
+ hls_cmaf_url: Optional[str] = None
156
+ """HLS output.
157
+
158
+ URL for transcoded result of stream in HLS CMAF format, with .m3u8 link.
159
+ Recommended for use for all HLS streams. Low Latency support: YES. This is
160
+ CMAF-based HLS stream. Encoder and packager dynamically assemble the video
161
+ stream with fMP4 fragments. Chunks have ±2-4 seconds duration depending on the
162
+ settings. All chunks for LL-HLS are transferred through CDN via dividing into
163
+ parts (small segments `#EXT-X-PART` of 0.5-1.0 sec duration), which allows to
164
+ use all the advantages of low latency delivery of LL-HLS.
165
+
166
+ - by default low latency is ±5 sec, because it's stable for almost all last-mile
167
+ use cases.
168
+ - and its possible to enable ±3 sec for LL-HLS, just ask our Support Team.
169
+
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 MPEGTS (.ts) chunks, look at
172
+ the attribute "`hls_mpegts_url`".
173
+
174
+ Read more information in the article "How Low Latency streaming works" in the
175
+ Knowledge Base.
176
+ """
177
+
178
+ hls_mpegts_endlist_tag: Optional[bool] = None
179
+ """
180
+ Add `#EXT-X-ENDLIST` tag within .m3u8 playlist after the last segment of a live
181
+ stream when broadcast is ended.
182
+ """
183
+
184
+ hls_mpegts_url: Optional[str] = None
185
+ """HLS output for legacy devices.
186
+
187
+ URL for transcoded result of stream in HLS MPEGTS (.ts) format, with .m3u8 link.
188
+ Low Latency support: NO. Some legacy devices or software may require MPEGTS
189
+ (.ts) segments as a format for streaming, so we provide this options keeping
190
+ backward compatibility with any of your existing workflows. For other cases it's
191
+ better to use "`hls_cmaf_url`" instead. You can use this legacy HLSv6 format
192
+ based on MPEGTS segmenter in parallel with main HLS CMAF. Both formats are
193
+ sharing same segments size, manifest length (DVR), etc.
194
+
195
+ It is also possible to use additional modifier-attributes:
196
+
197
+ - ?`get_duration_sec`=true – Adds the real segment duration in seconds to chunk
198
+ requests. A chunk duration will be automatically added to a chunk request
199
+ string with the "`duration_sec`" attribute. The value is an integer for a
200
+ length multiple of whole seconds, or a fractional number separated by a dot
201
+ for chunks that are not multiples of seconds. This attribute allows you to
202
+ determine duration in seconds at the level of analyzing the logs of CDN
203
+ requests and compare it with file size (so to use it in your analytics). Such
204
+ modifier attributes are applied manually and added to the link obtained from
205
+ this field. I.e. `` ?`get_duration_sec`=true `` Example:
206
+ `https://demo.gvideo.io/mpegts/`2675_19146`/`master_mpegts`.m3u8?`get_duration_sec`=true`
207
+
208
+ ```
209
+ #EXTM3U
210
+ #EXT-X-VERSION:6
211
+ #EXT-X-TARGETDURATION:2
212
+ ...
213
+ #EXTINF:2.000000,
214
+ #EXT-X-PROGRAM-DATE-TIME:2025-08-14T08:15:00
215
+ seg1.ts?`duration_sec`=2
216
+ ...
217
+ ```
218
+ """
219
+
220
+ html_overlay: Optional[bool] = None
221
+ """
222
+ Switch on mode to insert and display real-time HTML overlay widgets on top of
223
+ live streams
224
+ """
225
+
226
+ html_overlays: Optional[List[Overlay]] = None
227
+ """Array of HTML overlay widgets"""
228
+
229
+ iframe_url: Optional[str] = None
230
+ """A URL to a built-in HTML web player with the stream inside.
231
+
232
+ It can be inserted into an iframe on your website and the video will
233
+ automatically play in all browsers. Please, remember that transcoded streams
234
+ from "`hls_cmaf_url`" with .m3u8 at the end, and from "`dash_url`" with .mpd at
235
+ the end are to be played inside video players only. For example: AVplayer on
236
+ iOS, Exoplayer on Android, HTML web player in browser, etc. General bowsers like
237
+ Chrome, Firefox, etc cannot play transcoded streams with .m3u8 and .mpd at the
238
+ end. The only exception is Safari, which can only play Apple's HLS .m3u8 format
239
+ with limits. That's why you may need to use this HTML web player. Please, look
240
+ Knowledge Base for details. Example of usage on a web page:
241
+
242
+ <iframe width="560" height="315" src="https://player.gvideo.co/streams/`2675_201693`" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
243
+ """
244
+
245
+ live: Optional[bool] = None
246
+ """State of receiving and transcoding master stream from source by main server"""
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
+ projection: Optional[Literal["regular", "vr360", "vr180", "vr360tb"]] = None
265
+ """
266
+ Visualization mode for 360° streams, how the stream is rendered in our web
267
+ player ONLY. If you would like to show video 360° in an external video player,
268
+ then use parameters of that video player. Modes:
269
+
270
+ - regular – regular “flat” stream
271
+ - vr360 – display stream in 360° mode
272
+ - vr180 – display stream in 180° mode
273
+ - vr360tb – display stream in 3D 360° mode Top-Bottom
274
+ """
275
+
276
+ pull: Optional[bool] = None
277
+ """Indicates if stream is pulled from external server or not.
278
+
279
+ Has two possible values:
280
+
281
+ - true – stream is received by PULL method. Use this when need to get stream
282
+ from external server by srt, rtmp\\ss, hls, dash, etc protocols.
283
+ - 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 or OBS Studio.
285
+ """
286
+
287
+ push_url: Optional[str] = None
288
+ """
289
+ URL to PUSH master stream to our main server using RTMP and RTMPS protocols. To
290
+ use RTMPS just manually change the protocol name from "rtmp://" to "rtmps://".
291
+ If you see an error like "invalid SSL certificate" try the following:
292
+
293
+ - Make sure the push URL is correct, and it contains "rtmps://".
294
+ - If the URL looks correct but you still get an SSL error, try specifying the
295
+ port 443 in the URL. Here’s an example:
296
+ rtmps://vp-push.domain.com:443/in/stream?key.
297
+ - If you're still having trouble, then your encoder may not support RTMPS.
298
+ Double-check the documentation for your encoder. For advanced customers only:
299
+ For your complexly distributed broadcast systems, it is also possible to
300
+ additionally output an array of multi-regional ingestion points for manual
301
+ selection from them. To activate this mode, contact your manager or the
302
+ Support Team to activate the "`multi_region_push_urls`" attibute. But if you
303
+ clearly don’t understand why you need this, then it’s best to use the default
304
+ single URL in the "`push_url`" attribute.
305
+ """
306
+
307
+ push_url_srt: Optional[str] = None
308
+ """
309
+ URL to PUSH master stream to our main server using SRT protocol. Use only 1
310
+ protocol of sending a master stream: either only SRT (`push_url_srt`), or only
311
+ RTMP (`push_url`).
312
+ """
313
+
314
+ push_url_whip: Optional[str] = None
315
+ """URL to PUSH WebRTC stream to our server using WHIP protocol.
316
+
317
+ **WebRTC WHIP to LL-HLS and DASH** Video Streaming supports WebRTC HTTP Ingest
318
+ Protocol (WHIP), and WebRTC to HLS/DASH converter. As a result you can stream
319
+ from web broswers natively. **WebRTC WHIP server** We have dedicated WebRTC WHIP
320
+ servers in our infrastructure. WebRTC WHIP server organizes both signaling and
321
+ receives video data. Signaling is a term to describe communication between
322
+ WebRTC endpoints, needed to initiate and maintain a session. WHIP is an open
323
+ specification for a simple signaling protocol for starting WebRTC sessions in an
324
+ outgoing direction, (i.e., streaming from your device). **WebRTC stream encoding
325
+ parameters** At least one video and audio track both must be present in the
326
+ stream:
327
+
328
+ - Video must be encoded with H.264.
329
+ - Audio must be encoded with OPUS. Note. Specifically for WebRTC mode a method
330
+ of constant transcoding with an initial given resolution is used. This means
331
+ that if WebRTC in the end-user's browser decides to reduce the quality or
332
+ resolution of the master stream (to let say 360p) due to restrictions on the
333
+ end-user's device (network conditions, CPU consumption, etc.), the transcoder
334
+ will still continue to transcode the reduced stream to the initial resolution
335
+ (let say 1080p ABR). When the restrictions on the end-user's device are
336
+ removed, quiality will improve again. **WebRTC WHIP Client** We provide a
337
+ convenient WebRTC WHIP library for working in browsers. You can use our
338
+ library, or any other you prefer. Simple example of usage is here:
339
+ https://stackblitz.com/edit/stackblitz-starters-j2r9ar?file=index.html Also
340
+ try to use the feature in UI of the Customer Portal. In the Streaming section
341
+ inside the settings of a specific live stream, a new section "Quick start in
342
+ browser" has been added. More information in the Product Documentation on the
343
+ website.
344
+ """
345
+
346
+ quality_set_id: Optional[int] = None
347
+ """
348
+ Custom quality set ID for transcoding, if transcoding is required according to
349
+ your conditions. Look at GET /`quality_sets` method
350
+ """
351
+
352
+ record_type: Optional[Literal["origin", "transcoded"]] = None
353
+ """Method of recording a stream.
354
+
355
+ Specifies the source from which the stream will be recorded: original or
356
+ transcoded. Types:
357
+
358
+ - "origin" – To record RMTP/SRT/etc original clean media source.
359
+ - "transcoded" – To record the output transcoded version of the stream,
360
+ including overlays, texts, logos, etc. additional media layers.
361
+ """
362
+
363
+ recording_duration: Optional[float] = None
364
+ """Duration of current recording in seconds if recording is enabled for the stream"""
365
+
366
+ screenshot: Optional[str] = None
367
+ """
368
+ An instant screenshot taken from a live stream, and available as a static JPEG
369
+ image. Resolution 1080 pixels wide, or less if the original stream has a lower
370
+ resolution. Screenshot is taken every 10 seconds while the stream is live. This
371
+ field contains a link to the last screenshot created by the system. Screenshot
372
+ history is not stored, so if you need a series of screenshots over time, then
373
+ download them.
374
+ """
375
+
376
+ started_at_backup: Optional[str] = None
377
+ """Time of the last session when backup server started receiving the stream.
378
+
379
+ Datetime in ISO 8601
380
+ """
381
+
382
+ started_at_primary: Optional[str] = None
383
+ """Time of the last session when main server started receiving the stream.
384
+
385
+ Datetime in ISO 8601. This means that if the stream was started 1 time, then
386
+ here will be the time it was started. If the stream was started several times,
387
+ or restarted on your side, then only the time of the last session is displayed
388
+ here.
389
+ """
390
+
391
+ transcoded_qualities: Optional[List[str]] = None
392
+ """Array of qualities to which live stream is transcoded"""
393
+
394
+ transcoding_speed: Optional[float] = None
395
+ """Speed of transcoding the stream. Mainly it must be 1.0 for real-time processing.
396
+
397
+ May be less than 1.0 if your stream has problems in delivery due to your local
398
+ internet provider's conditions, or the stream does not meet stream inbound
399
+ requirements. See Knowledge Base for details.
400
+ """
401
+
402
+ uri: Optional[str] = None
403
+ """
404
+ When using PULL method, this is the URL to pull a stream from. You can specify
405
+ multiple addresses separated by a space (" "), so you can organize a backup
406
+ plan. In this case, the specified addresses will be selected one by one using
407
+ round robin scheduling. If the first address does not respond, then the next one
408
+ in the list will be automatically requested, returning to the first and so on in
409
+ 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 24 hours of
411
+ inactivity of your streams we will stop PULL-ing, and will switch "active" field
412
+ to "false". Please, note that this field is for PULL only, so is not suitable
413
+ for PUSH. Look at fields "`push_url`" and "`push_url_srt`" from GET method.
414
+ """
415
+
416
+ video_height: Optional[float] = None
417
+ """Current height of frame of the original stream, if stream is transcoding"""
418
+
419
+ video_width: Optional[float] = None
420
+ """Current width of frame of the original stream, if stream is transcoding"""
@@ -0,0 +1,48 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Required, TypedDict
6
+
7
+ __all__ = ["StreamCreateClipParams"]
8
+
9
+
10
+ class StreamCreateClipParams(TypedDict, total=False):
11
+ duration: Required[int]
12
+ """
13
+ Requested segment duration in seconds to be cut. Please, note that cutting is
14
+ based on the idea of instantly creating a clip, instead of precise timing. So
15
+ final segment may be:
16
+
17
+ - Less than the specified value if there is less data in the DVR than the
18
+ requested segment.
19
+ - Greater than the specified value, because segment is aligned to the first and
20
+ last key frames of already stored fragment in DVR, this way -1 and +1 chunks
21
+ can be added to left and right. Duration of cutted segment cannot be greater
22
+ than DVR duration for this stream. Therefore, to change the maximum, use
23
+ "`dvr_duration`" parameter of this stream.
24
+ """
25
+
26
+ expiration: int
27
+ """
28
+ Expire time of the clip via a public link. Unix timestamp in seconds, absolute
29
+ value. This is the time how long the instant clip will be stored in the server
30
+ memory and can be accessed via public HLS/MP4 links. Download and/or use the
31
+ instant clip before this time expires. After the time has expired, the clip is
32
+ deleted from memory and is no longer available via the link. You need to create
33
+ a new segment, or use `vod_required: true` attribute. If value is omitted, then
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 <= 4h. Example:
36
+ `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
+
39
+ start: int
40
+ """
41
+ Starting point of the segment to cut. Unix timestamp in seconds, absolute value.
42
+ Example: `24.05.2024 14:00:00 (GMT) is Unix timestamp = 1716559200` If a value
43
+ from the past is specified, it is used as the starting point for the segment to
44
+ cut. If the value is omitted, then clip will start from now.
45
+ """
46
+
47
+ vod_required: bool
48
+ """Indicates if video needs to be stored also as permanent VOD"""
@@ -0,0 +1,165 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Iterable
6
+ from typing_extensions import Literal, Required, TypedDict
7
+
8
+ __all__ = ["StreamCreateParams"]
9
+
10
+
11
+ class StreamCreateParams(TypedDict, total=False):
12
+ name: Required[str]
13
+ """
14
+ Stream name. Often used as a human-readable name for the stream, but can contain
15
+ any text you wish. The values are not unique and may be repeated. Examples:
16
+
17
+ - Conference in July
18
+ - Stream #10003
19
+ - Open-Air Camera #31 Backstage
20
+ - 480fd499-2de2-4988-bc1a-a4eebe9818ee
21
+ """
22
+
23
+ active: bool
24
+ """Stream switch between on and off.
25
+
26
+ This is not an indicator of the status "stream is receiving and it is LIVE", but
27
+ rather an on/off switch. When stream is switched off, there is no way to process
28
+ it: PULL is deactivated and PUSH will return an error.
29
+
30
+ - true – stream can be processed
31
+ - false – stream is off, and cannot be processed
32
+ """
33
+
34
+ auto_record: bool
35
+ """Enables autotomatic recording of the stream when it started.
36
+
37
+ So you don't need to call recording manually. Result of recording is
38
+ automatically added to video hosting. For details see the
39
+ /streams/`start_recording` method and in knowledge base Values:
40
+
41
+ - true – auto recording is enabled
42
+ - false – auto recording is disabled
43
+ """
44
+
45
+ broadcast_ids: Iterable[int]
46
+ """IDs of broadcasts which will include this stream"""
47
+
48
+ cdn_id: int
49
+ """
50
+ ID of custom CDN resource from which the content will be delivered (only if you
51
+ know what you do)
52
+ """
53
+
54
+ client_entity_data: str
55
+ """
56
+ Custom meta field designed to store your own extra information about a video
57
+ entity: video source, video id, parameters, etc. We do not use this field in any
58
+ way when processing the stream. You can store any data in any format (string,
59
+ json, etc), saved as a text string. Example:
60
+ `` client_entity_data = '{ "`seq_id`": "1234567890", "name": "John Doe", "iat": 1516239022 }' ``
61
+ """
62
+
63
+ client_user_id: int
64
+ """Custom meta field for storing the Identifier in your system.
65
+
66
+ We do not use this field in any way when processing the stream. Example:
67
+ `client_user_id = 1001`
68
+ """
69
+
70
+ dvr_duration: int
71
+ """DVR duration in seconds if DVR feature is enabled for the stream.
72
+
73
+ So this is duration of how far the user can rewind the live stream.
74
+ `dvr_duration` range is [30...14400]. Maximum value is 4 hours = 14400 seconds.
75
+ If you need more, ask the Support Team please.
76
+ """
77
+
78
+ dvr_enabled: bool
79
+ """Enables DVR for the stream:
80
+
81
+ - true – DVR is enabled
82
+ - false – DVR is disabled
83
+ """
84
+
85
+ hls_mpegts_endlist_tag: bool
86
+ """
87
+ Add `#EXT-X-ENDLIST` tag within .m3u8 playlist after the last segment of a live
88
+ stream when broadcast is ended.
89
+ """
90
+
91
+ html_overlay: bool
92
+ """
93
+ Switch on mode to insert and display real-time HTML overlay widgets on top of
94
+ live streams
95
+ """
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
+ projection: Literal["regular", "vr360", "vr180", "vr360tb"]
114
+ """
115
+ Visualization mode for 360° streams, how the stream is rendered in our web
116
+ player ONLY. If you would like to show video 360° in an external video player,
117
+ then use parameters of that video player. Modes:
118
+
119
+ - regular – regular “flat” stream
120
+ - vr360 – display stream in 360° mode
121
+ - vr180 – display stream in 180° mode
122
+ - vr360tb – display stream in 3D 360° mode Top-Bottom
123
+ """
124
+
125
+ pull: bool
126
+ """Indicates if stream is pulled from external server or not.
127
+
128
+ Has two possible values:
129
+
130
+ - true – stream is received by PULL method. Use this when need to get stream
131
+ from external server by srt, rtmp\\ss, hls, dash, etc protocols.
132
+ - 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 or OBS Studio.
134
+ """
135
+
136
+ quality_set_id: int
137
+ """
138
+ Custom quality set ID for transcoding, if transcoding is required according to
139
+ your conditions. Look at GET /`quality_sets` method
140
+ """
141
+
142
+ record_type: Literal["origin", "transcoded"]
143
+ """Method of recording a stream.
144
+
145
+ Specifies the source from which the stream will be recorded: original or
146
+ transcoded. Types:
147
+
148
+ - "origin" – To record RMTP/SRT/etc original clean media source.
149
+ - "transcoded" – To record the output transcoded version of the stream,
150
+ including overlays, texts, logos, etc. additional media layers.
151
+ """
152
+
153
+ uri: str
154
+ """
155
+ When using PULL method, this is the URL to pull a stream from. You can specify
156
+ multiple addresses separated by a space (" "), so you can organize a backup
157
+ plan. In this case, the specified addresses will be selected one by one using
158
+ round robin scheduling. If the first address does not respond, then the next one
159
+ in the list will be automatically requested, returning to the first and so on in
160
+ 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 24 hours of
162
+ inactivity of your streams we will stop PULL-ing, and will switch "active" field
163
+ to "false". Please, note that this field is for PULL only, so is not suitable
164
+ for PUSH. Look at fields "`push_url`" and "`push_url_srt`" from GET method.
165
+ """
@@ -0,0 +1,10 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List
4
+ from typing_extensions import TypeAlias
5
+
6
+ from .clip import Clip
7
+
8
+ __all__ = ["StreamListClipsResponse"]
9
+
10
+ StreamListClipsResponse: TypeAlias = List[Clip]
@@ -0,0 +1,18 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import TypedDict
6
+
7
+ __all__ = ["StreamListParams"]
8
+
9
+
10
+ class StreamListParams(TypedDict, total=False):
11
+ page: int
12
+ """Query parameter. Use it to list the paginated content"""
13
+
14
+ with_broadcasts: int
15
+ """Query parameter.
16
+
17
+ Set to 1 to get details of the broadcasts associated with the stream
18
+ """
@@ -0,0 +1,21 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List
4
+ from typing_extensions import TypeAlias
5
+
6
+ from ..._models import BaseModel
7
+
8
+ __all__ = ["StreamSeries", "StreamSeryItem", "StreamSeryItemMetrics"]
9
+
10
+
11
+ class StreamSeryItemMetrics(BaseModel):
12
+ streams: List[int]
13
+
14
+
15
+ class StreamSeryItem(BaseModel):
16
+ client: int
17
+
18
+ metrics: StreamSeryItemMetrics
19
+
20
+
21
+ StreamSeries: TypeAlias = List[StreamSeryItem]