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

import Foundation

/// Spec for updating contest details.
/// All fields are optional - only provided fields will be updated.
/// Mirrors CreateContestSpec but with all fields optional.
public struct UpdateContestSpec: Codable, Equatable {
    public var canDownloadRemixes: Bool?
    public var contestBanner: String?
    public var contestBannerMobile: String?
    public var contestCategory: String?
    /// ContestVisibility
    public var contestVisibilityLevel: ContestVisibility?
    public var description: String?
    public var endTime: Date?
    public var judgingEnd: Date?
    public var judgingStart: Date?
    public var name: String?
    public var slug: String?
    public var startTime: Date?
    /// ContestVisibility
    public var submissionsVisibilityLevel: ContestVisibility?
    public var type: String?
    public var winnersAnnouncedDate: Date?

    public init(canDownloadRemixes: Bool? = nil, contestBanner: String? = nil, contestBannerMobile: String? = nil, contestCategory: String? = nil, contestVisibilityLevel: ContestVisibility? = nil, description: String? = nil, endTime: Date? = nil, judgingEnd: Date? = nil, judgingStart: Date? = nil, name: String? = nil, slug: String? = nil, startTime: Date? = nil, submissionsVisibilityLevel: ContestVisibility? = nil, type: String? = nil, winnersAnnouncedDate: Date? = nil) {
        self.canDownloadRemixes = canDownloadRemixes
        self.contestBanner = contestBanner
        self.contestBannerMobile = contestBannerMobile
        self.contestCategory = contestCategory
        self.contestVisibilityLevel = contestVisibilityLevel
        self.description = description
        self.endTime = endTime
        self.judgingEnd = judgingEnd
        self.judgingStart = judgingStart
        self.name = name
        self.slug = slug
        self.startTime = startTime
        self.submissionsVisibilityLevel = submissionsVisibilityLevel
        self.type = type
        self.winnersAnnouncedDate = winnersAnnouncedDate
    }
}
