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

import Foundation

public struct UpsertLabelMakerProjectSpec: Codable, Equatable {
    public var creditsPerAnnotation: Int?
    public var enabled: Bool?
    public var honeypotProbability: Double?
    public var honeypotsPerUser: Int?
    public var instructions: String?
    public var maxAnnotationsPerTask: Int?
    public var maxAnnotationsPerUser: Int?
    public var mediaType: MediaType?
    public var minReviewTimeSeconds: Int?
    public var preferenceDimensions: [[String: String]]
    public var priority: Int?
    public var projectId: UUID?
    public var projectName: String
    public var question: String
    public var statsigGate: String?
    public var syncPlayheads: Bool?
    public var targetReviewCount: Int

    public struct MediaType: RawRepresentable, Codable, Equatable {
        public let rawValue: String

        public init(rawValue: String) {
            self.rawValue = rawValue
        }

        public static let audio = Self(rawValue: "audio")
        public static let video = Self(rawValue: "video")
    }

    public init(creditsPerAnnotation: Int? = nil, enabled: Bool? = nil, honeypotProbability: Double? = nil, honeypotsPerUser: Int? = nil, instructions: String? = nil, maxAnnotationsPerTask: Int? = nil, maxAnnotationsPerUser: Int? = nil, mediaType: MediaType? = nil, minReviewTimeSeconds: Int? = nil, preferenceDimensions: [[String: String]], priority: Int? = nil, projectId: UUID? = nil, projectName: String, question: String, statsigGate: String? = nil, syncPlayheads: Bool? = nil, targetReviewCount: Int) {
        self.creditsPerAnnotation = creditsPerAnnotation
        self.enabled = enabled
        self.honeypotProbability = honeypotProbability
        self.honeypotsPerUser = honeypotsPerUser
        self.instructions = instructions
        self.maxAnnotationsPerTask = maxAnnotationsPerTask
        self.maxAnnotationsPerUser = maxAnnotationsPerUser
        self.mediaType = mediaType
        self.minReviewTimeSeconds = minReviewTimeSeconds
        self.preferenceDimensions = preferenceDimensions
        self.priority = priority
        self.projectId = projectId
        self.projectName = projectName
        self.question = question
        self.statsigGate = statsigGate
        self.syncPlayheads = syncPlayheads
        self.targetReviewCount = targetReviewCount
    }
}
