How do you do it when changing structure of data or change relation between data you expose through your REST api?
I assume the question relates to backward compatibility. The REST API is generally speaking always backward compatible (read on for details). We are continually adding new content and features, but these will not break existing endpoints and structures. We do reserve the right to introduce small breaking changes but there will be advance notice of these changes and a period of backward compatibility.
With regards to content changes: We may on occasion remove or rename a content field, but there will be advance notice of these changes and a period of backward compatibility.
With regards to the .Net SDK: The older SDK is always compatible with the new release. In other words, when we release a new SDK or new REST API version you will not need to update your SDK. We do however, recommend you keep your SDK updated to have access to the latest features and fixes. The newer SDK may include minor signature changes which you would need to accommodate, but you can update the SDK at a time of your choosing. We have had once instance where we required users to update to the latest version of the SDK, but again ample notice was provided.
In a nutshell. New releases of our software should never break your production software. In the rare instance that we find the need to introduce a breaking change, we will provide a period of backward compatibility where the new and old schemas are accepted allowing for a transition period.