Stack Exchange network consists of 183 Q&A communities including Stack Overflow, the largest, most trusted online community for developers to learn, share their knowledge, and build their careers.
This would be the approach I would use as I think it's just cleaner if endpoint return values are always consistent, regardless of who the user is (EDIT - and of course, the user's permissions affect what endpoint they can access).
Indeed. In Pragmatic Programmer, Hunt and Thomas describe a Controller as: A way to control the view and provide the model with new data. It publishes events to both the model and the view.
Reinforcing your point about there not being a consensus on what exactly is MVC, the Wikipedia link you posted states that the Controller is one-way only (Accepts input and converts it to commands for the model or view), and not bidirectional like you state in your answer - that sounds more like an Adapter or ViewModel.
You could make it so that a Country owns a set of CountryRelations, so you don't a FirstCountry/SecondCountry property - you just need one for the TargetCountry. (EDIT - though if it were a database table, then yes that makes sense)
@BobDalgleish True. I meant "purposeless" purely in terms of code compilation and not for anyone reading it. Its presence, though beneficial in terms of documentation, does also contribute to the number of relevant header files and therefore to the "noise" which the developer needs to get their head around.