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

import Foundation
import Get
import URLQueryEncoder

extension Paths.Marketplace.Projects.WithProjectId {
    public var messages: Messages {
        Messages(path: path + "/messages")
    }

    public struct Messages {
        /// Path: `/api/marketplace/projects/{project_id}/messages`
        public let path: String

        /// Get Messages
        ///
        /// Get all messages for a project
        public func get(timeRangeStart: Double? = nil, timeRangeEnd: Double? = nil) -> Request<[GenAPI.MessageResponse]> {
            Request(path: path, method: "GET", query: makeGetQuery(timeRangeStart, timeRangeEnd), id: "studio_api_marketplace_api_get_messages")
        }

        private func makeGetQuery(_ timeRangeStart: Double?, _ timeRangeEnd: Double?) -> [(String, String?)] {
            let encoder = URLQueryEncoder()
            encoder.encode(timeRangeStart, forKey: "time_range_start")
            encoder.encode(timeRangeEnd, forKey: "time_range_end")
            return encoder.items
        }

        /// Send Message
        ///
        /// Send a message in a project chat
        public func post(_ body: GenAPI.MessageCreateRequest) -> Request<GenAPI.MessageResponse> {
            Request(path: path, method: "POST", body: body, id: "studio_api_marketplace_api_send_message")
        }
    }
}
