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

import Foundation

public struct VideoHookSchema: Codable, Equatable, Identifiable {
    public var allowComments: Bool
    public var caption: String?
    /// GeneratedClipSchema
    public var clip: GeneratedClipSchema?
    public var commentCount: Int?
    public var contentRatingTags: [String]?
    public var createdAt: String
    /// VideoHookCreationSource
    public var creationSource: VideoHookCreationSource?
    public var currentUserDisliked: Bool
    public var currentUserFollowsCreator: Bool
    public var currentUserLiked: Bool
    public var endClipTimestamp: Double
    public var humanRating: String?
    public var id: String
    public var isTest: Bool
    public var likeCount: Int
    public var lyricDisplay: LyricDisplay?
    public var originalClipId: String
    public var recommendationItemId: String?
    public var recommendationRunId: String?
    public var renderedVideoPreviewS3Id: String?
    public var renderedVideoPreviewUrl: String?
    public var renderedVideoS3Id: String?
    public var renderedVideoUrl: String?
    public var reportCount: Int?
    public var showLyrics: Bool
    public var songVolume: Int?
    public var staffReviewStatus: Int?
    public var startClipTimestamp: Double
    /// VideoHookStatus
    public var status: VideoHookStatus
    public var thumbnailImageS3Id: String?
    public var thumbnailImageUrl: String?
    public var title: String
    public var updatedAt: String
    /// SimpleProfileInfoSchema
    public var user: SimpleProfileInfoSchema?
    public var userId: Int
    public var videoDuration: Double
    public var videoStreamingResolutions: [VideoStreamingResolutionSchema]?
    public var videoUploadIds: [String]?
    public var videoVolume: Int?
    public var viewCount: Int

    public init(allowComments: Bool? = nil, caption: String? = nil, clip: GeneratedClipSchema? = nil, commentCount: Int? = nil, contentRatingTags: [String]? = nil, createdAt: String, creationSource: VideoHookCreationSource? = nil, currentUserDisliked: Bool, currentUserFollowsCreator: Bool, currentUserLiked: Bool, endClipTimestamp: Double, humanRating: String? = nil, id: String, isTest: Bool, likeCount: Int, lyricDisplay: LyricDisplay? = nil, originalClipId: String, recommendationItemId: String? = nil, recommendationRunId: String? = nil, renderedVideoPreviewS3Id: String? = nil, renderedVideoPreviewUrl: String? = nil, renderedVideoS3Id: String? = nil, renderedVideoUrl: String? = nil, reportCount: Int? = nil, showLyrics: Bool? = nil, songVolume: Int? = nil, staffReviewStatus: Int? = nil, startClipTimestamp: Double, status: VideoHookStatus, thumbnailImageS3Id: String? = nil, thumbnailImageUrl: String? = nil, title: String, updatedAt: String, user: SimpleProfileInfoSchema? = nil, userId: Int, videoDuration: Double, videoStreamingResolutions: [VideoStreamingResolutionSchema]? = nil, videoUploadIds: [String]? = nil, videoVolume: Int? = nil, viewCount: Int) {
        self.allowComments = allowComments ?? true
        self.caption = caption
        self.clip = clip
        self.commentCount = commentCount
        self.contentRatingTags = contentRatingTags
        self.createdAt = createdAt
        self.creationSource = creationSource
        self.currentUserDisliked = currentUserDisliked
        self.currentUserFollowsCreator = currentUserFollowsCreator
        self.currentUserLiked = currentUserLiked
        self.endClipTimestamp = endClipTimestamp
        self.humanRating = humanRating
        self.id = id
        self.isTest = isTest
        self.likeCount = likeCount
        self.lyricDisplay = lyricDisplay
        self.originalClipId = originalClipId
        self.recommendationItemId = recommendationItemId
        self.recommendationRunId = recommendationRunId
        self.renderedVideoPreviewS3Id = renderedVideoPreviewS3Id
        self.renderedVideoPreviewUrl = renderedVideoPreviewUrl
        self.renderedVideoS3Id = renderedVideoS3Id
        self.renderedVideoUrl = renderedVideoUrl
        self.reportCount = reportCount
        self.showLyrics = showLyrics ?? true
        self.songVolume = songVolume
        self.staffReviewStatus = staffReviewStatus
        self.startClipTimestamp = startClipTimestamp
        self.status = status
        self.thumbnailImageS3Id = thumbnailImageS3Id
        self.thumbnailImageUrl = thumbnailImageUrl
        self.title = title
        self.updatedAt = updatedAt
        self.user = user
        self.userId = userId
        self.videoDuration = videoDuration
        self.videoStreamingResolutions = videoStreamingResolutions
        self.videoUploadIds = videoUploadIds
        self.videoVolume = videoVolume
        self.viewCount = viewCount
    }
}
