I believe in including setters in the API only if they are really part of the class specification (i.e. its contract with the caller).
Any other data member related to inner representation should be hidden, and I see at least 2 major reasons for that:
1) If inner representation is exposed, design changes are more problematic in the future, and require API changes as well.
2) Exposing data members with setters/getters with no caution allows callers to ruin the class invariant very easily. Objects with inconsistent state can cause bugs which are very difficult to analyze.
Unfortunately there are some frameworks which encourage (sometimes require) adding setters/getters for everything.