fastpixapi 1.1.3 → 1.2.0

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.
Files changed (127) hide show
  1. checksums.yaml +4 -4
  2. data/lib/crystalline/metadata_fields.rb +2 -0
  3. data/lib/crystalline/module.rb +12 -13
  4. data/lib/fastpix_client/dimensions.rb +3 -3
  5. data/lib/fastpix_client/errors.rb +1 -1
  6. data/lib/fastpix_client/in_video_ai_features.rb +8 -8
  7. data/lib/fastpix_client/input_video.rb +4 -3
  8. data/lib/fastpix_client/live_playback.rb +253 -0
  9. data/lib/fastpix_client/manage_live_stream.rb +13 -12
  10. data/lib/fastpix_client/manage_videos.rb +21 -23
  11. data/lib/fastpix_client/metrics.rb +3 -3
  12. data/lib/fastpix_client/models/components/addtrackrequest.rb +6 -2
  13. data/lib/fastpix_client/models/components/addtrackrequest.rbi +2 -0
  14. data/lib/fastpix_client/models/components/addtrackresponse.rb +6 -2
  15. data/lib/fastpix_client/models/components/addtrackresponse.rbi +2 -0
  16. data/lib/fastpix_client/models/components/audiotrack.rb +6 -2
  17. data/lib/fastpix_client/models/components/audiotrack.rbi +2 -0
  18. data/lib/fastpix_client/models/components/generatetrackresponse.rb +6 -2
  19. data/lib/fastpix_client/models/components/generatetrackresponse.rbi +2 -0
  20. data/lib/fastpix_client/models/components/getallmediaresponse.rb +11 -13
  21. data/lib/fastpix_client/models/components/getallmediaresponse.rbi +3 -1
  22. data/lib/fastpix_client/models/components/getallmediaresponse_mp4support.rb +32 -12
  23. data/lib/fastpix_client/models/components/getallmediaresponse_mp4support.rbi +11 -1
  24. data/lib/fastpix_client/models/components/getallmediaresponse_sourceresolution.rb +2 -0
  25. data/lib/fastpix_client/models/components/{getmediaresponse.rb → getmediadetailresponse.rb} +16 -18
  26. data/lib/fastpix_client/models/components/{getmediaresponse.rbi → getmediadetailresponse.rbi} +5 -3
  27. data/lib/fastpix_client/models/components/{getmediaresponse_maxresolution.rb → getmediadetailresponse_maxresolution.rb} +2 -2
  28. data/lib/fastpix_client/models/components/getmediadetailresponse_maxresolution.rbi +11 -0
  29. data/lib/fastpix_client/models/components/{getmediaresponse_mediaquality.rb → getmediadetailresponse_mediaquality.rb} +2 -2
  30. data/lib/fastpix_client/models/components/getmediadetailresponse_mediaquality.rbi +11 -0
  31. data/lib/fastpix_client/models/components/getmediadetailresponse_mp4support.rb +48 -0
  32. data/lib/fastpix_client/models/components/getmediadetailresponse_mp4support.rbi +21 -0
  33. data/lib/fastpix_client/models/components/{getmediaresponse_sourceresolution.rb → getmediadetailresponse_sourceresolution.rb} +4 -2
  34. data/lib/fastpix_client/models/components/getmediadetailresponse_sourceresolution.rbi +11 -0
  35. data/lib/fastpix_client/models/components/{getmediaresponse_status.rb → getmediadetailresponse_status.rb} +2 -2
  36. data/lib/fastpix_client/models/components/getmediadetailresponse_status.rbi +11 -0
  37. data/lib/fastpix_client/models/components/{getmediaresponse_track.rb → getmediadetailresponse_track.rb} +1 -1
  38. data/lib/fastpix_client/models/components/getmediadetailresponse_track.rbi +11 -0
  39. data/lib/fastpix_client/models/components/inputmediasettings.rb +7 -2
  40. data/lib/fastpix_client/models/components/inputmediasettings.rbi +2 -0
  41. data/lib/fastpix_client/models/components/live_media_clips.rb +11 -13
  42. data/lib/fastpix_client/models/components/live_media_clips.rbi +3 -1
  43. data/lib/fastpix_client/models/components/live_media_clips_mp4support.rb +32 -12
  44. data/lib/fastpix_client/models/components/live_media_clips_mp4support.rbi +11 -1
  45. data/lib/fastpix_client/models/components/live_media_clips_sourceresolution.rb +2 -0
  46. data/lib/fastpix_client/models/components/media.rb +11 -13
  47. data/lib/fastpix_client/models/components/media.rbi +3 -1
  48. data/lib/fastpix_client/models/components/media_mp4support.rb +32 -12
  49. data/lib/fastpix_client/models/components/media_mp4support.rbi +11 -1
  50. data/lib/fastpix_client/models/components/media_sourceresolution.rb +2 -0
  51. data/lib/fastpix_client/models/components/mediaclipresponse_data.rb +2 -2
  52. data/lib/fastpix_client/models/components/mediaclipresponse_data.rbi +1 -1
  53. data/lib/fastpix_client/models/components/playbackidrequest.rb +6 -2
  54. data/lib/fastpix_client/models/components/playbackidrequest.rbi +3 -1
  55. data/lib/fastpix_client/models/components/playbackidresponse.rb +6 -2
  56. data/lib/fastpix_client/models/components/playbackidresponse.rbi +3 -1
  57. data/lib/fastpix_client/models/components/playbackidsuccessresponse_data.rb +6 -2
  58. data/lib/fastpix_client/models/components/playbackidsuccessresponse_data.rbi +3 -1
  59. data/lib/fastpix_client/models/components/playbacksettings.rb +6 -2
  60. data/lib/fastpix_client/models/components/playbacksettings.rbi +3 -1
  61. data/lib/fastpix_client/models/components/playlistbyidresponsemedialistitem.rb +2 -2
  62. data/lib/fastpix_client/models/components/playlistbyidresponsemedialistitem.rbi +1 -1
  63. data/lib/fastpix_client/models/components/sourceaccessmedia.rb +11 -13
  64. data/lib/fastpix_client/models/components/sourceaccessmedia.rbi +3 -1
  65. data/lib/fastpix_client/models/components/sourceaccessmedia_mp4support.rb +32 -12
  66. data/lib/fastpix_client/models/components/sourceaccessmedia_mp4support.rbi +11 -1
  67. data/lib/fastpix_client/models/components/sourceaccessmedia_sourceresolution.rb +2 -0
  68. data/lib/fastpix_client/models/components/subtitletrack.rb +6 -2
  69. data/lib/fastpix_client/models/components/subtitletrack.rbi +2 -0
  70. data/lib/fastpix_client/models/components/tracksubtitlesgeneraterequest.rb +6 -2
  71. data/lib/fastpix_client/models/components/tracksubtitlesgeneraterequest.rbi +2 -0
  72. data/lib/fastpix_client/models/components/update_media.rb +11 -13
  73. data/lib/fastpix_client/models/components/update_media.rbi +3 -1
  74. data/lib/fastpix_client/models/components/update_media_maxresolution.rb +0 -1
  75. data/lib/fastpix_client/models/components/update_media_mp4support.rb +32 -12
  76. data/lib/fastpix_client/models/components/update_media_mp4support.rbi +11 -1
  77. data/lib/fastpix_client/models/components/updatetrackrequest.rb +7 -7
  78. data/lib/fastpix_client/models/components/updatetrackrequest.rbi +2 -2
  79. data/lib/fastpix_client/models/components/updatetrackresponse.rb +6 -2
  80. data/lib/fastpix_client/models/components/updatetrackresponse.rbi +2 -0
  81. data/lib/fastpix_client/models/components/videotrack.rb +6 -2
  82. data/lib/fastpix_client/models/components/videotrack.rbi +2 -0
  83. data/lib/fastpix_client/models/components/videotrackforgetall.rb +6 -2
  84. data/lib/fastpix_client/models/components/videotrackforgetall.rbi +2 -0
  85. data/lib/fastpix_client/models/components.rb +7 -7
  86. data/lib/fastpix_client/models/operations/get_media_response.rb +1 -1
  87. data/lib/fastpix_client/models/operations/get_media_responsebody.rb +2 -2
  88. data/lib/fastpix_client/models/operations/update_live_stream_domain_restrictions_data.rb +40 -0
  89. data/lib/fastpix_client/models/operations/update_live_stream_domain_restrictions_data.rbi +17 -0
  90. data/lib/fastpix_client/models/operations/update_live_stream_domain_restrictions_defaultpolicy.rb +21 -0
  91. data/lib/fastpix_client/models/operations/update_live_stream_domain_restrictions_defaultpolicy.rbi +11 -0
  92. data/lib/fastpix_client/models/operations/update_live_stream_domain_restrictions_request.rb +40 -0
  93. data/lib/fastpix_client/models/operations/update_live_stream_domain_restrictions_request.rbi +17 -0
  94. data/lib/fastpix_client/models/operations/update_live_stream_domain_restrictions_requestbody.rb +40 -0
  95. data/lib/fastpix_client/models/operations/update_live_stream_domain_restrictions_requestbody.rbi +17 -0
  96. data/lib/fastpix_client/models/operations/update_live_stream_domain_restrictions_response.rb +48 -0
  97. data/lib/fastpix_client/models/operations/update_live_stream_domain_restrictions_response.rbi +21 -0
  98. data/lib/fastpix_client/models/operations/update_live_stream_domain_restrictions_responsebody.rb +36 -0
  99. data/lib/fastpix_client/models/operations/update_live_stream_domain_restrictions_responsebody.rbi +15 -0
  100. data/lib/fastpix_client/models/operations/update_live_stream_user_agent_restrictions_data.rb +40 -0
  101. data/lib/fastpix_client/models/operations/update_live_stream_user_agent_restrictions_data.rbi +17 -0
  102. data/lib/fastpix_client/models/operations/update_live_stream_user_agent_restrictions_defaultpolicy.rb +21 -0
  103. data/lib/fastpix_client/models/operations/update_live_stream_user_agent_restrictions_defaultpolicy.rbi +11 -0
  104. data/lib/fastpix_client/models/operations/update_live_stream_user_agent_restrictions_request.rb +40 -0
  105. data/lib/fastpix_client/models/operations/update_live_stream_user_agent_restrictions_request.rbi +17 -0
  106. data/lib/fastpix_client/models/operations/update_live_stream_user_agent_restrictions_requestbody.rb +40 -0
  107. data/lib/fastpix_client/models/operations/update_live_stream_user_agent_restrictions_requestbody.rbi +17 -0
  108. data/lib/fastpix_client/models/operations/update_live_stream_user_agent_restrictions_response.rb +48 -0
  109. data/lib/fastpix_client/models/operations/update_live_stream_user_agent_restrictions_response.rbi +21 -0
  110. data/lib/fastpix_client/models/operations/update_live_stream_user_agent_restrictions_responsebody.rb +36 -0
  111. data/lib/fastpix_client/models/operations/update_live_stream_user_agent_restrictions_responsebody.rbi +15 -0
  112. data/lib/fastpix_client/models/operations.rb +12 -0
  113. data/lib/fastpix_client/playlist.rb +2 -1
  114. data/lib/fastpix_client/sdkconfiguration.rb +3 -3
  115. data/lib/fastpix_client/simulcast_stream.rb +3 -3
  116. data/lib/fastpix_client/start_live_stream.rb +4 -4
  117. data/lib/fastpix_client/views.rb +3 -3
  118. metadata +58 -56
  119. data/lib/fastpix_client/models/components/getmediaresponse_maxresolution.rbi +0 -11
  120. data/lib/fastpix_client/models/components/getmediaresponse_mediaquality.rbi +0 -11
  121. data/lib/fastpix_client/models/components/getmediaresponse_mp4support.rb +0 -28
  122. data/lib/fastpix_client/models/components/getmediaresponse_mp4support.rbi +0 -11
  123. data/lib/fastpix_client/models/components/getmediaresponse_sourceresolution.rbi +0 -11
  124. data/lib/fastpix_client/models/components/getmediaresponse_status.rbi +0 -11
  125. data/lib/fastpix_client/models/components/getmediaresponse_track.rbi +0 -11
  126. data/test/sdk_examples_test.rb +0 -20
  127. data/test/test_helper.rb +0 -29
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b6ae3027c5f37f777cf9a979ddd36123a1bb1e93e0ff5f2a9b70a4d27928e73c
4
- data.tar.gz: c097e0cfb9dc6c84144740416b8a7bdc7e476ca55dab42714ca19db73d7d91bc
3
+ metadata.gz: 69e080df95d19c998f9ea5af17e790f86d09b0c55eb778ad27493ea8167fab0e
4
+ data.tar.gz: d6bd52c3397cb581e209754da21f53a00c4e20efb14a17bbf1e846e0d3705c57
5
5
  SHA512:
6
- metadata.gz: 070f775ab0edfac491bb4667b3b94f4f031e67fc460435ab227e9821c389a7a49ab4a913c8b97a60069849d2e61f13dbf3e2d54c3ea40759aaf296ab02d44131
7
- data.tar.gz: dd6640b41c25a8dd2df43f4790b3506f1b35b285362073343bc856bed854de6347304b6edb7e5a5f119eb0666ac22c7427b486c2b50a949e76b6b403ce1d07aa
6
+ metadata.gz: c32ebd5d94cd37fa76c61b8d7ca7ab066cb7fcd0fd84ae42bf9bca7490cc20ddbd850059fb87e381026e22ab04e1fb1385f2ae85032c77d2a2af74c6275e445f
7
+ data.tar.gz: 4d1bc6c94cc9d50176ca27a9a858401b5b0f28724fcd1f09120240fcc668d98fdcb08cd543545414bf817cae0b0675705bb7d00de208b599d256c47e5c027e54
@@ -53,6 +53,8 @@ module Crystalline
53
53
  # rubocop:enable Lint/SuppressedException
54
54
  return value
55
55
  elsif field_type.to_s == 'Float'
56
+ raise TypeError, "Cannot convert #{value.inspect} to Float. The value is of type #{value.class}" unless value.is_a?(::Numeric)
57
+
56
58
  return value.to_f
57
59
 
58
60
  end
@@ -32,19 +32,7 @@ module Crystalline
32
32
  if type.instance_of?(Class) && type.include?(::Crystalline::MetadataFields)
33
33
  type.from_dict(data)
34
34
  elsif Crystalline::Utils.union? type
35
- union_types = Crystalline::Utils.get_union_types(type)
36
- union_types = union_types.sort_by { |klass| Crystalline.non_nilable_attr_count(klass) }
37
-
38
- union_types.each do |union_type|
39
- unmarshalled_val = Crystalline.unmarshal_json(data, union_type)
40
- return unmarshalled_val
41
- rescue TypeError
42
- next
43
- rescue NoMethodError
44
- next
45
- rescue KeyError
46
- next
47
- end
35
+ unmarshal_union(data, type)
48
36
  elsif Crystalline::Utils.arr? type
49
37
  data.map { |v| Crystalline.unmarshal_json(v, Crystalline::Utils.arr_of(type)) }
50
38
  elsif Crystalline::Utils.hash? type
@@ -60,6 +48,17 @@ module Crystalline
60
48
  end
61
49
  end
62
50
 
51
+ def self.unmarshal_union(data, type)
52
+ union_types = Crystalline::Utils.get_union_types(type)
53
+ union_types = union_types.sort_by { |klass| Crystalline.non_nilable_attr_count(klass) }
54
+
55
+ union_types.each do |union_type|
56
+ return Crystalline.unmarshal_json(data, union_type)
57
+ rescue TypeError, NoMethodError, KeyError
58
+ next
59
+ end
60
+ end
61
+
63
62
  def self.json_encode(val, primitives: true)
64
63
  if val.class.respond_to? :enums
65
64
  val.serialize
@@ -79,7 +79,7 @@ module FastpixClient
79
79
  #
80
80
  # The dimensions retrieved from this endpoint can be used in conjunction with the <a href="https://fastpix.com/docs/video-data-api/views/list-video-views">list video views</a> and <a href="https://fastpix.com/docs/video-data-api/views/list-by-top-content">list by top content</a> endpoints to filter results based on specific criteria. For example, you can filter views by `browser_name`, `os_name`, `device_type`, and more.
81
81
  #
82
- # Related guides: <a href="https://fastpix.com/docs/concepts/what-video-data-do-we-capture#/">What Video Data do we capture?</a> , <a href="https://fastpix.com/docs/working-with-video-data/pass-custom-metadata-to-metrics">Use passable dimensions</a>
82
+ # Related guides: <a href="https://fastpix.com/docs/video-data/what-video-data-do-we-capture">What Video Data do we capture?</a> , <a href="https://fastpix.com/docs/video-data/pass-custom-metadata-to-metrics">Use passable dimensions</a>
83
83
  #
84
84
  url, params = @sdk_configuration.get_server_details
85
85
  base_url = Utils.template_url(url, params)
@@ -184,15 +184,15 @@ module FastpixClient
184
184
  # list_filter_values_for_dimension - List the filter values for a dimension
185
185
  # This endpoint returns the filter values associated with a specific dimension, along with the total number of video views for each value. For example, it can list all `browser_name` (dimension) and show how many views occurred for all available browsers like Chrome, Safari (filter values).
186
186
  #
187
+ # In order to use the <a href="https://fastpix.com/docs/video-data/use-custom-dimensions">Custom Dimensions</a>, you must enable them in the dashboard under settings option based on the plan you have opted for.
187
188
  #
188
- # In order to use the <a href="https://fastpix.com/docs/working-with-video-data/use-custom-dimensions">Custom Dimensions</a>, you must enable them in the dashboard under settings option based on the plan you have opted for.
189
189
  #
190
190
  # #### Example
191
191
  #
192
192
  # A developer wants to know how their video content performs across different browsers. By calling this endpoint for the `device_type` dimension, they can retrieve a breakdown of video views by each device (for example, Desktop, Mobile, Tablet). This data helps the developer understand where optimizations or troubleshooting is necessary.
193
193
  #
194
194
  #
195
- # Related guide: <a href="https://fastpix.com/docs/working-with-video-data/explore-the-dashboard#filters-and-timeframes">Filters and timespan</a>
195
+ # Related guide: <a href="https://fastpix.com/docs/video-data/explore-the-dashboard#filters-and-timeframes">Filters and timespan</a>
196
196
  #
197
197
  request = Models::Operations::ListFilterValuesForDimensionRequest.new(
198
198
  dimensions_id: dimensions_id,
@@ -89,7 +89,7 @@ module FastpixClient
89
89
  # * **code:** The error code associated with the specific error.
90
90
  #
91
91
  #
92
- # Related guide: <a href="https://fastpix.com/docs/working-with-video-data/troubleshoot-playback-errors">Troubleshoot errors</a>
92
+ # Related guide: <a href="https://fastpix.com/docs/video-data/troubleshoot-playback-errors">Troubleshoot errors</a>
93
93
  #
94
94
  request = Models::Operations::ListErrorsRequest.new(
95
95
  timespan: timespan,
@@ -102,7 +102,7 @@ module FastpixClient
102
102
  # 3. Include the `summaryLength` parameter, specify the desired length of the summary in words (for example, 120 words), this determines how concise or detailed the summary will be. If no specific summary length is provided, the default length will be 100 words.
103
103
  # 4. The response includes the updated media data and confirmation of the changes applied.
104
104
  #
105
- # You can use the <a href="https://fastpix.com/docs/ai-events/in-video-ai-events#videomediaaisummaryready">video.mediaAI.summary.ready</a> webhook event to track and notify about the summary generation.
105
+ # You can use the <a href="https://fastpix.com/docs/webhooks/in-video-ai-events#videomediaaisummaryready">video.mediaAI.summary.ready</a> webhook event to track and notify about the summary generation.
106
106
  #
107
107
  #
108
108
  #
@@ -110,7 +110,7 @@ module FastpixClient
110
110
  #
111
111
  # **Use case**: This is particularly useful when a user uploads a video and later chooses to generate a summary without needing to re-upload the video.
112
112
  #
113
- # Related guide: <a href="https://fastpix.com/docs/video-intelligence/generate-a-video-summary">Video summary</a>
113
+ # Related guide: <a href="https://fastpix.com/docs/in-video-ai/generate-a-video-summary">Video summary</a>
114
114
  #
115
115
  request = Models::Operations::UpdateMediaSummaryRequest.new(
116
116
  media_id: media_id,
@@ -233,11 +233,11 @@ module FastpixClient
233
233
  # 2. Include the `chapters` parameter in the request body to enable.
234
234
  # 3. The response contains the updated media data, confirming the changes made.
235
235
  #
236
- # You can use the <a href="https://fastpix.com/docs/ai-events/in-video-ai-events#videomediaaichaptersready">video.mediaAI.chapters.ready</a> webhook event to track and notify about the chapters generation.
237
236
  #
237
+ # You can use the <a href="https://fastpix.com/docs/webhooks/in-video-ai-events#videomediaaichaptersready">video.mediaAI.chapters.ready</a> webhook event to track and notify about the chapters generation.
238
238
  # **Use case:** This is particularly useful when a user uploads a video and later decides to enable chapters without re-uploading the entire video.
239
239
  #
240
- # Related guide: <a href="https://fastpix.com/docs/video-intelligence/generate-video-chapters">Video chapters</a>
240
+ # Related guide: <a href="https://fastpix.com/docs/in-video-ai/generate-video-chapters">Video chapters</a>
241
241
  #
242
242
  request = Models::Operations::UpdateMediaChaptersRequest.new(
243
243
  media_id: media_id,
@@ -365,11 +365,11 @@ module FastpixClient
365
365
  # 2. Include the `namedEntities` parameter in the request body to enable.
366
366
  # 3. Receive a response containing the updated media data, confirming the changes made.
367
367
  #
368
- # You can use the <a href="https://fastpix.com/docs/ai-events/in-video-ai-events#videomediaainamedentitiesready">video.mediaAI.named-entities.ready</a> webhook event to track and notify about the named entities extraction.
368
+ # You can use the <a href="https://fastpix.com/docs/webhooks/in-video-ai-events#videomediaainamedentitiesready">video.mediaAI.named-entities.ready</a> webhook event to track and notify about the named entities extraction.
369
369
  #
370
370
  # **Use case:** If a user uploads a video and later decides to enable named entity extraction without re-uploading the entire video.
371
371
  #
372
- # Related guide: <a href="https://fastpix.com/docs/video-intelligence/extract-named-entities-from-a-video">Named entities</a>
372
+ # Related guide: <a href="https://fastpix.com/docs/in-video-ai/extract-named-entities-from-a-video">Named entities</a>
373
373
  #
374
374
  request = Models::Operations::UpdateMediaNamedEntitiesRequest.new(
375
375
  media_id: media_id,
@@ -492,11 +492,11 @@ module FastpixClient
492
492
  # 2. Include the `moderation` object and provide the requried `type` parameter in the request body to specify the media type (for example, video/audio/av).
493
493
  # 4. The response contains the updated media data, confirming the changes made.
494
494
  #
495
- # You can use the <a href="https://fastpix.com/docs/ai-events/in-video-ai-events#videomediaaimoderationready">video.mediaAI.moderation.ready</a> webhook event to track and notify about the detected moderation results.
495
+ # You can use the <a href="https://fastpix.com/docs/webhooks/in-video-ai-events#videomediaaimoderationready">video.mediaAI.moderation.ready</a> webhook event to track and notify about the detected moderation results.
496
496
  #
497
497
  # **Use case:** This is particularly useful when a user uploads a video and later decides to enable moderation detection without the need to re-upload it.
498
498
  #
499
- # Related guide: <a href="https://fastpix.com/docs/video-intelligence/detect-nsfw-content-and-profanity">Moderate NSFW & Profanity</a>
499
+ # Related guide: <a href="https://fastpix.com/docs/in-video-ai/detect-nsfw-content-and-profanity">Moderate NSFW & Profanity</a>
500
500
  #
501
501
  request = Models::Operations::UpdateMediaModerationRequest.new(
502
502
  media_id: media_id,
@@ -127,10 +127,11 @@ module FastpixClient
127
127
  #
128
128
  # 4. Use the id in subsequent API calls, such as checking the status of the media with the <a href="https://fastpix.com/docs/video-on-demand-api/manage-videos/get-media">Get Media by ID</a> endpoint to determine when the media is ready for playback.
129
129
  #
130
- # FastPix uses webhooks to tell your application about things that happen in the background, outside of the API regular request flow. For instance, after the media file is created (but not yet processed or encoded), FastPix sends a `POST` request to your specified webhook URL with the event <a href="https://fastpix.com/docs/vod-events/media-events#videomediacreated">video.media.created</a>.
130
+ # FastPix uses webhooks to tell your application about things that happen in the background, outside of the API regular request flow. For instance, after the media file is created (but not yet processed or encoded), FastPix sends a `POST` request to your specified webhook URL with the event <a href="https://fastpix.com/docs/webhooks/media-events#videomediacreated">video.media.created</a>.
131
131
  #
132
132
  #
133
- # After processing completes, monitor the events <a href="https://fastpix.com/docs/vod-events/media-events#videomediaready">video.media.ready</a> and <a href="https://fastpix.com/docs/vod-events/media-events#videomediafailed">video.media.failed</a> to track the status of the media file.
133
+ # After processing completes, monitor the events <a href="https://fastpix.com/docs/webhooks/media-events#videomediaready">video.media.ready</a> and <a href="https://fastpix.com/docs/webhooks/media-events#videomediafailed">video.media.failed</a> to track the status of the media file.
134
+
134
135
  #
135
136
  # Related guide: <a href="https://fastpix.com/docs/upload-videos/upload-videos-from-a-url">Upload videos from URL</a>
136
137
  #
@@ -251,7 +252,7 @@ module FastpixClient
251
252
  #
252
253
  # 2. The response includes an `uploadId` and a signed `url` for direct video file upload.
253
254
  #
254
- # 3. Upload your video file to the provided url by making a PUT request. The API accepts the media file from your device and uploads it to the FastPix platform. (Refer to <a href="https://fastpix.com/docs/upload-videos/upload-videos-from-device#step-3-initiate-the-upload">Step 3: Initiate the upload</a> for complete instructions.)
255
+ # 3. Upload your video file to the provided url by making a PUT request. The API accepts the media file from your device and uploads it to the FastPix platform. (Refer to <a href="https://fastpix.com/docs/upload-videos/upload-videos-from-device#initiate-the-upload-session-web-only">Step 3: Initiate the upload</a> for complete instructions.)
255
256
  #
256
257
  #
257
258
  # 4. Once uploaded, the media undergoes processing and is assigned a unique ID for tracking. Retain this `uploadId` for any future operations related to this upload.
@@ -439,5 +439,258 @@ module FastpixClient
439
439
  end
440
440
  end
441
441
  end
442
+
443
+
444
+
445
+ sig { params(body: Models::Operations::UpdateLiveStreamDomainRestrictionsRequestBody, stream_id: ::String, playback_id: ::String, timeout_ms: T.nilable(Integer)).returns(Models::Operations::UpdateLiveStreamDomainRestrictionsResponse) }
446
+ def update_live_stream_domain_restrictions(body:, stream_id:, playback_id:, timeout_ms: nil)
447
+ # update_live_stream_domain_restrictions - Update domain restrictions for a live stream playback ID
448
+ # This endpoint updates domain-level restrictions for a specific playback ID associated with a live stream.
449
+ # It allows you to restrict playback to specific domains or block known unauthorized domains.
450
+ #
451
+ # **How it works:**
452
+ # 1. Make a `PATCH` request to this endpoint with your desired domain access configuration.
453
+ # 2. Set a default policy (`allow` or `deny`) and specify domain names in the `allow` or `deny` lists.
454
+ # 3. This is commonly used to restrict video playback to your website or approved client domains.
455
+ #
456
+ # **Example:**
457
+ # A streaming service can allow playback only from `example.com` and deny all others by setting: `"defaultPolicy": "deny"` and `"allow": ["example.com"]`.
458
+ #
459
+ request = Models::Operations::UpdateLiveStreamDomainRestrictionsRequest.new(
460
+ stream_id: stream_id,
461
+ playback_id: playback_id,
462
+ body: body
463
+ )
464
+ url, params = @sdk_configuration.get_server_details
465
+ base_url = Utils.template_url(url, params)
466
+ url = Utils.generate_url(
467
+ Models::Operations::UpdateLiveStreamDomainRestrictionsRequest,
468
+ base_url,
469
+ '/live/streams/{streamId}/playback-ids/{playbackId}/domains',
470
+ request
471
+ )
472
+ headers = {}
473
+ headers = T.cast(headers, T::Hash[String, String])
474
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :body, :json)
475
+ headers['content-type'] = req_content_type
476
+ body = encode_request_body(req_content_type, data, form)
477
+ headers['Accept'] = CONTENT_TYPE_JSON
478
+ headers[USER_AGENT_HEADER] = @sdk_configuration.user_agent
479
+
480
+ security = @sdk_configuration.security_source&.call
481
+
482
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
483
+ timeout ||= @sdk_configuration.timeout
484
+
485
+
486
+ connection = @sdk_configuration.client
487
+
488
+ hook_ctx = SDKHooks::HookContext.new(
489
+ config: @sdk_configuration,
490
+ base_url: base_url,
491
+ oauth2_scopes: nil,
492
+ operation_id: 'update-live-stream-domain-restrictions',
493
+ security_source: @sdk_configuration.security_source
494
+ )
495
+
496
+ error = T.let(nil, T.nilable(StandardError))
497
+ http_response = T.let(nil, T.nilable(Faraday::Response))
498
+
499
+
500
+ begin
501
+ http_response = T.must(connection).patch(url) do |req|
502
+ req.body = body
503
+ req.headers.merge!(headers)
504
+ req.options.timeout = timeout unless timeout.nil?
505
+ Utils.configure_request_security(req, security)
506
+
507
+ @sdk_configuration.hooks.before_request(
508
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
509
+ hook_ctx: hook_ctx
510
+ ),
511
+ request: req
512
+ )
513
+ end
514
+ rescue StandardError => e
515
+ error = e
516
+ ensure
517
+ http_response = apply_after_request_hooks(http_response, error, hook_ctx)
518
+ end
519
+
520
+ content_type = http_response.headers.fetch(CONTENT_TYPE_HEADER, DEFAULT_CONTENT_TYPE)
521
+ if Utils.match_status_code(http_response.status, ['200'])
522
+ if Utils.match_content_type(content_type, CONTENT_TYPE_JSON)
523
+ http_response = @sdk_configuration.hooks.after_success(
524
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
525
+ hook_ctx: hook_ctx
526
+ ),
527
+ response: http_response
528
+ )
529
+ response_data = http_response.env.response_body
530
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Operations::UpdateLiveStreamDomainRestrictionsResponseBody)
531
+ response = Models::Operations::UpdateLiveStreamDomainRestrictionsResponse.new(
532
+ status_code: http_response.status,
533
+ content_type: content_type,
534
+ raw_response: http_response,
535
+ object: T.unsafe(obj)
536
+ )
537
+
538
+ return response
539
+ else
540
+ raise ::FastpixClient::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), UNKNOWN_CONTENT_TYPE_ERROR
541
+ end
542
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
543
+ raise ::FastpixClient::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), API_ERROR_OCCURRED
544
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
545
+ raise ::FastpixClient::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), API_ERROR_OCCURRED
546
+ else
547
+ if Utils.match_content_type(content_type, CONTENT_TYPE_JSON)
548
+ http_response = @sdk_configuration.hooks.after_success(
549
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
550
+ hook_ctx: hook_ctx
551
+ ),
552
+ response: http_response
553
+ )
554
+ response_data = http_response.env.response_body
555
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Components::DefaultError)
556
+ response = Models::Operations::UpdateLiveStreamDomainRestrictionsResponse.new(
557
+ status_code: http_response.status,
558
+ content_type: content_type,
559
+ raw_response: http_response,
560
+ default_error: T.unsafe(obj)
561
+ )
562
+
563
+ return response
564
+ else
565
+ raise ::FastpixClient::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), UNKNOWN_CONTENT_TYPE_ERROR
566
+ end
567
+ end
568
+ end
569
+
570
+
571
+ sig { params(body: Models::Operations::UpdateLiveStreamUserAgentRestrictionsRequestBody, stream_id: ::String, playback_id: ::String, timeout_ms: T.nilable(Integer)).returns(Models::Operations::UpdateLiveStreamUserAgentRestrictionsResponse) }
572
+ def update_live_stream_user_agent_restrictions(body:, stream_id:, playback_id:, timeout_ms: nil)
573
+ # update_live_stream_user_agent_restrictions - Update user-agent restrictions for a live stream playback ID
574
+ # This endpoint allows updating user-agent restrictions for a specific playback ID associated with a live stream.
575
+ # It can be used to allow or deny specific user-agents during playback request evaluation.
576
+ #
577
+ # **How it works:**
578
+ # 1. Make a `PATCH` request to this endpoint with your desired user-agent access configuration.
579
+ # 2. Specify a default policy (`allow` or `deny`) and provide specific `allow` or `deny` lists.
580
+ # 3. Use this to restrict access to specific browsers, devices, or bots.
581
+ #
582
+ # **Example:**
583
+ # A developer may configure a playback ID to deny access from known scraping user-agents while allowing all others by default.
584
+ #
585
+ request = Models::Operations::UpdateLiveStreamUserAgentRestrictionsRequest.new(
586
+ stream_id: stream_id,
587
+ playback_id: playback_id,
588
+ body: body
589
+ )
590
+ url, params = @sdk_configuration.get_server_details
591
+ base_url = Utils.template_url(url, params)
592
+ url = Utils.generate_url(
593
+ Models::Operations::UpdateLiveStreamUserAgentRestrictionsRequest,
594
+ base_url,
595
+ '/live/streams/{streamId}/playback-ids/{playbackId}/user-agents',
596
+ request
597
+ )
598
+ headers = {}
599
+ headers = T.cast(headers, T::Hash[String, String])
600
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :body, :json)
601
+ headers['content-type'] = req_content_type
602
+ body = encode_request_body(req_content_type, data, form)
603
+ headers['Accept'] = CONTENT_TYPE_JSON
604
+ headers[USER_AGENT_HEADER] = @sdk_configuration.user_agent
605
+
606
+ security = @sdk_configuration.security_source&.call
607
+
608
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
609
+ timeout ||= @sdk_configuration.timeout
610
+
611
+
612
+ connection = @sdk_configuration.client
613
+
614
+ hook_ctx = SDKHooks::HookContext.new(
615
+ config: @sdk_configuration,
616
+ base_url: base_url,
617
+ oauth2_scopes: nil,
618
+ operation_id: 'update-live-stream-user-agent-restrictions',
619
+ security_source: @sdk_configuration.security_source
620
+ )
621
+
622
+ error = T.let(nil, T.nilable(StandardError))
623
+ http_response = T.let(nil, T.nilable(Faraday::Response))
624
+
625
+
626
+ begin
627
+ http_response = T.must(connection).patch(url) do |req|
628
+ req.body = body
629
+ req.headers.merge!(headers)
630
+ req.options.timeout = timeout unless timeout.nil?
631
+ Utils.configure_request_security(req, security)
632
+
633
+ @sdk_configuration.hooks.before_request(
634
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
635
+ hook_ctx: hook_ctx
636
+ ),
637
+ request: req
638
+ )
639
+ end
640
+ rescue StandardError => e
641
+ error = e
642
+ ensure
643
+ http_response = apply_after_request_hooks(http_response, error, hook_ctx)
644
+ end
645
+
646
+ content_type = http_response.headers.fetch(CONTENT_TYPE_HEADER, DEFAULT_CONTENT_TYPE)
647
+ if Utils.match_status_code(http_response.status, ['200'])
648
+ if Utils.match_content_type(content_type, CONTENT_TYPE_JSON)
649
+ http_response = @sdk_configuration.hooks.after_success(
650
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
651
+ hook_ctx: hook_ctx
652
+ ),
653
+ response: http_response
654
+ )
655
+ response_data = http_response.env.response_body
656
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Operations::UpdateLiveStreamUserAgentRestrictionsResponseBody)
657
+ response = Models::Operations::UpdateLiveStreamUserAgentRestrictionsResponse.new(
658
+ status_code: http_response.status,
659
+ content_type: content_type,
660
+ raw_response: http_response,
661
+ object: T.unsafe(obj)
662
+ )
663
+
664
+ return response
665
+ else
666
+ raise ::FastpixClient::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), UNKNOWN_CONTENT_TYPE_ERROR
667
+ end
668
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
669
+ raise ::FastpixClient::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), API_ERROR_OCCURRED
670
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
671
+ raise ::FastpixClient::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), API_ERROR_OCCURRED
672
+ else
673
+ if Utils.match_content_type(content_type, CONTENT_TYPE_JSON)
674
+ http_response = @sdk_configuration.hooks.after_success(
675
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
676
+ hook_ctx: hook_ctx
677
+ ),
678
+ response: http_response
679
+ )
680
+ response_data = http_response.env.response_body
681
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Components::DefaultError)
682
+ response = Models::Operations::UpdateLiveStreamUserAgentRestrictionsResponse.new(
683
+ status_code: http_response.status,
684
+ content_type: content_type,
685
+ raw_response: http_response,
686
+ default_error: T.unsafe(obj)
687
+ )
688
+
689
+ return response
690
+ else
691
+ raise ::FastpixClient::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), UNKNOWN_CONTENT_TYPE_ERROR
692
+ end
693
+ end
694
+ end
442
695
  end
443
696
  end
@@ -216,7 +216,7 @@ module FastpixClient
216
216
  #
217
217
  # Suppose a content creator is hosting a live concert and wants to display the number of live viewers on their dashboard. This endpoint can be queried to show up-to-date viewer statistics.
218
218
  #
219
- # Related guide: <a href="https://fastpix.com/docs/manage-live-streams/create-and-manage-live-streams">Manage streams</a>
219
+ # Related guide: <a href="https://fastpix.com/docs/live-streaming/create-and-manage-live-streams#delete-a-stream">Manage streams</a>
220
220
  request = Models::Operations::GetLiveStreamViewerCountByIdRequest.new(
221
221
  stream_id: stream_id
222
222
  )
@@ -331,8 +331,8 @@ module FastpixClient
331
331
  #
332
332
  # Suppose a news agency is broadcasting a live event and wants to track the configurations set for the live stream while also checking the stream's status.
333
333
  #
334
- #
335
- # Related guide: <a href="https://fastpix.com/docs/manage-live-streams/create-and-manage-live-streams">Manage streams</a>
334
+ # Related guide: <a href="https://fastpix.com/docs/live-streaming/create-and-manage-live-streams#delete-a-stream">Manage streams</a>
335
+ #
336
336
  request = Models::Operations::GetLiveStreamByIdRequest.new(
337
337
  stream_id: stream_id
338
338
  )
@@ -444,14 +444,14 @@ module FastpixClient
444
444
  # delete_live_stream - Delete a stream
445
445
  # Permanently deletes a specified live stream from the workspace. If the stream is active, the encoder is disconnected and ingestion stops immediately. This action is irreversible, and any future playback attempts fail as a result.
446
446
  #
447
- # Provide the `streamId` in the request to terminate active connections and remove the stream from the workspace. You can further look for <a href="https://fastpix.com/docs/live-stream-events/live-events#videolive_streamdeleted">video.live_stream.deleted</a> webhook to notify your system about the status.
447
+ # Provide the `streamId` in the request to terminate active connections and remove the stream from the workspace. You can further look for <a href="https://fastpix.com/docs/webhooks/live-events#videolive_streamdeleted">video.live_stream.deleted</a> webhook to notify your system about the status.
448
448
  #
449
449
  # #### Example
450
450
  #
451
451
  # For an online concert platform, a trial stream was mistakenly made public. The event manager deletes the stream before the concert begins to avoid confusion among viewers.
452
452
  #
453
453
  #
454
- # Related guide: <a href="https://fastpix.com/docs/manage-live-streams/create-and-manage-live-streams">Manage streams</a>
454
+ # Related guide: <a href="https://fastpix.com/docs/live-streaming/create-and-manage-live-streams#delete-a-stream">Manage streams</a>
455
455
  request = Models::Operations::DeleteLiveStreamRequest.new(
456
456
  stream_id: stream_id
457
457
  )
@@ -564,15 +564,16 @@ module FastpixClient
564
564
  # This endpoint allows you to modify the parameters of an existing live stream, such as its `metadata` (title, description) or the `reconnectWindow`. It’s useful for making changes to a stream that has already been created but not yet ended. After the live stream is disabled, you cannot update a stream.
565
565
  #
566
566
  #
567
- # The updated stream parameters and the `streamId` needs to be shared in the request, and FastPix returns the updated stream details. After the update, <a href="https://fastpix.com/docs/live-stream-events/live-events#videolive_streamupdated">video.live_stream.updated</a> webhook event notifies your system.
568
- #
567
+ #
568
+ # The updated stream parameters and the `streamId` needs to be shared in the request, and FastPix returns the updated stream details. After the update, <a href="https://fastpix.com/docs/webhooks/live-events#videolive_streamupdated">video.live_stream.updated</a> webhook event notifies your system.
569
569
  # #### Example
570
570
  #
571
571
  # A host realizes they need to extend the reconnect window for their live stream in case they lose connection temporarily during the event. Or suppose during a multi-day online conference, the event organizers need to update the stream title to reflect the next day"s session while keeping the same stream ID for continuity.
572
572
  #
573
573
  #
574
- #
575
- # Related guide: <a href="https://fastpix.com/docs/manage-live-streams/create-and-manage-live-streams">Manage streams</a>
574
+ # Related guide: <a href="https://fastpix.com/docs/live-streaming/create-and-manage-live-streams#delete-a-stream">Manage streams</a>
575
+ #
576
+ #
576
577
  request = Models::Operations::UpdateLiveStreamRequest.new(
577
578
  stream_id: stream_id,
578
579
  body: body
@@ -697,7 +698,7 @@ module FastpixClient
697
698
  #
698
699
  # A creator disables a livestream to pause it temporarily. Later, they decide to continue the session. By calling this endpoint with the stream's ID, they can re-enable and restart the same livestream.
699
700
  #
700
- # Related guide <a href="https://fastpix.com/docs/manage-live-streams/create-and-manage-live-streams">Manage streams</a>
701
+ # Related guide <a href="https://fastpix.com/docs/live-streaming/create-and-manage-live-streams#enable-a-stream">Manage streams</a>
701
702
  request = Models::Operations::EnableLiveStreamRequest.new(
702
703
  stream_id: stream_id
703
704
  )
@@ -815,7 +816,7 @@ module FastpixClient
815
816
  #
816
817
  # A speaker finishes their live session and wants to prevent the stream from being mistakenly started again. By calling this endpoint, the stream is transitioned to a `disabled` state, ensuring it's permanently stopped (unless re-enabled on a paid plan).
817
818
  #
818
- # Related guide <a href="https://fastpix.com/docs/manage-live-streams/create-and-manage-live-streams">Manage streams</a>
819
+ #Related guide <a href="https://fastpix.com/docs/live-streaming/create-and-manage-live-streams#enable-a-stream">Manage streams</a>
819
820
  request = Models::Operations::DisableLiveStreamRequest.new(
820
821
  stream_id: stream_id
821
822
  )
@@ -935,7 +936,7 @@ module FastpixClient
935
936
  #
936
937
  # A virtual event ends, and the system or host needs to close the livestream to prevent further streaming. This endpoint ensures the livestream status is changed from `active` to `idle`, indicating it's officially completed.
937
938
  #
938
- # Related guide <a href="https://fastpix.com/docs/manage-live-streams/create-and-manage-live-streams">Manage streams</a>
939
+ #Related guide <a href="https://fastpix.com/docs/live-streaming/create-and-manage-live-streams#enable-a-stream">Manage streams</a>
939
940
  request = Models::Operations::CompleteLiveStreamRequest.new(
940
941
  stream_id: stream_id
941
942
  )