import Foundation enum OpenAIHTTPError { static func userMessage(statusCode: Int, data: Data) -> String { switch statusCode { case 401, 403: return UserFacingError.generic case 429: return "Too many requests. Please wait a moment and try again." case 500...599: return "The service is temporarily unavailable. Please try again." default: if let message = errorMessage(from: data), let sanitized = UserFacingError.sanitized(message) { return sanitized } return UserFacingError.generic } } private static func errorMessage(from data: Data) -> String? { struct APIErrorResponse: Decodable { struct APIError: Decodable { let message: String } let error: APIError } return (try? JSONDecoder().decode(APIErrorResponse.self, from: data))?.error.message } }