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

import Foundation
import Get
import URLQueryEncoder

extension Paths.VideoGen.Higgsfield {
    public var generateImage: GenerateImage {
        GenerateImage(path: path + "/generate_image")
    }

    public struct GenerateImage {
        /// Path: `/api/video_gen/higgsfield/generate_image`
        public let path: String

        /// Generate Image
        ///
        /// Start soul image generation for a video workspace
        public func post(parameters: PostParameters) -> Request<Void> {
            Request(path: path, method: "POST", query: parameters.asQuery, id: "studio_api_video_gen_higgsfield_api_generate_image")
        }

        public struct PostParameters {
            public var videoWorkspaceId: String
            public var customReferenceId: String?
            public var imageUrl: String?
            public var sceneIndex: Int?
            public var prompt: String?

            public init(videoWorkspaceId: String, customReferenceId: String? = nil, imageUrl: String? = nil, sceneIndex: Int? = nil, prompt: String? = nil) {
                self.videoWorkspaceId = videoWorkspaceId
                self.customReferenceId = customReferenceId
                self.imageUrl = imageUrl
                self.sceneIndex = sceneIndex
                self.prompt = prompt
            }

            public var asQuery: [(String, String?)] {
                let encoder = URLQueryEncoder()
                encoder.encode(videoWorkspaceId, forKey: "video_workspace_id")
                encoder.encode(customReferenceId, forKey: "custom_reference_id")
                encoder.encode(imageUrl, forKey: "image_url")
                encoder.encode(sceneIndex, forKey: "scene_index")
                encoder.encode(prompt, forKey: "prompt")
                return encoder.items
            }
        }
    }
}
