// Generated by Create API
// https://github.com/CreateAPI/CreateAPI

import Foundation
import Get
import URLQueryEncoder

extension Paths.Studio {
    public var renderState: RenderState {
        RenderState(path: path + "/render-state")
    }

    public struct RenderState {
        /// Path: `/api/studio/render-state`
        public let path: String

        /// Render State
        ///
        /// Render a project state to generate a clip.
        /// 
        /// Args:
        ///     data: Contains state, start_beats, and end_beats to render
        public func post(_ body: GenAPI.RenderStateSchema) -> Request<PostResponse> {
            Request(path: path, method: "POST", body: body, id: "studio_api_bots_studio_api_render_state")
        }

        /// Response
        public struct PostResponse: Decodable, Equatable {
            public var generatedClipSchema: GenAPI.GeneratedClipSchema?
            public var genericModerationErrorSchema: GenAPI.GenericModerationErrorSchema?

            public init(generatedClipSchema: GenAPI.GeneratedClipSchema? = nil, genericModerationErrorSchema: GenAPI.GenericModerationErrorSchema? = nil) {
                self.generatedClipSchema = generatedClipSchema
                self.genericModerationErrorSchema = genericModerationErrorSchema
            }

            public init(from decoder: Decoder) throws {
                let container = try decoder.singleValueContainer()
                self.generatedClipSchema = try? container.decode(GenAPI.GeneratedClipSchema.self)
                self.genericModerationErrorSchema = try? container.decode(GenAPI.GenericModerationErrorSchema.self)
            }
        }
    }
}
