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

import Foundation
import Get
import URLQueryEncoder

extension Paths.Marketplace.Projects.WithProjectId.Media {
    public func mediaId(_ mediaId: String) -> WithMediaId {
        WithMediaId(path: "\(path)/\(mediaId)")
    }

    public struct WithMediaId {
        /// Path: `/api/marketplace/projects/{project_id}/media/{media_id}`
        public let path: String

        /// Update Project Media
        ///
        /// Update a media reference's time ranges
        public func put(_ body: [[String: AnyJSON]]) -> Request<GenAPI.MediaResponse> {
            Request(path: path, method: "PUT", body: body, id: "studio_api_marketplace_api_update_project_media")
        }

        /// Update Media
        ///
        /// Update title and description for a media reference
        public func patch(title: String? = nil, description: String? = nil) -> Request<GenAPI.MediaResponse> {
            Request(path: path, method: "PATCH", query: makePatchQuery(title, description), id: "studio_api_marketplace_api_update_media")
        }

        private func makePatchQuery(_ title: String?, _ description: String?) -> [(String, String?)] {
            let encoder = URLQueryEncoder()
            encoder.encode(title, forKey: "title")
            encoder.encode(description, forKey: "description")
            return encoder.items
        }

        /// Delete Media Reference
        ///
        /// Soft delete a media reference (submissions and references only, never source)
        public var delete: Request<Void> {
            Request(path: path, method: "DELETE", id: "studio_api_marketplace_api_delete_media_reference")
        }
    }
}
