The ShippingDetails container consists of ALL shipping information for the listing.
The complexities inherent to this container often result in very specific eBay bugs, or other strange behaviors. There are some simple best practices that can help you avoid problems stemming from bugs or strange behaviors.
This is a very important best practice. If you need to revise anything that resides in the ShippingDetails container, it is always a best practice to send all of the existing data for the item in the ShippingDetails container. Think of it as a full overwrite. Do not just send in the specific data that you need to change. This is not a hard and fast requirement, but a good defensive practice that will insulate you from numerous issues that often affect developers who do not employ this practice.
Unlike the first best practice, this is almost a requirement, since the chances of encountering problems is even higher if you do not treat the domestic and international shipping services as a single unit. An example of this would be if you used 1 domestic shipping service, and 1 international shipping service in a listing, and you wanted to either add a second international shipping service or remove the existing international shipping service. Send in the complete data, not just the delta that you are trying to achieve.