Delivery and ordering
Acknowledge with a 2xx once you have stored the message. Anything else is a failed delivery. It is retried up to 8 times over roughly 28 hours, and an endpoint that fails continuously for 5 days is disabled until Casap re-enables it.
Repeats are normal. A message is sent on every committed change to the dispute, and many changes touch nothing you read, so expect messages whose content matches the last one. Treat disputeUuid plus occurredAt as the identity of a message and drop a pair you have already processed. One change can also produce two messages carrying the same entry; both are valid snapshots.
There is no sequence number. Messages can arrive out of order. For the dispute state this costs nothing: data.dispute, timeline and every outstanding entry are a full snapshot, so keep the message with the newest occurredAt and discard older ones. A message you miss is corrected by the next one for the same dispute. Notifications are the one exception, and only matter if you have taken over member communications; see Member communications.
Reopening mints a new dispute. A dispute reopened through the API gets its own disputeUuid, and its first message is a creation.