Ну и fetch data.
func fetchData<T: Decodable>(url: String, jsonData: 
@escaping (_ profiles:T)->(), interfaceActions: 
@escaping ()->()) {                
        guard let url = URL(string: url) else {return}
        URLSession.shared.dataTask(with: url) { (data, _, _) in            
            guard let data = data else {return}            
            do {
                let decoder = JSONDecoder()
                decoder.keyDecodingStrategy = .convertFromSnakeCase
                let profilesList = try decoder.decode(T.self, from: data)                
                jsonData(profilesList)                
                DispatchQueue.main.async {
                    interfaceActions()
                }                
            } catch let error {
                print("Decode ERROR: \(error)")
            }
        } .resume()
    }