We generally communicate with external system using connectors/services. When we run connector metadata wizard it creates the rules for int layer (all the classes and properties). As part of data and int layer seperation we create some data classes using which we build our UI and other rules.
For creating the data classes related to any int component, do we need to replicate the class structure same as int.
In general what ar th guidelines to create the data structures (data classes) for any external service we consume.
There are no strict guidelines as such in designing the data classes to consume the external system's data. But, most of the time we mimic the data class as per the integration layer. So, that data propagation will be smoother between the two layers.
In some situations, we might to expand the data class from not just capturing the data from integration layer but also for data capturing. So, your data class should be scalable enough to accommodate the new changes.
Always remember, if your data layer is well defined and considered all the design aspects then the application can be maintained without any hassle.