Support data synchronization from external systems to Avallone
Avallone primarily supports once way synchronization i.e. data from customers can be uploaded to Avallone.
Data can be synchronized in bulk
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.
Operations are idempotent
Calling the sync endpoint with the same payload should not have any side-effect (except for activity logs)
Single endpoint for bulk updates and single point updates
If the sync operation works for bulk data, it should also work for a subset of the data
Client is not required to store any state
The client (or the caller of the API) should simply have to extract the data from their system and send to Avallone. Avallone will take care of figuring out what needs to be created vs updated