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

import Foundation
import Get
import URLQueryEncoder

extension Paths.VideoGen.Higgsfield {
    public var startSoulImages: StartSoulImages {
        StartSoulImages(path: path + "/start_soul_images")
    }

    public struct StartSoulImages {
        /// Path: `/api/video_gen/higgsfield/start_soul_images`
        public let path: String

        /// Start Soul Images
        ///
        /// 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_start_soul_images")
        }

        public struct PostParameters {
            public var videoWorkspaceId: String
            public var customReferenceId: String?
            public var imageUrl: String?

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

            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")
                return encoder.items
            }
        }
    }
}
