<blockquote>
<p>Just as a matter of principle I don't think we should accept anything that attempts to make an operation which is defined to be non-idempotent behave idempotently.</p>
</blockquote>
<p>If we were to redesign the interface from ground up, I would fully agree with you. Most likely we would first request some URL to store a later osmChange message, and use PUT instead of POST. Still parts of what I have outlined earlier on would to some extent still be valid, e.g. on top of what we have today, we need to persist the diffResult somehow.</p>
<p>It's an interesting coincidence that the folks who came up with this approach also initially forgot to make their API fault-tolerant (see <a href="https://stripe.com/en-US/blog/idempotency" rel="nofollow">https://stripe.com/en-US/blog/idempotency</a>). In the context of financial transactions, it's obviously a big no go to charge your customers twice, and they had to come up with some schema to fix this.</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/openstreetmap/openstreetmap-website/issues/2201#issuecomment-480601447">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/ABWnLdVysq_UF8oSq0Apq8XivFcee6rcks5vehHOgaJpZM4cgFOf">mute the thread</a>.<img src="https://github.com/notifications/beacon/ABWnLRAHSyan8OWkZ3jcKfEzQPgVGKaLks5vehHOgaJpZM4cgFOf.gif" height="1" width="1" alt="" /></p>
<script type="application/json" data-scope="inboxmarkup">{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/openstreetmap/openstreetmap-website","title":"openstreetmap/openstreetmap-website","subtitle":"GitHub repository","main_image_url":"https://github.githubassets.com/images/email/message_cards/header.png","avatar_image_url":"https://github.githubassets.com/images/email/message_cards/avatar.png","action":{"name":"Open in GitHub","url":"https://github.com/openstreetmap/openstreetmap-website"}},"updates":{"snippets":[{"icon":"PERSON","message":"@mmd-osm in #2201: \u003e Just as a matter of principle I don't think we should accept anything that attempts to make an operation which is defined to be non-idempotent behave idempotently.\r\n\r\nIf we were to redesign the interface from ground up, I would fully agree with you. Most likely we would first request some URL to store a later osmChange message, and use PUT instead of POST. Still parts of what I have outlined earlier on would to some extent still be valid, e.g. on top of what we have today, we need to persist the diffResult somehow.\r\n\r\nIt's an interesting coincidence that the folks who came up with this approach also initially forgot to make their API fault-tolerant (see https://stripe.com/en-US/blog/idempotency). In the context of financial transactions, it's obviously a big no go to charge your customers twice, and they had to come up with some schema to fix this. "}],"action":{"name":"View Issue","url":"https://github.com/openstreetmap/openstreetmap-website/issues/2201#issuecomment-480601447"}}}</script>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/openstreetmap/openstreetmap-website/issues/2201#issuecomment-480601447",
"url": "https://github.com/openstreetmap/openstreetmap-website/issues/2201#issuecomment-480601447",
"name": "View Issue"
},
"description": "View this Issue on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>