To the best of my abiliity I tried to approach this problem in an efficient and reusable pattern. Also while making use of Swift 4's new Codable and Decodable protocols.
To maximize code reusability for both RPComment and RPAnnotation, have them both inherit the Prodcut class (which I will then use in the NetworkManager to leverage the same call for both objects.
Also the NetworkManager blueprint can be used for different types of store (Parse, REST API)
I used Alamofire for simplcity purposes.
What I am trying to maximise is a reusable design pattern to save code duplication and isolation for further changes.