Their model, in our domain
A partner's API is the source of truth for shipments. Their model carries three status fields, two of which are legacy, and a rule that a shipment can be both delivered and in transit for up to a day.
Their types are now the types used in our domain, because importing them was the fastest way to integrate. Our shipment rules are written in their vocabulary, contradictions included.
Their next version renames one of the legacy fields. There is nothing between that rename and our business logic.
Boundaries, outermost first: Partner: Partner API (three status fields), Their legacy field (renamed next version) Our domain: Shipment rules (our domain logic) Outside every boundary: an empty slot for the translates at the seam Connections: Partner API calls translates at the seam (step 1) translates at the seam calls Shipment rules — our vocabulary (step 2) Their legacy field controls translates at the seam Partner API must NOT reach Shipment rules — their types, our rules