import Foundation struct PublicCategory: Decodable { let id: String let name: String let icon: String? } struct CustomerProfileUpdatePayload: Encodable { let addressBook: [CustomerAddressPayload] enum CodingKeys: String, CodingKey { case addressBook = "address_book" } } struct CustomerIdentityUpdatePayload: Encodable { let name: String? let email: String? let phoneNumber: String? let profilePicture: String? enum CodingKeys: String, CodingKey { case name case email case phoneNumber case profilePicture } func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(name, forKey: .name) try container.encodeIfPresent(email, forKey: .email) try container.encodeIfPresent(phoneNumber, forKey: .phoneNumber) if let profilePicture, profilePicture.isEmpty == false { try container.encode(profilePicture, forKey: .profilePicture) } } } struct CustomerAddressPayload: Encodable { let label: String? let address: String? let number: String? let complement: String? let neighborhood: String? let city: String? let state: String? let zipCode: String? let latLong: [Double]? enum CodingKeys: String, CodingKey { case label case address case number case complement case neighborhood case city case state case zipCode case latLong = "lat_long" } init(from address: CustomerAddress) { self.label = address.label self.address = address.address self.number = address.number self.complement = address.complement self.neighborhood = address.neighborhood self.city = address.city self.state = address.state self.zipCode = address.zipCode self.latLong = address.latLong } }