CONTRIBUTIONs and VERSIONs have an associated AUDIT_DETAILS, which has a system_id property. Since the REST API allows to commit one CONTRIBUTION with many versions at once, we need to add an invariant to be sure all system_id properties have the same value in the CONTRIBUTION and all the VERSIONS.
In the format used for the REST API POST /contribution we could say something like "the system_id for each VERSION should be the same as the system_id for the CONTRIBUTION". An one step further would be to define the system_id attribute just at the CONTRIBUTION level in the data format sent to POST /contribution, so the server uses that value to assign it to each VERSION.audit.system_id (just an idea)