     public let width: String?
     public let height: String?
 }
+
+
+// MARK: - Category
+public struct Album: Decodable
+{
+    public let id: Int?                     // 32
+
+    // The following data is not stored in image cache
+    public let name: String?                // "Insects & Spiders"
+    public let permalink: String?           // null
+    public let uppercats: String?           // "32"
+    public let global_rank: String?         // "1"
+    public let url: String?                 // "https:…"
+    public let page_url: String?            // "https:…"
+}

        case ratingScore = "rating_score"
        case fileSize = "filesize"
        case md5checksum = "md5sum"
    }
}


// MARK: - Result
public struct ImagesGetInfo: Decodable
{
    public let imageId: Int?                    // 1042
    public let imageTitle: String?              // "Title"
    public let comment: String?                 // "No description"
    public let visits: Int?                     // 0
    public let fileName: String?                // Image.jpg
    public let datePosted: String?              // "yyyy-MM-dd HH:mm:ss"
    public let dateCreated: String?             // "yyyy-MM-dd HH:mm:ss"
 
    public let fullResWidth: Int?               // 4092
    public let fullResHeight: Int?              // 2048
    public let fullResPath: String?             // "https://…image.jpg"
     
    public let author: String?                  // "Eddy"
    public let privacyLevel: String?            // "0"
    public let tags: [TagProperties]?           // See TagProperties
    public let ratingScore: String?             // "1.0"
    public let fileSize: Int?                   // 3025
    public let md5checksum: String?             // 2141e377254a429be151900e4bedb520
    public let categoryIds: [Album]?            // See Album below

    public enum CodingKeys: String, CodingKey {
        case imageId = "id"
