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

import Foundation

public struct GeneratedClipSSRSchema: Codable, Identifiable {
    public var id: UUID
    public var videoUrl: String?
    public var audioUrl: String?
    public var imageUrl: String?
    public var imageLargeUrl: String?
    public var majorModelVersion: String
    public var modelName: String
    /// GenMetadataSchema
    ///
    /// Selected fields from GeneratedClip.metadata.
    public var metadata: GenMetadataSchema
    /// UserReactionSchema
    public var reaction: UserReactionSchema
    /// SimplePersonaSchema
    public var persona: SimplePersonaSchema?
    /// SimpleProjectSchema
    public var project: SimpleProjectSchema?
    public var displayName: String?
    public var handle: String?
    public var isHandleUpdated: Bool
    public var isTrashed: Bool
    public var avatarImageUrl: String?
    public var isFollowingCreator: Bool?
    public var userId: String?
    public var commentCount: Int?
    public var createdAt: Date
    public var status: String?
    public var title: String?
    public var playCount: Int?
    public var upvoteCount: Int?
    public var isPublic: Bool
    public var allowComments: Bool

    public init(id: UUID, videoUrl: String? = nil, audioUrl: String? = nil, imageUrl: String? = nil, imageLargeUrl: String? = nil, majorModelVersion: String, modelName: String, metadata: GenMetadataSchema, reaction: UserReactionSchema, persona: SimplePersonaSchema? = nil, project: SimpleProjectSchema? = nil, displayName: String? = nil, handle: String? = nil, isHandleUpdated: Bool, isTrashed: Bool, avatarImageUrl: String? = nil, isFollowingCreator: Bool? = nil, userId: String? = nil, commentCount: Int? = nil, createdAt: Date, status: String? = nil, title: String? = nil, playCount: Int? = nil, upvoteCount: Int? = nil, isPublic: Bool? = nil, allowComments: Bool? = nil) {
        self.id = id
        self.videoUrl = videoUrl
        self.audioUrl = audioUrl
        self.imageUrl = imageUrl
        self.imageLargeUrl = imageLargeUrl
        self.majorModelVersion = majorModelVersion
        self.modelName = modelName
        self.metadata = metadata
        self.reaction = reaction
        self.persona = persona
        self.project = project
        self.displayName = displayName
        self.handle = handle
        self.isHandleUpdated = isHandleUpdated
        self.isTrashed = isTrashed
        self.avatarImageUrl = avatarImageUrl
        self.isFollowingCreator = isFollowingCreator
        self.userId = userId
        self.commentCount = commentCount
        self.createdAt = createdAt
        self.status = status
        self.title = title
        self.playCount = playCount
        self.upvoteCount = upvoteCount
        self.isPublic = isPublic ?? false
        self.allowComments = allowComments ?? true
    }
}
