Files
ABS-Client/ABS Client Mac/Audiobookshelf swift/Models/APIResponses.swift
2026-05-17 08:45:37 +02:00

87 lines
1.7 KiB
Swift

import Foundation
struct LoginResponseDTO: Decodable {
let user: UserDTO
}
struct UserDTO: Decodable {
let id: String
let username: String?
let token: String
}
struct LibrariesResponseDTO: Decodable {
let libraries: [LibraryDTO]
}
struct LibraryDTO: Decodable {
let id: String
let name: String
let mediaType: String?
}
struct LibraryItemsResponseDTO: Decodable {
let results: [LibraryItemDTO]
let total: Int?
}
struct LibraryItemDTO: Decodable {
let id: String
let mediaType: String?
let media: MediaDTO?
}
struct MediaDTO: Decodable {
let metadata: MetadataDTO?
let duration: Double?
let audioFiles: [AudioFileDTO]?
let episodes: [EpisodeDTO]?
}
struct MetadataDTO: Decodable {
let title: String?
let authorName: String?
let author: String?
let description: String?
}
struct EpisodeDTO: Decodable {
let id: String
let title: String?
let subtitle: String?
let pubDate: String?
let publishedAt: Double?
let season: String?
let episode: String?
let duration: Double?
let audioFile: AudioFileDTO?
}
struct AudioFileDTO: Decodable {
let ino: String
let index: Int?
let metadata: AudioFileMetadataDTO?
let duration: Double?
struct AudioFileMetadataDTO: Decodable {
let filename: String?
let ext: String?
}
}
struct ProgressResponseDTO: Decodable {
let id: String?
let libraryItemId: String?
let episodeId: String?
let currentTime: Double?
let duration: Double?
let isFinished: Bool?
let lastUpdate: Double?
}
struct MeResponseDTO: Decodable {
let id: String?
let username: String?
let mediaProgress: [ProgressResponseDTO]?
}