use conjure_http::endpoint;
/// Upon ingestion, every video is split into smaller segments. The Video Segment Service manages operations on videos
/// at the segment-level.
#[conjure_http::conjure_endpoints(
    name = "VideoSegmentService",
    use_legacy_error_serialization
)]
pub trait VideoSegmentService {
    #[endpoint(
        method = POST,
        path = "/video/v1/videos/{videoRid}/create-segments",
        name = "createSegments"
    )]
    fn create_segments(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "videoRid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            log_as = "videoRid"
        )]
        video_rid: conjure_object::ResourceIdentifier,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        request: super::super::super::super::objects::scout::video::api::CreateSegmentsRequest,
    ) -> Result<(), conjure_http::private::Error>;
    #[endpoint(
        method = POST,
        path = "/video/v1/videos/{videoRid}/{videoFileRid}/create-segments",
        name = "createVideoFileSegments",
        produces = conjure_http::server::StdResponseSerializer
    )]
    fn create_video_file_segments(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "videoRid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            log_as = "videoRid"
        )]
        video_rid: conjure_object::ResourceIdentifier,
        #[path(
            name = "videoFileRid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            log_as = "videoFileRid"
        )]
        video_file_rid: conjure_object::ResourceIdentifier,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        request: super::super::super::super::objects::scout::video::api::CreateSegmentsRequest,
    ) -> Result<
        super::super::super::super::objects::scout::video::api::CreateSegmentsResponse,
        conjure_http::private::Error,
    >;
    /// Creates segments for a video stream. Similar to createVideoFileSegments but for streaming video.
    #[endpoint(
        method = POST,
        path = "/video/v1/videos/{videoRid}/streams/{streamUuid}/create-segments",
        name = "createVideoStreamSegments",
        produces = conjure_http::server::StdResponseSerializer
    )]
    fn create_video_stream_segments(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "videoRid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            log_as = "videoRid"
        )]
        video_rid: conjure_object::ResourceIdentifier,
        #[path(
            name = "streamUuid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            log_as = "streamUuid"
        )]
        stream_uuid: conjure_object::Uuid,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        request: super::super::super::super::objects::scout::video::api::CreateSegmentsRequest,
    ) -> Result<
        super::super::super::super::objects::scout::video::api::CreateSegmentsResponse,
        conjure_http::private::Error,
    >;
    /// Creates segments for a dataset file video. Used for channel-based video ingestion.
    /// Internal use only.
    #[endpoint(
        method = POST,
        path = "/video/v2/videos/create-segments",
        name = "createSegmentsV2",
        produces = conjure_http::server::StdResponseSerializer
    )]
    fn create_segments_v2(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        request: super::super::super::super::objects::scout::video::api::CreateSegmentsV2Request,
    ) -> Result<
        super::super::super::super::objects::scout::video::api::CreateSegmentsV2Response,
        conjure_http::private::Error,
    >;
    /// Creates segments for a channel-backed live video stream. Internal use only.
    #[endpoint(
        method = POST,
        path = "/video/v2/videos/streams/{streamUuid}/create-segments",
        name = "createStreamSegmentsV2",
        produces = conjure_http::server::StdResponseSerializer
    )]
    fn create_stream_segments_v2(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "streamUuid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            log_as = "streamUuid"
        )]
        stream_uuid: conjure_object::Uuid,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        request: super::super::super::super::objects::scout::video::api::CreateStreamSegmentsV2Request,
    ) -> Result<
        super::super::super::super::objects::scout::video::api::CreateSegmentsV2Response,
        conjure_http::private::Error,
    >;
    /// Returns metadata for the segment within a video containing the requested absolute timestamp.
    #[endpoint(
        method = POST,
        path = "/video/v1/videos/{videoRid}/get-segment-by-timestamp",
        name = "getSegmentByTimestamp",
        produces = conjure_http::server::conjure::CollectionResponseSerializer
    )]
    fn get_segment_by_timestamp(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "videoRid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            log_as = "videoRid"
        )]
        video_rid: conjure_object::ResourceIdentifier,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer, safe)]
        request: super::super::super::super::objects::scout::video::api::GetSegmentByTimestampRequest,
    ) -> Result<
        Option<super::super::super::super::objects::scout::video::api::Segment>,
        conjure_http::private::Error,
    >;
}
/// Upon ingestion, every video is split into smaller segments. The Video Segment Service manages operations on videos
/// at the segment-level.
#[conjure_http::conjure_endpoints(
    name = "VideoSegmentService",
    use_legacy_error_serialization
)]
pub trait AsyncVideoSegmentService {
    #[endpoint(
        method = POST,
        path = "/video/v1/videos/{videoRid}/create-segments",
        name = "createSegments"
    )]
    async fn create_segments(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "videoRid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            log_as = "videoRid"
        )]
        video_rid: conjure_object::ResourceIdentifier,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        request: super::super::super::super::objects::scout::video::api::CreateSegmentsRequest,
    ) -> Result<(), conjure_http::private::Error>;
    #[endpoint(
        method = POST,
        path = "/video/v1/videos/{videoRid}/{videoFileRid}/create-segments",
        name = "createVideoFileSegments",
        produces = conjure_http::server::StdResponseSerializer
    )]
    async fn create_video_file_segments(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "videoRid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            log_as = "videoRid"
        )]
        video_rid: conjure_object::ResourceIdentifier,
        #[path(
            name = "videoFileRid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            log_as = "videoFileRid"
        )]
        video_file_rid: conjure_object::ResourceIdentifier,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        request: super::super::super::super::objects::scout::video::api::CreateSegmentsRequest,
    ) -> Result<
        super::super::super::super::objects::scout::video::api::CreateSegmentsResponse,
        conjure_http::private::Error,
    >;
    /// Creates segments for a video stream. Similar to createVideoFileSegments but for streaming video.
    #[endpoint(
        method = POST,
        path = "/video/v1/videos/{videoRid}/streams/{streamUuid}/create-segments",
        name = "createVideoStreamSegments",
        produces = conjure_http::server::StdResponseSerializer
    )]
    async fn create_video_stream_segments(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "videoRid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            log_as = "videoRid"
        )]
        video_rid: conjure_object::ResourceIdentifier,
        #[path(
            name = "streamUuid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            log_as = "streamUuid"
        )]
        stream_uuid: conjure_object::Uuid,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        request: super::super::super::super::objects::scout::video::api::CreateSegmentsRequest,
    ) -> Result<
        super::super::super::super::objects::scout::video::api::CreateSegmentsResponse,
        conjure_http::private::Error,
    >;
    /// Creates segments for a dataset file video. Used for channel-based video ingestion.
    /// Internal use only.
    #[endpoint(
        method = POST,
        path = "/video/v2/videos/create-segments",
        name = "createSegmentsV2",
        produces = conjure_http::server::StdResponseSerializer
    )]
    async fn create_segments_v2(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        request: super::super::super::super::objects::scout::video::api::CreateSegmentsV2Request,
    ) -> Result<
        super::super::super::super::objects::scout::video::api::CreateSegmentsV2Response,
        conjure_http::private::Error,
    >;
    /// Creates segments for a channel-backed live video stream. Internal use only.
    #[endpoint(
        method = POST,
        path = "/video/v2/videos/streams/{streamUuid}/create-segments",
        name = "createStreamSegmentsV2",
        produces = conjure_http::server::StdResponseSerializer
    )]
    async fn create_stream_segments_v2(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "streamUuid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            log_as = "streamUuid"
        )]
        stream_uuid: conjure_object::Uuid,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        request: super::super::super::super::objects::scout::video::api::CreateStreamSegmentsV2Request,
    ) -> Result<
        super::super::super::super::objects::scout::video::api::CreateSegmentsV2Response,
        conjure_http::private::Error,
    >;
    /// Returns metadata for the segment within a video containing the requested absolute timestamp.
    #[endpoint(
        method = POST,
        path = "/video/v1/videos/{videoRid}/get-segment-by-timestamp",
        name = "getSegmentByTimestamp",
        produces = conjure_http::server::conjure::CollectionResponseSerializer
    )]
    async fn get_segment_by_timestamp(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "videoRid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            log_as = "videoRid"
        )]
        video_rid: conjure_object::ResourceIdentifier,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer, safe)]
        request: super::super::super::super::objects::scout::video::api::GetSegmentByTimestampRequest,
    ) -> Result<
        Option<super::super::super::super::objects::scout::video::api::Segment>,
        conjure_http::private::Error,
    >;
}
/// Upon ingestion, every video is split into smaller segments. The Video Segment Service manages operations on videos
/// at the segment-level.
#[conjure_http::conjure_endpoints(
    name = "VideoSegmentService",
    use_legacy_error_serialization,
    local
)]
pub trait LocalAsyncVideoSegmentService {
    #[endpoint(
        method = POST,
        path = "/video/v1/videos/{videoRid}/create-segments",
        name = "createSegments"
    )]
    async fn create_segments(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "videoRid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            log_as = "videoRid"
        )]
        video_rid: conjure_object::ResourceIdentifier,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        request: super::super::super::super::objects::scout::video::api::CreateSegmentsRequest,
    ) -> Result<(), conjure_http::private::Error>;
    #[endpoint(
        method = POST,
        path = "/video/v1/videos/{videoRid}/{videoFileRid}/create-segments",
        name = "createVideoFileSegments",
        produces = conjure_http::server::StdResponseSerializer
    )]
    async fn create_video_file_segments(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "videoRid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            log_as = "videoRid"
        )]
        video_rid: conjure_object::ResourceIdentifier,
        #[path(
            name = "videoFileRid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            log_as = "videoFileRid"
        )]
        video_file_rid: conjure_object::ResourceIdentifier,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        request: super::super::super::super::objects::scout::video::api::CreateSegmentsRequest,
    ) -> Result<
        super::super::super::super::objects::scout::video::api::CreateSegmentsResponse,
        conjure_http::private::Error,
    >;
    /// Creates segments for a video stream. Similar to createVideoFileSegments but for streaming video.
    #[endpoint(
        method = POST,
        path = "/video/v1/videos/{videoRid}/streams/{streamUuid}/create-segments",
        name = "createVideoStreamSegments",
        produces = conjure_http::server::StdResponseSerializer
    )]
    async fn create_video_stream_segments(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "videoRid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            log_as = "videoRid"
        )]
        video_rid: conjure_object::ResourceIdentifier,
        #[path(
            name = "streamUuid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            log_as = "streamUuid"
        )]
        stream_uuid: conjure_object::Uuid,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        request: super::super::super::super::objects::scout::video::api::CreateSegmentsRequest,
    ) -> Result<
        super::super::super::super::objects::scout::video::api::CreateSegmentsResponse,
        conjure_http::private::Error,
    >;
    /// Creates segments for a dataset file video. Used for channel-based video ingestion.
    /// Internal use only.
    #[endpoint(
        method = POST,
        path = "/video/v2/videos/create-segments",
        name = "createSegmentsV2",
        produces = conjure_http::server::StdResponseSerializer
    )]
    async fn create_segments_v2(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        request: super::super::super::super::objects::scout::video::api::CreateSegmentsV2Request,
    ) -> Result<
        super::super::super::super::objects::scout::video::api::CreateSegmentsV2Response,
        conjure_http::private::Error,
    >;
    /// Creates segments for a channel-backed live video stream. Internal use only.
    #[endpoint(
        method = POST,
        path = "/video/v2/videos/streams/{streamUuid}/create-segments",
        name = "createStreamSegmentsV2",
        produces = conjure_http::server::StdResponseSerializer
    )]
    async fn create_stream_segments_v2(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "streamUuid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            log_as = "streamUuid"
        )]
        stream_uuid: conjure_object::Uuid,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        request: super::super::super::super::objects::scout::video::api::CreateStreamSegmentsV2Request,
    ) -> Result<
        super::super::super::super::objects::scout::video::api::CreateSegmentsV2Response,
        conjure_http::private::Error,
    >;
    /// Returns metadata for the segment within a video containing the requested absolute timestamp.
    #[endpoint(
        method = POST,
        path = "/video/v1/videos/{videoRid}/get-segment-by-timestamp",
        name = "getSegmentByTimestamp",
        produces = conjure_http::server::conjure::CollectionResponseSerializer
    )]
    async fn get_segment_by_timestamp(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "videoRid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            log_as = "videoRid"
        )]
        video_rid: conjure_object::ResourceIdentifier,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer, safe)]
        request: super::super::super::super::objects::scout::video::api::GetSegmentByTimestampRequest,
    ) -> Result<
        Option<super::super::super::super::objects::scout::video::api::Segment>,
        conjure_http::private::Error,
    >;
}
