1. Bulk synchronization
The sync endpoint should support upload different data point in one go e.g. companies, company relations, officers, officer relations, etc - as much as possible.
However, there will be some exceptions e.g. documents.
2. Idempotent operations
Calling the sync endpoint with the same payload should not have any side-effect (except for activity logs).
3. Extract and load
The caller shouldn’t have to store the state of data in Avallone for the integration to work. The caller should simply have to send the data extracted from it’s internal system. Avallone will take care of synchronization i.e. figuring out what needs to be created vs updated.
4. Accept partial data
End-user doesn’t always have the complete dataset. Whatever is available should be accepted.