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

import Foundation
import Get
import URLQueryEncoder

extension Paths.Clips {
    public var getSimilar: GetSimilar {
        GetSimilar(path: path + "/get_similar")
    }

    public struct GetSimilar {
        /// Path: `/api/clips/get_similar`
        public let path: String

        /// Get Similar Endpoint
        ///
        /// Find similar public songs to the given clip ids.
        public func get(parameters: GetParameters) -> Request<GenAPI.SimilarClipsSchema> {
            Request(path: path, method: "GET", query: parameters.asQuery, id: "studio_api_clips_api_get_similar_endpoint")
        }

        public struct GetParameters {
            public var id: String
            public var count: Int?
            public var exactMatch: Bool?

            public init(id: String, count: Int? = nil, exactMatch: Bool? = nil) {
                self.id = id
                self.count = count
                self.exactMatch = exactMatch
            }

            public var asQuery: [(String, String?)] {
                let encoder = URLQueryEncoder()
                encoder.encode(id, forKey: "id")
                encoder.encode(count, forKey: "count")
                encoder.encode(exactMatch, forKey: "exact_match")
                return encoder.items
            }
        }
    }
}
