fastpixapi 0.0.1

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 (217) hide show
  1. checksums.yaml +7 -0
  2. data/lib/crystalline/metadata_fields.rb +210 -0
  3. data/lib/crystalline/t.rb +78 -0
  4. data/lib/crystalline/utils.rb +95 -0
  5. data/lib/crystalline.rb +12 -0
  6. data/lib/fastpix_api_sdk/input_video.rb +454 -0
  7. data/lib/fastpix_api_sdk/manage_live_stream.rb +717 -0
  8. data/lib/fastpix_api_sdk/manage_videos.rb +960 -0
  9. data/lib/fastpix_api_sdk/models/components/audioinput.rb +41 -0
  10. data/lib/fastpix_api_sdk/models/components/audioinput_type.rb +19 -0
  11. data/lib/fastpix_api_sdk/models/components/createlivestreamrequest.rb +37 -0
  12. data/lib/fastpix_api_sdk/models/components/createlivestreamrequest_maxresolution.rb +21 -0
  13. data/lib/fastpix_api_sdk/models/components/createlivestreamrequest_metadata.rb +28 -0
  14. data/lib/fastpix_api_sdk/models/components/createmediarequest.rb +89 -0
  15. data/lib/fastpix_api_sdk/models/components/createmediarequest_accesspolicy.rb +22 -0
  16. data/lib/fastpix_api_sdk/models/components/createmediarequest_accessrestrictions.rb +37 -0
  17. data/lib/fastpix_api_sdk/models/components/createmediarequest_domains.rb +48 -0
  18. data/lib/fastpix_api_sdk/models/components/createmediarequest_domains_defaultpolicy.rb +23 -0
  19. data/lib/fastpix_api_sdk/models/components/createmediarequest_languagecode.rb +26 -0
  20. data/lib/fastpix_api_sdk/models/components/createmediarequest_maxresolution.rb +25 -0
  21. data/lib/fastpix_api_sdk/models/components/createmediarequest_metadata.rb +29 -0
  22. data/lib/fastpix_api_sdk/models/components/createmediarequest_mp4support.rb +22 -0
  23. data/lib/fastpix_api_sdk/models/components/createmediarequest_type.rb +22 -0
  24. data/lib/fastpix_api_sdk/models/components/createmediarequest_useragents.rb +48 -0
  25. data/lib/fastpix_api_sdk/models/components/createmediarequest_useragents_defaultpolicy.rb +23 -0
  26. data/lib/fastpix_api_sdk/models/components/createmediaresponse.rb +62 -0
  27. data/lib/fastpix_api_sdk/models/components/createmediaresponse_maxresolution.rb +24 -0
  28. data/lib/fastpix_api_sdk/models/components/createmediaresponse_metadata.rb +28 -0
  29. data/lib/fastpix_api_sdk/models/components/directupload.rb +58 -0
  30. data/lib/fastpix_api_sdk/models/components/directuploadresponse.rb +37 -0
  31. data/lib/fastpix_api_sdk/models/components/directuploadresponse_metadata.rb +28 -0
  32. data/lib/fastpix_api_sdk/models/components/getcreatelivestreamresponsedto.rb +85 -0
  33. data/lib/fastpix_api_sdk/models/components/getcreatelivestreamresponsedto_metadata.rb +28 -0
  34. data/lib/fastpix_api_sdk/models/components/getcreatelivestreamresponsedto_srtplaybackresponse.rb +37 -0
  35. data/lib/fastpix_api_sdk/models/components/getstreamsresponse.rb +41 -0
  36. data/lib/fastpix_api_sdk/models/components/imposetrack.rb +49 -0
  37. data/lib/fastpix_api_sdk/models/components/input.rb +28 -0
  38. data/lib/fastpix_api_sdk/models/components/inputmediasettings.rb +45 -0
  39. data/lib/fastpix_api_sdk/models/components/livestreamdeleteresponse.rb +33 -0
  40. data/lib/fastpix_api_sdk/models/components/livestreamgetresponse.rb +37 -0
  41. data/lib/fastpix_api_sdk/models/components/livestreamresponsedto.rb +37 -0
  42. data/lib/fastpix_api_sdk/models/components/media.rb +93 -0
  43. data/lib/fastpix_api_sdk/models/components/media_maxresolution.rb +24 -0
  44. data/lib/fastpix_api_sdk/models/components/media_metadata.rb +28 -0
  45. data/lib/fastpix_api_sdk/models/components/media_mp4support.rb +22 -0
  46. data/lib/fastpix_api_sdk/models/components/mediapolicy.rb +20 -0
  47. data/lib/fastpix_api_sdk/models/components/moderation.rb +34 -0
  48. data/lib/fastpix_api_sdk/models/components/pagination.rb +41 -0
  49. data/lib/fastpix_api_sdk/models/components/patchlivestreamrequest.rb +37 -0
  50. data/lib/fastpix_api_sdk/models/components/patchlivestreamrequest_metadata.rb +28 -0
  51. data/lib/fastpix_api_sdk/models/components/patchresponsedata.rb +85 -0
  52. data/lib/fastpix_api_sdk/models/components/patchresponsedata_metadata.rb +28 -0
  53. data/lib/fastpix_api_sdk/models/components/patchresponsedata_srtplaybackresponse.rb +37 -0
  54. data/lib/fastpix_api_sdk/models/components/patchresponsedto.rb +37 -0
  55. data/lib/fastpix_api_sdk/models/components/placement.rb +45 -0
  56. data/lib/fastpix_api_sdk/models/components/playbackid.rb +41 -0
  57. data/lib/fastpix_api_sdk/models/components/playbackid_accesspolicy.rb +21 -0
  58. data/lib/fastpix_api_sdk/models/components/playbackid_accessrestrictions.rb +37 -0
  59. data/lib/fastpix_api_sdk/models/components/playbackid_domains.rb +41 -0
  60. data/lib/fastpix_api_sdk/models/components/playbackid_domains_defaultpolicy.rb +20 -0
  61. data/lib/fastpix_api_sdk/models/components/playbackid_useragents.rb +41 -0
  62. data/lib/fastpix_api_sdk/models/components/playbackid_useragents_defaultpolicy.rb +20 -0
  63. data/lib/fastpix_api_sdk/models/components/playbackidrequest.rb +33 -0
  64. data/lib/fastpix_api_sdk/models/components/playbackidrequest_accesspolicy.rb +20 -0
  65. data/lib/fastpix_api_sdk/models/components/playbackidresponse.rb +37 -0
  66. data/lib/fastpix_api_sdk/models/components/playbackidresponse_data.rb +37 -0
  67. data/lib/fastpix_api_sdk/models/components/playbackids.rb +37 -0
  68. data/lib/fastpix_api_sdk/models/components/playbacksettings.rb +33 -0
  69. data/lib/fastpix_api_sdk/models/components/playbacksettings_accesspolicy.rb +20 -0
  70. data/lib/fastpix_api_sdk/models/components/security.rb +37 -0
  71. data/lib/fastpix_api_sdk/models/components/segment_1.rb +37 -0
  72. data/lib/fastpix_api_sdk/models/components/segment_2.rb +37 -0
  73. data/lib/fastpix_api_sdk/models/components/segment_union.rb +28 -0
  74. data/lib/fastpix_api_sdk/models/components/simulcastdeleteresponse.rb +33 -0
  75. data/lib/fastpix_api_sdk/models/components/simulcastrequest.rb +37 -0
  76. data/lib/fastpix_api_sdk/models/components/simulcastresponse.rb +37 -0
  77. data/lib/fastpix_api_sdk/models/components/simulcastresponse_data.rb +49 -0
  78. data/lib/fastpix_api_sdk/models/components/simulcastresponse_metadata.rb +28 -0
  79. data/lib/fastpix_api_sdk/models/components/simulcastupdaterequest.rb +37 -0
  80. data/lib/fastpix_api_sdk/models/components/simulcastupdaterequest_metadata.rb +28 -0
  81. data/lib/fastpix_api_sdk/models/components/simulcastupdateresponse.rb +37 -0
  82. data/lib/fastpix_api_sdk/models/components/simulcastupdateresponse_data.rb +49 -0
  83. data/lib/fastpix_api_sdk/models/components/simulcastupdateresponse_metadata.rb +28 -0
  84. data/lib/fastpix_api_sdk/models/components/sourceresolution.rb +24 -0
  85. data/lib/fastpix_api_sdk/models/components/subtitle.rb +45 -0
  86. data/lib/fastpix_api_sdk/models/components/subtitle_metadata.rb +29 -0
  87. data/lib/fastpix_api_sdk/models/components/subtitleinput.rb +47 -0
  88. data/lib/fastpix_api_sdk/models/components/subtitleinput_languagecode.rb +76 -0
  89. data/lib/fastpix_api_sdk/models/components/summary.rb +40 -0
  90. data/lib/fastpix_api_sdk/models/components/track.rb +53 -0
  91. data/lib/fastpix_api_sdk/models/components/videoinput.rb +68 -0
  92. data/lib/fastpix_api_sdk/models/components/watermarkinput.rb +53 -0
  93. data/lib/fastpix_api_sdk/models/components/watermarkinput_type.rb +19 -0
  94. data/lib/fastpix_api_sdk/models/components/xalign.rb +21 -0
  95. data/lib/fastpix_api_sdk/models/components/yalign.rb +21 -0
  96. data/lib/fastpix_api_sdk/models/components.rb +98 -0
  97. data/lib/fastpix_api_sdk/models/errors/apierror.rb +38 -0
  98. data/lib/fastpix_api_sdk/models/errors/badrequest_error.rb +37 -0
  99. data/lib/fastpix_api_sdk/models/errors/badrequest_error_error.rb +42 -0
  100. data/lib/fastpix_api_sdk/models/errors/field.rb +37 -0
  101. data/lib/fastpix_api_sdk/models/errors/forbidden_error.rb +37 -0
  102. data/lib/fastpix_api_sdk/models/errors/forbidden_error_error.rb +42 -0
  103. data/lib/fastpix_api_sdk/models/errors/invalidpermission_error.rb +37 -0
  104. data/lib/fastpix_api_sdk/models/errors/invalidpermission_error_error.rb +42 -0
  105. data/lib/fastpix_api_sdk/models/errors/medianotfound_error.rb +37 -0
  106. data/lib/fastpix_api_sdk/models/errors/medianotfound_error_error.rb +42 -0
  107. data/lib/fastpix_api_sdk/models/errors/mediaorplaybacknotfound_error.rb +37 -0
  108. data/lib/fastpix_api_sdk/models/errors/mediaorplaybacknotfound_error_error.rb +42 -0
  109. data/lib/fastpix_api_sdk/models/errors/notfounderror.rb +37 -0
  110. data/lib/fastpix_api_sdk/models/errors/notfounderror_error.rb +42 -0
  111. data/lib/fastpix_api_sdk/models/errors/notfounderrorplaybackid.rb +37 -0
  112. data/lib/fastpix_api_sdk/models/errors/notfounderrorplaybackid_error.rb +42 -0
  113. data/lib/fastpix_api_sdk/models/errors/notfounderrorsimulcast.rb +37 -0
  114. data/lib/fastpix_api_sdk/models/errors/notfounderrorsimulcast_error.rb +42 -0
  115. data/lib/fastpix_api_sdk/models/errors/simulcastunavailable_error.rb +38 -0
  116. data/lib/fastpix_api_sdk/models/errors/simulcastunavailable_error_error.rb +45 -0
  117. data/lib/fastpix_api_sdk/models/errors/unauthorized_error.rb +37 -0
  118. data/lib/fastpix_api_sdk/models/errors/unauthorized_error_error.rb +42 -0
  119. data/lib/fastpix_api_sdk/models/errors/validationerrorresponse.rb +37 -0
  120. data/lib/fastpix_api_sdk/models/errors/validationerrorresponse_error.rb +41 -0
  121. data/lib/fastpix_api_sdk/models/errors.rb +35 -0
  122. data/lib/fastpix_api_sdk/models/operations/create_media_playback_id_accesspolicy.rb +21 -0
  123. data/lib/fastpix_api_sdk/models/operations/create_media_playback_id_accessrestrictions.rb +37 -0
  124. data/lib/fastpix_api_sdk/models/operations/create_media_playback_id_domains.rb +48 -0
  125. data/lib/fastpix_api_sdk/models/operations/create_media_playback_id_domains_defaultpolicy.rb +23 -0
  126. data/lib/fastpix_api_sdk/models/operations/create_media_playback_id_request.rb +37 -0
  127. data/lib/fastpix_api_sdk/models/operations/create_media_playback_id_requestbody.rb +37 -0
  128. data/lib/fastpix_api_sdk/models/operations/create_media_playback_id_response.rb +45 -0
  129. data/lib/fastpix_api_sdk/models/operations/create_media_playback_id_responsebody.rb +37 -0
  130. data/lib/fastpix_api_sdk/models/operations/create_media_playback_id_useragents.rb +48 -0
  131. data/lib/fastpix_api_sdk/models/operations/create_media_playback_id_useragents_defaultpolicy.rb +23 -0
  132. data/lib/fastpix_api_sdk/models/operations/create_media_response.rb +45 -0
  133. data/lib/fastpix_api_sdk/models/operations/create_media_responsebody.rb +37 -0
  134. data/lib/fastpix_api_sdk/models/operations/create_new_stream_response.rb +45 -0
  135. data/lib/fastpix_api_sdk/models/operations/create_playbackid_of_stream_request.rb +37 -0
  136. data/lib/fastpix_api_sdk/models/operations/create_playbackid_of_stream_response.rb +45 -0
  137. data/lib/fastpix_api_sdk/models/operations/create_simulcast_of_stream_request.rb +37 -0
  138. data/lib/fastpix_api_sdk/models/operations/create_simulcast_of_stream_response.rb +45 -0
  139. data/lib/fastpix_api_sdk/models/operations/data.rb +33 -0
  140. data/lib/fastpix_api_sdk/models/operations/delete_live_stream_request.rb +33 -0
  141. data/lib/fastpix_api_sdk/models/operations/delete_live_stream_response.rb +45 -0
  142. data/lib/fastpix_api_sdk/models/operations/delete_media_playback_id_request.rb +37 -0
  143. data/lib/fastpix_api_sdk/models/operations/delete_media_playback_id_response.rb +45 -0
  144. data/lib/fastpix_api_sdk/models/operations/delete_media_playback_id_responsebody.rb +33 -0
  145. data/lib/fastpix_api_sdk/models/operations/delete_media_request.rb +33 -0
  146. data/lib/fastpix_api_sdk/models/operations/delete_media_response.rb +45 -0
  147. data/lib/fastpix_api_sdk/models/operations/delete_media_responsebody.rb +33 -0
  148. data/lib/fastpix_api_sdk/models/operations/delete_playbackid_of_stream_request.rb +37 -0
  149. data/lib/fastpix_api_sdk/models/operations/delete_playbackid_of_stream_response.rb +45 -0
  150. data/lib/fastpix_api_sdk/models/operations/delete_simulcast_of_stream_request.rb +37 -0
  151. data/lib/fastpix_api_sdk/models/operations/delete_simulcast_of_stream_response.rb +45 -0
  152. data/lib/fastpix_api_sdk/models/operations/direct_upload_video_media_accesspolicy.rb +20 -0
  153. data/lib/fastpix_api_sdk/models/operations/direct_upload_video_media_accessrestrictions.rb +37 -0
  154. data/lib/fastpix_api_sdk/models/operations/direct_upload_video_media_domains.rb +48 -0
  155. data/lib/fastpix_api_sdk/models/operations/direct_upload_video_media_domains_defaultpolicy.rb +23 -0
  156. data/lib/fastpix_api_sdk/models/operations/direct_upload_video_media_metadata.rb +28 -0
  157. data/lib/fastpix_api_sdk/models/operations/direct_upload_video_media_request.rb +37 -0
  158. data/lib/fastpix_api_sdk/models/operations/direct_upload_video_media_response.rb +45 -0
  159. data/lib/fastpix_api_sdk/models/operations/direct_upload_video_media_responsebody.rb +37 -0
  160. data/lib/fastpix_api_sdk/models/operations/direct_upload_video_media_useragents.rb +48 -0
  161. data/lib/fastpix_api_sdk/models/operations/direct_upload_video_media_useragents_defaultpolicy.rb +23 -0
  162. data/lib/fastpix_api_sdk/models/operations/get_all_streams_orderby.rb +20 -0
  163. data/lib/fastpix_api_sdk/models/operations/get_all_streams_request.rb +41 -0
  164. data/lib/fastpix_api_sdk/models/operations/get_all_streams_response.rb +45 -0
  165. data/lib/fastpix_api_sdk/models/operations/get_live_stream_by_id_request.rb +33 -0
  166. data/lib/fastpix_api_sdk/models/operations/get_live_stream_by_id_response.rb +45 -0
  167. data/lib/fastpix_api_sdk/models/operations/get_live_stream_playback_id_request.rb +37 -0
  168. data/lib/fastpix_api_sdk/models/operations/get_live_stream_playback_id_response.rb +45 -0
  169. data/lib/fastpix_api_sdk/models/operations/get_media_request.rb +33 -0
  170. data/lib/fastpix_api_sdk/models/operations/get_media_response.rb +45 -0
  171. data/lib/fastpix_api_sdk/models/operations/get_media_responsebody.rb +37 -0
  172. data/lib/fastpix_api_sdk/models/operations/get_specific_simulcast_of_stream_request.rb +37 -0
  173. data/lib/fastpix_api_sdk/models/operations/get_specific_simulcast_of_stream_response.rb +45 -0
  174. data/lib/fastpix_api_sdk/models/operations/input.rb +28 -0
  175. data/lib/fastpix_api_sdk/models/operations/languagecode.rb +26 -0
  176. data/lib/fastpix_api_sdk/models/operations/list_media_orderby.rb +20 -0
  177. data/lib/fastpix_api_sdk/models/operations/list_media_request.rb +41 -0
  178. data/lib/fastpix_api_sdk/models/operations/list_media_response.rb +45 -0
  179. data/lib/fastpix_api_sdk/models/operations/list_media_responsebody.rb +41 -0
  180. data/lib/fastpix_api_sdk/models/operations/maxresolution.rb +25 -0
  181. data/lib/fastpix_api_sdk/models/operations/moderation.rb +34 -0
  182. data/lib/fastpix_api_sdk/models/operations/mp4support.rb +22 -0
  183. data/lib/fastpix_api_sdk/models/operations/push_media_settings.rb +95 -0
  184. data/lib/fastpix_api_sdk/models/operations/retrievemediainputinfo_request.rb +33 -0
  185. data/lib/fastpix_api_sdk/models/operations/retrievemediainputinfo_response.rb +45 -0
  186. data/lib/fastpix_api_sdk/models/operations/retrievemediainputinfo_responsebody.rb +37 -0
  187. data/lib/fastpix_api_sdk/models/operations/subtitles.rb +43 -0
  188. data/lib/fastpix_api_sdk/models/operations/subtitles_metadata.rb +28 -0
  189. data/lib/fastpix_api_sdk/models/operations/summary.rb +40 -0
  190. data/lib/fastpix_api_sdk/models/operations/type.rb +22 -0
  191. data/lib/fastpix_api_sdk/models/operations/update_live_stream_request.rb +37 -0
  192. data/lib/fastpix_api_sdk/models/operations/update_live_stream_response.rb +45 -0
  193. data/lib/fastpix_api_sdk/models/operations/update_specific_simulcast_of_stream_request.rb +41 -0
  194. data/lib/fastpix_api_sdk/models/operations/update_specific_simulcast_of_stream_response.rb +45 -0
  195. data/lib/fastpix_api_sdk/models/operations/updated_media_metadata.rb +28 -0
  196. data/lib/fastpix_api_sdk/models/operations/updated_media_request.rb +37 -0
  197. data/lib/fastpix_api_sdk/models/operations/updated_media_requestbody.rb +33 -0
  198. data/lib/fastpix_api_sdk/models/operations/updated_media_response.rb +45 -0
  199. data/lib/fastpix_api_sdk/models/operations/updated_media_responsebody.rb +37 -0
  200. data/lib/fastpix_api_sdk/models/operations.rb +89 -0
  201. data/lib/fastpix_api_sdk/playback.rb +941 -0
  202. data/lib/fastpix_api_sdk/sdk.rb +103 -0
  203. data/lib/fastpix_api_sdk/sdk_hooks/hooks.rb +96 -0
  204. data/lib/fastpix_api_sdk/sdk_hooks/types.rb +157 -0
  205. data/lib/fastpix_api_sdk/sdkconfiguration.rb +77 -0
  206. data/lib/fastpix_api_sdk/simulcast_stream.rb +767 -0
  207. data/lib/fastpix_api_sdk/start_live_stream.rb +208 -0
  208. data/lib/fastpix_api_sdk/utils/forms.rb +210 -0
  209. data/lib/fastpix_api_sdk/utils/headers.rb +79 -0
  210. data/lib/fastpix_api_sdk/utils/query_params.rb +133 -0
  211. data/lib/fastpix_api_sdk/utils/request_bodies.rb +62 -0
  212. data/lib/fastpix_api_sdk/utils/retries.rb +95 -0
  213. data/lib/fastpix_api_sdk/utils/security.rb +133 -0
  214. data/lib/fastpix_api_sdk/utils/url.rb +102 -0
  215. data/lib/fastpix_api_sdk/utils/utils.rb +186 -0
  216. data/lib/fastpixapi.rb +29 -0
  217. metadata +442 -0
@@ -0,0 +1,941 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+ require 'faraday'
7
+ require 'faraday/multipart'
8
+ require 'faraday/retry'
9
+ require 'sorbet-runtime'
10
+ require_relative 'sdk_hooks/hooks'
11
+ require_relative 'utils/retries'
12
+
13
+ module FastpixApiSDK
14
+ extend T::Sig
15
+ class Playback
16
+ extend T::Sig
17
+ attr_accessor
18
+
19
+
20
+ sig { params(sdk_config: SDKConfiguration).void }
21
+ def initialize(sdk_config)
22
+ @sdk_configuration = sdk_config
23
+
24
+ end
25
+
26
+ sig { params(base_url: String, url_variables: T.nilable(T::Hash[Symbol, String])).returns(String) }
27
+ def get_url(base_url:, url_variables: nil)
28
+ sd_base_url, sd_options = @sdk_configuration.get_server_details
29
+
30
+ if base_url.nil?
31
+ base_url = sd_base_url
32
+ end
33
+
34
+ if url_variables.nil?
35
+ url_variables = sd_options
36
+ end
37
+
38
+ return Utils.template_url base_url, url_variables
39
+ end
40
+
41
+
42
+ sig { params(stream_id: ::String, playback_id_request: T.nilable(Models::Components::PlaybackIdRequest), timeout_ms: T.nilable(Integer)).returns(Models::Operations::CreatePlaybackIdOfStreamResponse) }
43
+ def create_playback_id_of_stream(stream_id:, playback_id_request: nil, timeout_ms: nil)
44
+ # create_playback_id_of_stream - Create a playbackId
45
+ # Generates a new playback ID for the live stream, allowing viewers to access the stream through this ID. The playback ID can be shared with viewers for direct access to the live broadcast.
46
+ #
47
+ # By calling this endpoint with the streamId, FastPix returns a unique playbackId, which can be used to stream the live content.
48
+ #
49
+ # **Use case:** A media platform needs to distribute a unique playback ID to users for an exclusive live concert. The platform can also embed the stream on various partner websites.
50
+ request = Models::Operations::CreatePlaybackIdOfStreamRequest.new(
51
+
52
+ stream_id: stream_id,
53
+ playback_id_request: playback_id_request
54
+ )
55
+ url, params = @sdk_configuration.get_server_details
56
+ base_url = Utils.template_url(url, params)
57
+ url = Utils.generate_url(
58
+ Models::Operations::CreatePlaybackIdOfStreamRequest,
59
+ base_url,
60
+ '/streams/{streamId}/playback-ids',
61
+ request
62
+ )
63
+ headers = {}
64
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :playback_id_request, :json)
65
+ headers['content-type'] = req_content_type
66
+
67
+ if form
68
+ body = Utils.encode_form(form)
69
+ elsif Utils.match_content_type(req_content_type, 'application/x-www-form-urlencoded')
70
+ body = URI.encode_www_form(data)
71
+ else
72
+ body = data
73
+ end
74
+ headers['Accept'] = 'application/json'
75
+ headers['user-agent'] = @sdk_configuration.user_agent
76
+
77
+ security = !@sdk_configuration.nil? && !@sdk_configuration.security_source.nil? ? @sdk_configuration.security_source.call : nil
78
+
79
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
80
+ timeout ||= @sdk_configuration.timeout
81
+
82
+ connection = @sdk_configuration.client
83
+
84
+ hook_ctx = SDKHooks::HookContext.new(
85
+ config: @sdk_configuration,
86
+ base_url: base_url,
87
+ oauth2_scopes: [],
88
+ operation_id: 'create-playbackId-of-stream',
89
+ security_source: @sdk_configuration.security_source
90
+ )
91
+
92
+ error = T.let(nil, T.nilable(StandardError))
93
+ http_response = T.let(nil, T.nilable(Faraday::Response))
94
+
95
+
96
+ begin
97
+ http_response = connection.post(url) do |req|
98
+ req.body = body
99
+ req.headers.merge!(headers)
100
+ req.options.timeout = timeout unless timeout.nil?
101
+ Utils.configure_request_security(req, security)
102
+
103
+ @sdk_configuration.hooks.before_request(
104
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
105
+ hook_ctx: hook_ctx
106
+ ),
107
+ request: req
108
+ )
109
+ end
110
+ rescue StandardError => e
111
+ error = e
112
+ ensure
113
+ if http_response.nil? || Utils.error_status?(http_response.status)
114
+ http_response = @sdk_configuration.hooks.after_error(
115
+ error: error,
116
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
117
+ hook_ctx: hook_ctx
118
+ ),
119
+ response: http_response
120
+ )
121
+ else
122
+ http_response = @sdk_configuration.hooks.after_success(
123
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
124
+ hook_ctx: hook_ctx
125
+ ),
126
+ response: http_response
127
+ )
128
+ end
129
+
130
+ if http_response.nil?
131
+ raise error if !error.nil?
132
+ raise 'no response'
133
+ end
134
+ end
135
+
136
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
137
+ if Utils.match_status_code(http_response.status, ['201'])
138
+ if Utils.match_content_type(content_type, 'application/json')
139
+ http_response = @sdk_configuration.hooks.after_success(
140
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
141
+ hook_ctx: hook_ctx
142
+ ),
143
+ response: http_response
144
+ )
145
+ response_data = http_response.env.response_body
146
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Components::PlaybackIdResponse)
147
+ response = Models::Operations::CreatePlaybackIdOfStreamResponse.new(
148
+ status_code: http_response.status,
149
+ content_type: content_type,
150
+ raw_response: http_response,
151
+ playback_id_response: obj
152
+ )
153
+
154
+ return response
155
+ else
156
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
157
+ end
158
+ elsif Utils.match_status_code(http_response.status, ['401'])
159
+ if Utils.match_content_type(content_type, 'application/json')
160
+ http_response = @sdk_configuration.hooks.after_success(
161
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
162
+ hook_ctx: hook_ctx
163
+ ),
164
+ response: http_response
165
+ )
166
+ response_data = http_response.env.response_body
167
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::UnauthorizedError)
168
+ throw obj
169
+ else
170
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
171
+ end
172
+ elsif Utils.match_status_code(http_response.status, ['403'])
173
+ if Utils.match_content_type(content_type, 'application/json')
174
+ http_response = @sdk_configuration.hooks.after_success(
175
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
176
+ hook_ctx: hook_ctx
177
+ ),
178
+ response: http_response
179
+ )
180
+ response_data = http_response.env.response_body
181
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::InvalidPermissionError)
182
+ throw obj
183
+ else
184
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
185
+ end
186
+ elsif Utils.match_status_code(http_response.status, ['404'])
187
+ if Utils.match_content_type(content_type, 'application/json')
188
+ http_response = @sdk_configuration.hooks.after_success(
189
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
190
+ hook_ctx: hook_ctx
191
+ ),
192
+ response: http_response
193
+ )
194
+ response_data = http_response.env.response_body
195
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::NotFoundError)
196
+ throw obj
197
+ else
198
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
199
+ end
200
+ elsif Utils.match_status_code(http_response.status, ['422'])
201
+ if Utils.match_content_type(content_type, 'application/json')
202
+ http_response = @sdk_configuration.hooks.after_success(
203
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
204
+ hook_ctx: hook_ctx
205
+ ),
206
+ response: http_response
207
+ )
208
+ response_data = http_response.env.response_body
209
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ValidationErrorResponse)
210
+ throw obj
211
+ else
212
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
213
+ end
214
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
215
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
216
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
217
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
218
+ else
219
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown status code received'
220
+
221
+ end
222
+ end
223
+
224
+
225
+ sig { params(stream_id: ::String, playback_id: ::String, timeout_ms: T.nilable(Integer)).returns(Models::Operations::DeletePlaybackIdOfStreamResponse) }
226
+ def delete_playback_id_of_stream(stream_id:, playback_id:, timeout_ms: nil)
227
+ # delete_playback_id_of_stream - Delete a playbackId
228
+ # Deletes a previously created playback ID for a live stream. This will prevent any new viewers from accessing the stream through the playback ID, though current viewers will be able to continue watching for a limited time before being disconnected. By providing the playbackId, FastPix deletes the ID and ensures new playback requests will fail.
229
+ #
230
+ # **Use case:** A streaming service wants to prevent new users from joining a live stream that is nearing its end. The host can delete the playback ID to ensure no one can join the stream or replay it once it ends.
231
+ request = Models::Operations::DeletePlaybackIdOfStreamRequest.new(
232
+
233
+ stream_id: stream_id,
234
+ playback_id: playback_id
235
+ )
236
+ url, params = @sdk_configuration.get_server_details
237
+ base_url = Utils.template_url(url, params)
238
+ url = Utils.generate_url(
239
+ Models::Operations::DeletePlaybackIdOfStreamRequest,
240
+ base_url,
241
+ '/streams/{streamId}/playback-ids',
242
+ request
243
+ )
244
+ headers = {}
245
+ query_params = Utils.get_query_params(Models::Operations::DeletePlaybackIdOfStreamRequest, request, nil)
246
+ headers['Accept'] = 'application/json'
247
+ headers['user-agent'] = @sdk_configuration.user_agent
248
+
249
+ security = !@sdk_configuration.nil? && !@sdk_configuration.security_source.nil? ? @sdk_configuration.security_source.call : nil
250
+
251
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
252
+ timeout ||= @sdk_configuration.timeout
253
+
254
+ connection = @sdk_configuration.client
255
+
256
+ hook_ctx = SDKHooks::HookContext.new(
257
+ config: @sdk_configuration,
258
+ base_url: base_url,
259
+ oauth2_scopes: [],
260
+ operation_id: 'delete-playbackId-of-stream',
261
+ security_source: @sdk_configuration.security_source
262
+ )
263
+
264
+ error = T.let(nil, T.nilable(StandardError))
265
+ http_response = T.let(nil, T.nilable(Faraday::Response))
266
+
267
+
268
+ begin
269
+ http_response = connection.delete(url) do |req|
270
+ req.headers.merge!(headers)
271
+ req.options.timeout = timeout unless timeout.nil?
272
+ req.params = query_params
273
+ Utils.configure_request_security(req, security)
274
+
275
+ @sdk_configuration.hooks.before_request(
276
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
277
+ hook_ctx: hook_ctx
278
+ ),
279
+ request: req
280
+ )
281
+ end
282
+ rescue StandardError => e
283
+ error = e
284
+ ensure
285
+ if http_response.nil? || Utils.error_status?(http_response.status)
286
+ http_response = @sdk_configuration.hooks.after_error(
287
+ error: error,
288
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
289
+ hook_ctx: hook_ctx
290
+ ),
291
+ response: http_response
292
+ )
293
+ else
294
+ http_response = @sdk_configuration.hooks.after_success(
295
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
296
+ hook_ctx: hook_ctx
297
+ ),
298
+ response: http_response
299
+ )
300
+ end
301
+
302
+ if http_response.nil?
303
+ raise error if !error.nil?
304
+ raise 'no response'
305
+ end
306
+ end
307
+
308
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
309
+ if Utils.match_status_code(http_response.status, ['200'])
310
+ if Utils.match_content_type(content_type, 'application/json')
311
+ http_response = @sdk_configuration.hooks.after_success(
312
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
313
+ hook_ctx: hook_ctx
314
+ ),
315
+ response: http_response
316
+ )
317
+ response_data = http_response.env.response_body
318
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Components::LiveStreamDeleteResponse)
319
+ response = Models::Operations::DeletePlaybackIdOfStreamResponse.new(
320
+ status_code: http_response.status,
321
+ content_type: content_type,
322
+ raw_response: http_response,
323
+ live_stream_delete_response: obj
324
+ )
325
+
326
+ return response
327
+ else
328
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
329
+ end
330
+ elsif Utils.match_status_code(http_response.status, ['401'])
331
+ if Utils.match_content_type(content_type, 'application/json')
332
+ http_response = @sdk_configuration.hooks.after_success(
333
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
334
+ hook_ctx: hook_ctx
335
+ ),
336
+ response: http_response
337
+ )
338
+ response_data = http_response.env.response_body
339
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::UnauthorizedError)
340
+ throw obj
341
+ else
342
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
343
+ end
344
+ elsif Utils.match_status_code(http_response.status, ['403'])
345
+ if Utils.match_content_type(content_type, 'application/json')
346
+ http_response = @sdk_configuration.hooks.after_success(
347
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
348
+ hook_ctx: hook_ctx
349
+ ),
350
+ response: http_response
351
+ )
352
+ response_data = http_response.env.response_body
353
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::InvalidPermissionError)
354
+ throw obj
355
+ else
356
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
357
+ end
358
+ elsif Utils.match_status_code(http_response.status, ['404'])
359
+ if Utils.match_content_type(content_type, 'application/json')
360
+ http_response = @sdk_configuration.hooks.after_success(
361
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
362
+ hook_ctx: hook_ctx
363
+ ),
364
+ response: http_response
365
+ )
366
+ response_data = http_response.env.response_body
367
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::NotFoundErrorPlaybackId)
368
+ throw obj
369
+ else
370
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
371
+ end
372
+ elsif Utils.match_status_code(http_response.status, ['422'])
373
+ if Utils.match_content_type(content_type, 'application/json')
374
+ http_response = @sdk_configuration.hooks.after_success(
375
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
376
+ hook_ctx: hook_ctx
377
+ ),
378
+ response: http_response
379
+ )
380
+ response_data = http_response.env.response_body
381
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ValidationErrorResponse)
382
+ throw obj
383
+ else
384
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
385
+ end
386
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
387
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
388
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
389
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
390
+ else
391
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown status code received'
392
+
393
+ end
394
+ end
395
+
396
+
397
+ sig { params(stream_id: ::String, playback_id: ::String, timeout_ms: T.nilable(Integer)).returns(Models::Operations::GetLiveStreamPlaybackIdResponse) }
398
+ def get_live_stream_playback_id(stream_id:, playback_id:, timeout_ms: nil)
399
+ # get_live_stream_playback_id - Get stream's playbackId
400
+ # Retrieves details about a previously created playback ID. If you provide the distinct playback ID that was given back to you in the previous stream or playbackId create request, FastPix will provide the relevant playback details such as the access policy.
401
+ #
402
+ # **Use case:** A developer needs to confirm the playback ID details to ensure the right stream is being accessed by viewers.
403
+ request = Models::Operations::GetLiveStreamPlaybackIdRequest.new(
404
+
405
+ stream_id: stream_id,
406
+ playback_id: playback_id
407
+ )
408
+ url, params = @sdk_configuration.get_server_details
409
+ base_url = Utils.template_url(url, params)
410
+ url = Utils.generate_url(
411
+ Models::Operations::GetLiveStreamPlaybackIdRequest,
412
+ base_url,
413
+ '/streams/{streamId}/playback-ids/{playbackId}',
414
+ request
415
+ )
416
+ headers = {}
417
+ headers['Accept'] = 'application/json'
418
+ headers['user-agent'] = @sdk_configuration.user_agent
419
+
420
+ security = !@sdk_configuration.nil? && !@sdk_configuration.security_source.nil? ? @sdk_configuration.security_source.call : nil
421
+
422
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
423
+ timeout ||= @sdk_configuration.timeout
424
+
425
+ connection = @sdk_configuration.client
426
+
427
+ hook_ctx = SDKHooks::HookContext.new(
428
+ config: @sdk_configuration,
429
+ base_url: base_url,
430
+ oauth2_scopes: [],
431
+ operation_id: 'get-live-stream-playback-id',
432
+ security_source: @sdk_configuration.security_source
433
+ )
434
+
435
+ error = T.let(nil, T.nilable(StandardError))
436
+ http_response = T.let(nil, T.nilable(Faraday::Response))
437
+
438
+
439
+ begin
440
+ http_response = connection.get(url) do |req|
441
+ req.headers.merge!(headers)
442
+ req.options.timeout = timeout unless timeout.nil?
443
+ Utils.configure_request_security(req, security)
444
+
445
+ @sdk_configuration.hooks.before_request(
446
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
447
+ hook_ctx: hook_ctx
448
+ ),
449
+ request: req
450
+ )
451
+ end
452
+ rescue StandardError => e
453
+ error = e
454
+ ensure
455
+ if http_response.nil? || Utils.error_status?(http_response.status)
456
+ http_response = @sdk_configuration.hooks.after_error(
457
+ error: error,
458
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
459
+ hook_ctx: hook_ctx
460
+ ),
461
+ response: http_response
462
+ )
463
+ else
464
+ http_response = @sdk_configuration.hooks.after_success(
465
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
466
+ hook_ctx: hook_ctx
467
+ ),
468
+ response: http_response
469
+ )
470
+ end
471
+
472
+ if http_response.nil?
473
+ raise error if !error.nil?
474
+ raise 'no response'
475
+ end
476
+ end
477
+
478
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
479
+ if Utils.match_status_code(http_response.status, ['200'])
480
+ if Utils.match_content_type(content_type, 'application/json')
481
+ http_response = @sdk_configuration.hooks.after_success(
482
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
483
+ hook_ctx: hook_ctx
484
+ ),
485
+ response: http_response
486
+ )
487
+ response_data = http_response.env.response_body
488
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Components::PlaybackIdResponse)
489
+ response = Models::Operations::GetLiveStreamPlaybackIdResponse.new(
490
+ status_code: http_response.status,
491
+ content_type: content_type,
492
+ raw_response: http_response,
493
+ playback_id_response: obj
494
+ )
495
+
496
+ return response
497
+ else
498
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
499
+ end
500
+ elsif Utils.match_status_code(http_response.status, ['401'])
501
+ if Utils.match_content_type(content_type, 'application/json')
502
+ http_response = @sdk_configuration.hooks.after_success(
503
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
504
+ hook_ctx: hook_ctx
505
+ ),
506
+ response: http_response
507
+ )
508
+ response_data = http_response.env.response_body
509
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::UnauthorizedError)
510
+ throw obj
511
+ else
512
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
513
+ end
514
+ elsif Utils.match_status_code(http_response.status, ['403'])
515
+ if Utils.match_content_type(content_type, 'application/json')
516
+ http_response = @sdk_configuration.hooks.after_success(
517
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
518
+ hook_ctx: hook_ctx
519
+ ),
520
+ response: http_response
521
+ )
522
+ response_data = http_response.env.response_body
523
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::InvalidPermissionError)
524
+ throw obj
525
+ else
526
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
527
+ end
528
+ elsif Utils.match_status_code(http_response.status, ['404'])
529
+ if Utils.match_content_type(content_type, 'application/json')
530
+ http_response = @sdk_configuration.hooks.after_success(
531
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
532
+ hook_ctx: hook_ctx
533
+ ),
534
+ response: http_response
535
+ )
536
+ response_data = http_response.env.response_body
537
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::NotFoundErrorPlaybackId)
538
+ throw obj
539
+ else
540
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
541
+ end
542
+ elsif Utils.match_status_code(http_response.status, ['422'])
543
+ if Utils.match_content_type(content_type, 'application/json')
544
+ http_response = @sdk_configuration.hooks.after_success(
545
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
546
+ hook_ctx: hook_ctx
547
+ ),
548
+ response: http_response
549
+ )
550
+ response_data = http_response.env.response_body
551
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ValidationErrorResponse)
552
+ throw obj
553
+ else
554
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
555
+ end
556
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
557
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
558
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
559
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
560
+ else
561
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown status code received'
562
+
563
+ end
564
+ end
565
+
566
+
567
+ sig { params(media_id: ::String, request_body: T.nilable(Models::Operations::CreateMediaPlaybackIdRequestBody), timeout_ms: T.nilable(Integer)).returns(Models::Operations::CreateMediaPlaybackIdResponse) }
568
+ def create_media_playback_id(media_id:, request_body: nil, timeout_ms: nil)
569
+ # create_media_playback_id - Create a playback ID
570
+ # You can create a new playback ID for a specific media asset. If you have already retrieved an existing playbackId using the "Get Media by ID" endpoint for a media asset, you can use this endpoint to generate a new playback ID with a specified access policy.
571
+ #
572
+ #
573
+ #
574
+ # If you want to create a private playback ID for a media asset that already has a public playback ID, this endpoint also allows you to do so by specifying the desired access policy.
575
+ #
576
+ # #### How it works
577
+ #
578
+ # 1. **Make a POST request** to the **/on-demand/`<mediaId>`/playback-ids** endpoint, replacing `<mediaId>` with the uploadId or id of the media asset.
579
+ #
580
+ # 2. Include the **access policy** in the request body to indicate whether the new playback ID should be private or public.
581
+ #
582
+ # 3. Receive a response containing the newly created playback ID with the requested access level.
583
+ #
584
+ #
585
+ # **Use case:** A video streaming service generates playback IDs for each media file when users request to view specific content. The playback ID is then used by the video player to stream the video.
586
+ #
587
+ request = Models::Operations::CreateMediaPlaybackIdRequest.new(
588
+
589
+ media_id: media_id,
590
+ request_body: request_body
591
+ )
592
+ url, params = @sdk_configuration.get_server_details
593
+ base_url = Utils.template_url(url, params)
594
+ url = Utils.generate_url(
595
+ Models::Operations::CreateMediaPlaybackIdRequest,
596
+ base_url,
597
+ '/on-demand/{mediaId}/playback-ids',
598
+ request
599
+ )
600
+ headers = {}
601
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :request_body, :json)
602
+ headers['content-type'] = req_content_type
603
+
604
+ if form
605
+ body = Utils.encode_form(form)
606
+ elsif Utils.match_content_type(req_content_type, 'application/x-www-form-urlencoded')
607
+ body = URI.encode_www_form(data)
608
+ else
609
+ body = data
610
+ end
611
+ headers['Accept'] = 'application/json'
612
+ headers['user-agent'] = @sdk_configuration.user_agent
613
+
614
+ security = !@sdk_configuration.nil? && !@sdk_configuration.security_source.nil? ? @sdk_configuration.security_source.call : nil
615
+
616
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
617
+ timeout ||= @sdk_configuration.timeout
618
+
619
+ connection = @sdk_configuration.client
620
+
621
+ hook_ctx = SDKHooks::HookContext.new(
622
+ config: @sdk_configuration,
623
+ base_url: base_url,
624
+ oauth2_scopes: [],
625
+ operation_id: 'create-media-playback-id',
626
+ security_source: @sdk_configuration.security_source
627
+ )
628
+
629
+ error = T.let(nil, T.nilable(StandardError))
630
+ http_response = T.let(nil, T.nilable(Faraday::Response))
631
+
632
+
633
+ begin
634
+ http_response = connection.post(url) do |req|
635
+ req.body = body
636
+ req.headers.merge!(headers)
637
+ req.options.timeout = timeout unless timeout.nil?
638
+ Utils.configure_request_security(req, security)
639
+
640
+ @sdk_configuration.hooks.before_request(
641
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
642
+ hook_ctx: hook_ctx
643
+ ),
644
+ request: req
645
+ )
646
+ end
647
+ rescue StandardError => e
648
+ error = e
649
+ ensure
650
+ if http_response.nil? || Utils.error_status?(http_response.status)
651
+ http_response = @sdk_configuration.hooks.after_error(
652
+ error: error,
653
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
654
+ hook_ctx: hook_ctx
655
+ ),
656
+ response: http_response
657
+ )
658
+ else
659
+ http_response = @sdk_configuration.hooks.after_success(
660
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
661
+ hook_ctx: hook_ctx
662
+ ),
663
+ response: http_response
664
+ )
665
+ end
666
+
667
+ if http_response.nil?
668
+ raise error if !error.nil?
669
+ raise 'no response'
670
+ end
671
+ end
672
+
673
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
674
+ if Utils.match_status_code(http_response.status, ['201'])
675
+ if Utils.match_content_type(content_type, 'application/json')
676
+ http_response = @sdk_configuration.hooks.after_success(
677
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
678
+ hook_ctx: hook_ctx
679
+ ),
680
+ response: http_response
681
+ )
682
+ response_data = http_response.env.response_body
683
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Operations::CreateMediaPlaybackIdResponseBody)
684
+ response = Models::Operations::CreateMediaPlaybackIdResponse.new(
685
+ status_code: http_response.status,
686
+ content_type: content_type,
687
+ raw_response: http_response,
688
+ object: obj
689
+ )
690
+
691
+ return response
692
+ else
693
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
694
+ end
695
+ elsif Utils.match_status_code(http_response.status, ['401'])
696
+ if Utils.match_content_type(content_type, 'application/json')
697
+ http_response = @sdk_configuration.hooks.after_success(
698
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
699
+ hook_ctx: hook_ctx
700
+ ),
701
+ response: http_response
702
+ )
703
+ response_data = http_response.env.response_body
704
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::InvalidPermissionError)
705
+ throw obj
706
+ else
707
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
708
+ end
709
+ elsif Utils.match_status_code(http_response.status, ['403'])
710
+ if Utils.match_content_type(content_type, 'application/json')
711
+ http_response = @sdk_configuration.hooks.after_success(
712
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
713
+ hook_ctx: hook_ctx
714
+ ),
715
+ response: http_response
716
+ )
717
+ response_data = http_response.env.response_body
718
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ForbiddenError)
719
+ throw obj
720
+ else
721
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
722
+ end
723
+ elsif Utils.match_status_code(http_response.status, ['404'])
724
+ if Utils.match_content_type(content_type, 'application/json')
725
+ http_response = @sdk_configuration.hooks.after_success(
726
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
727
+ hook_ctx: hook_ctx
728
+ ),
729
+ response: http_response
730
+ )
731
+ response_data = http_response.env.response_body
732
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::MediaNotFoundError)
733
+ throw obj
734
+ else
735
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
736
+ end
737
+ elsif Utils.match_status_code(http_response.status, ['422'])
738
+ if Utils.match_content_type(content_type, 'application/json')
739
+ http_response = @sdk_configuration.hooks.after_success(
740
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
741
+ hook_ctx: hook_ctx
742
+ ),
743
+ response: http_response
744
+ )
745
+ response_data = http_response.env.response_body
746
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ValidationErrorResponse)
747
+ throw obj
748
+ else
749
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
750
+ end
751
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
752
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
753
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
754
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
755
+ else
756
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown status code received'
757
+
758
+ end
759
+ end
760
+
761
+
762
+ sig { params(media_id: ::String, playback_id: ::String, timeout_ms: T.nilable(Integer)).returns(Models::Operations::DeleteMediaPlaybackIdResponse) }
763
+ def delete_media_playback_id(media_id:, playback_id:, timeout_ms: nil)
764
+ # delete_media_playback_id - Delete a playback ID
765
+ # This endpoint allows you to remove a specific playback ID associated with a media asset. Deleting a playbackId will revoke access to the media content linked to that ID.
766
+ #
767
+ #
768
+ # #### How it works
769
+ #
770
+ # 1. Make a DELETE request to the **/on-demand/`<mediaId>`/playback-ids** endpoint, replacing `<mediaId>` with the uploadId or id of the media asset from which you want to delete the playback ID.
771
+ #
772
+ # 2. Specify the playback ID you wish to delete in the request body.
773
+ #
774
+ # **Use case:** Your platform offers limited-time access to premium content. When the subscription expires, you can revoke access to the content by deleting the associated playback ID, preventing users from streaming the video further.
775
+ #
776
+ request = Models::Operations::DeleteMediaPlaybackIdRequest.new(
777
+
778
+ media_id: media_id,
779
+ playback_id: playback_id
780
+ )
781
+ url, params = @sdk_configuration.get_server_details
782
+ base_url = Utils.template_url(url, params)
783
+ url = Utils.generate_url(
784
+ Models::Operations::DeleteMediaPlaybackIdRequest,
785
+ base_url,
786
+ '/on-demand/{mediaId}/playback-ids',
787
+ request
788
+ )
789
+ headers = {}
790
+ query_params = Utils.get_query_params(Models::Operations::DeleteMediaPlaybackIdRequest, request, nil)
791
+ headers['Accept'] = 'application/json'
792
+ headers['user-agent'] = @sdk_configuration.user_agent
793
+
794
+ security = !@sdk_configuration.nil? && !@sdk_configuration.security_source.nil? ? @sdk_configuration.security_source.call : nil
795
+
796
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
797
+ timeout ||= @sdk_configuration.timeout
798
+
799
+ connection = @sdk_configuration.client
800
+
801
+ hook_ctx = SDKHooks::HookContext.new(
802
+ config: @sdk_configuration,
803
+ base_url: base_url,
804
+ oauth2_scopes: [],
805
+ operation_id: 'delete-media-playback-id',
806
+ security_source: @sdk_configuration.security_source
807
+ )
808
+
809
+ error = T.let(nil, T.nilable(StandardError))
810
+ http_response = T.let(nil, T.nilable(Faraday::Response))
811
+
812
+
813
+ begin
814
+ http_response = connection.delete(url) do |req|
815
+ req.headers.merge!(headers)
816
+ req.options.timeout = timeout unless timeout.nil?
817
+ req.params = query_params
818
+ Utils.configure_request_security(req, security)
819
+
820
+ @sdk_configuration.hooks.before_request(
821
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
822
+ hook_ctx: hook_ctx
823
+ ),
824
+ request: req
825
+ )
826
+ end
827
+ rescue StandardError => e
828
+ error = e
829
+ ensure
830
+ if http_response.nil? || Utils.error_status?(http_response.status)
831
+ http_response = @sdk_configuration.hooks.after_error(
832
+ error: error,
833
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
834
+ hook_ctx: hook_ctx
835
+ ),
836
+ response: http_response
837
+ )
838
+ else
839
+ http_response = @sdk_configuration.hooks.after_success(
840
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
841
+ hook_ctx: hook_ctx
842
+ ),
843
+ response: http_response
844
+ )
845
+ end
846
+
847
+ if http_response.nil?
848
+ raise error if !error.nil?
849
+ raise 'no response'
850
+ end
851
+ end
852
+
853
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
854
+ if Utils.match_status_code(http_response.status, ['200'])
855
+ if Utils.match_content_type(content_type, 'application/json')
856
+ http_response = @sdk_configuration.hooks.after_success(
857
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
858
+ hook_ctx: hook_ctx
859
+ ),
860
+ response: http_response
861
+ )
862
+ response_data = http_response.env.response_body
863
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Operations::DeleteMediaPlaybackIdResponseBody)
864
+ response = Models::Operations::DeleteMediaPlaybackIdResponse.new(
865
+ status_code: http_response.status,
866
+ content_type: content_type,
867
+ raw_response: http_response,
868
+ object: obj
869
+ )
870
+
871
+ return response
872
+ else
873
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
874
+ end
875
+ elsif Utils.match_status_code(http_response.status, ['401'])
876
+ if Utils.match_content_type(content_type, 'application/json')
877
+ http_response = @sdk_configuration.hooks.after_success(
878
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
879
+ hook_ctx: hook_ctx
880
+ ),
881
+ response: http_response
882
+ )
883
+ response_data = http_response.env.response_body
884
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::InvalidPermissionError)
885
+ throw obj
886
+ else
887
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
888
+ end
889
+ elsif Utils.match_status_code(http_response.status, ['403'])
890
+ if Utils.match_content_type(content_type, 'application/json')
891
+ http_response = @sdk_configuration.hooks.after_success(
892
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
893
+ hook_ctx: hook_ctx
894
+ ),
895
+ response: http_response
896
+ )
897
+ response_data = http_response.env.response_body
898
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ForbiddenError)
899
+ throw obj
900
+ else
901
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
902
+ end
903
+ elsif Utils.match_status_code(http_response.status, ['404'])
904
+ if Utils.match_content_type(content_type, 'application/json')
905
+ http_response = @sdk_configuration.hooks.after_success(
906
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
907
+ hook_ctx: hook_ctx
908
+ ),
909
+ response: http_response
910
+ )
911
+ response_data = http_response.env.response_body
912
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::MediaOrPlaybackNotFoundError)
913
+ throw obj
914
+ else
915
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
916
+ end
917
+ elsif Utils.match_status_code(http_response.status, ['422'])
918
+ if Utils.match_content_type(content_type, 'application/json')
919
+ http_response = @sdk_configuration.hooks.after_success(
920
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
921
+ hook_ctx: hook_ctx
922
+ ),
923
+ response: http_response
924
+ )
925
+ response_data = http_response.env.response_body
926
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ValidationErrorResponse)
927
+ throw obj
928
+ else
929
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
930
+ end
931
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
932
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
933
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
934
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
935
+ else
936
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown status code received'
937
+
938
+ end
939
+ end
940
+ end
941
+ end