Upon initial inspection, it appears that a broader perspective is needed when considering the usage of this service.
Is this service solely providing read-only data, or does it also handle modifications to the data? Once you determine this, it should become clearer how to proceed.
Ultimately, the service should have ownership of the data, and subscribers should not be able to alter the results. Whether the subscribers are intended to only read from the data or modify it, making direct changes to the object itself is ill-advised, especially given multiple subscribers accessing the same data.
In conclusion, each subscriber should receive either a deep copy of the data or, if resource-intensive, a shallow copy with an interface for querying nested data - which would return copies as well.
Any subscribers handling the data should pass it to a method responsible for saving it, such as
service.SaveSomeInformation(responseInformation)
.
TL;DR
Avoid sharing the reference of the data with subscribers; instead, provide each subscriber with a copy (or subset) of the data.
Best wishes
Credible source
Describes an application's boundary using a layer of services that defines available operations and coordinates the application's response in each operation.
as well as
... . It encapsulates the application's business logic, controlling transactions and coordinating responses in the implementation of its operations.