Case status change to a closed status does not update the end date and relationships of the case
I'd suggest this is a question of whether there should be low-level and high-level variations of the API. Typically a low-level api is not aware of the semantics (e.g. what "closed" means in real life - it just sets the right field to the value given), whereas the higher level api might. So should there be a separate higher-level function that knows it should call three low-level api functions when "closed", and let the lower-level functions only do one thing each.