<div style="display: flex; flex-wrap: wrap; white-space: pre-wrap; align-items: center; "><img height="20" width="20" style="border-radius:50%; margin-right: 4px;" decoding="async" src="https://avatars.githubusercontent.com/u/5842757?s=20&v=4" /><strong>mmd-osm</strong> left a comment <a href="https://github.com/openstreetmap/openstreetmap-website/pull/5973#issuecomment-2847798724">(openstreetmap/openstreetmap-website#5973)</a></div>
<p dir="auto">I tried a few variations to have <code class="notranslate">if-unused</code> on the same level as it is in the XML version. This turned out to be tricky. It would require us to introduce another <code class="notranslate">elements</code> array that would have to be added to create and modify actions as well for the sake of consistency.</p>
<details>
<summary>(expand me)</summary>
<div class="highlight highlight-source-json" dir="auto"><pre class="notranslate">    <span class="pl-ent">"delete"</span>: {
      <span class="pl-ent">"if-unused"</span>: <span class="pl-c1">true</span>,
      <span class="pl-ent">"elements"</span>: [
        {
          <span class="pl-ent">"type"</span>: <span class="pl-s"><span class="pl-pds">"</span>relation<span class="pl-pds">"</span></span>,
          <span class="pl-ent">"id"</span>: <span class="pl-c1">18320662</span>,
          <span class="pl-ent">"version"</span>: <span class="pl-c1">1</span>,
          <span class="pl-ent">"changeset"</span>: <span class="pl-c1">159556552</span>
        },
        {
          <span class="pl-ent">"type"</span>: <span class="pl-s"><span class="pl-pds">"</span>way<span class="pl-pds">"</span></span>,
          <span class="pl-ent">"id"</span>: <span class="pl-c1">1338869356</span>,
          <span class="pl-ent">"version"</span>: <span class="pl-c1">1</span>,
          <span class="pl-ent">"changeset"</span>: <span class="pl-c1">159556552</span>
        },</pre></div>
</details>
<p dir="auto">All in all, this seems rather ugly and I wouldn't recommend it. Also, it doesn't address the issue that some elements could have "if-unused": true, while other could have "if-unused": false.</p>
<p dir="auto">I see two options here: we could add it as an  "options" property on global level. Besides, "if-used" could also be added to each delete element, like I've mentioned in my previous post. I'm a bit undecided if we should support both, and allow the property on the delete element level to override the global option. Maybe that's over-engineering, and having only a global property would be just fine.</p>
<p dir="auto">I'm demo'ing both variants in the example below:</p>
<div class="highlight highlight-source-json" dir="auto"><pre class="notranslate">{
  <span class="pl-ent">"version"</span>: <span class="pl-s"><span class="pl-pds">"</span>0.6<span class="pl-pds">"</span></span>,
  <span class="pl-ent">"generator"</span>: <span class="pl-s"><span class="pl-pds">"</span>demo<span class="pl-pds">"</span></span>,
  <span class="pl-ent">"options"</span>: {
    <span class="pl-ent">"close_changeset_after_uploading"</span>: <span class="pl-c1">true</span>,
    <span class="pl-ent">"if-unused"</span>: <span class="pl-c1">true</span>
  },
  <span class="pl-ent">"osmChange"</span>: {
    <span class="pl-ent">"create"</span>: [
      {
        <span class="pl-ent">"type"</span>: <span class="pl-s"><span class="pl-pds">"</span>node<span class="pl-pds">"</span></span>,
        <span class="pl-ent">"id"</span>: <span class="pl-c1">-1</span>,
        <span class="pl-ent">"lat"</span>: <span class="pl-c1">81.0714</span>,
        <span class="pl-ent">"lon"</span>: <span class="pl-c1">-139.0956</span>,
        <span class="pl-ent">"changeset"</span>: <span class="pl-c1">159556552</span>,
        <span class="pl-ent">"tags"</span>: {
          <span class="pl-ent">"man_made"</span>: <span class="pl-s"><span class="pl-pds">"</span>mast<span class="pl-pds">"</span></span>,
          <span class="pl-ent">"name"</span>: <span class="pl-s"><span class="pl-pds">"</span>Principal<span class="pl-pds">"</span></span>
        }
      }
    ],
    <span class="pl-ent">"modify"</span>: [
      {
        <span class="pl-ent">"type"</span>: <span class="pl-s"><span class="pl-pds">"</span>node<span class="pl-pds">"</span></span>,
        <span class="pl-ent">"id"</span>: <span class="pl-c1">12394725038</span>,
        <span class="pl-ent">"version"</span>: <span class="pl-c1">3</span>,
        <span class="pl-ent">"lat"</span>: <span class="pl-c1">-50.2701</span>,
        <span class="pl-ent">"lon"</span>: <span class="pl-c1">131.176</span>,
        <span class="pl-ent">"changeset"</span>: <span class="pl-c1">159556552</span>,
        <span class="pl-ent">"tags"</span>: {
          <span class="pl-ent">"man_made"</span>: <span class="pl-s"><span class="pl-pds">"</span>mast<span class="pl-pds">"</span></span>,
          <span class="pl-ent">"name"</span>: <span class="pl-s"><span class="pl-pds">"</span>Future<span class="pl-pds">"</span></span>
        }
      }
    ],
    <span class="pl-ent">"delete"</span>: [
      {
        <span class="pl-ent">"type"</span>: <span class="pl-s"><span class="pl-pds">"</span>relation<span class="pl-pds">"</span></span>,
        <span class="pl-ent">"id"</span>: <span class="pl-c1">18320662</span>,
        <span class="pl-ent">"version"</span>: <span class="pl-c1">1</span>,
        <span class="pl-ent">"changeset"</span>: <span class="pl-c1">159556552</span>,
        <span class="pl-ent">"if-unused"</span>: <span class="pl-c1">true</span>
      },
      {
        <span class="pl-ent">"type"</span>: <span class="pl-s"><span class="pl-pds">"</span>way<span class="pl-pds">"</span></span>,
        <span class="pl-ent">"id"</span>: <span class="pl-c1">1338869356</span>,
        <span class="pl-ent">"version"</span>: <span class="pl-c1">1</span>,
        <span class="pl-ent">"changeset"</span>: <span class="pl-c1">159556552</span>,
        <span class="pl-ent">"if-unused"</span>: <span class="pl-c1">false</span>
      },
      {
        <span class="pl-ent">"type"</span>: <span class="pl-s"><span class="pl-pds">"</span>node<span class="pl-pds">"</span></span>,
        <span class="pl-ent">"id"</span>: <span class="pl-c1">12394725046</span>,
        <span class="pl-ent">"version"</span>: <span class="pl-c1">1</span>,
        <span class="pl-ent">"changeset"</span>: <span class="pl-c1">159556552</span>,
        <span class="pl-ent">"if-used"</span>: <span class="pl-c1">true</span>
      }
    ]
  }
}
</pre></div>
<p dir="auto">An (optional) <code class="notranslate">options</code> property would also be a good place to store additional instructions, like "close the changeset after uploading". The options property isn't relevant for the download and can be omitted. The idea is to have one format that's fit for both upload and download scenarios.</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />Reply to this email directly, <a href="https://github.com/openstreetmap/openstreetmap-website/pull/5973#issuecomment-2847798724">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AAK2OLKIML2IXI3T6LA6X6D24OXPZAVCNFSM6AAAAAB4HU3NT2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDQNBXG44TQNZSGQ">unsubscribe</a>.<br />You are receiving this because you are subscribed to this thread.<img src="https://github.com/notifications/beacon/AAK2OLMBPYWELZAWPJAFBX324OXPZA5CNFSM6AAAAAB4HU3NT2WGG33NNVSW45C7OR4XAZNMJFZXG5LFINXW23LFNZ2KUY3PNVWWK3TUL5UWJTVJXX24I.gif" height="1" width="1" alt="" /><span style="color: transparent; font-size: 0; display: none; visibility: hidden; overflow: hidden; opacity: 0; width: 0; height: 0; max-width: 0; max-height: 0; mso-hide: all">Message ID: <span><openstreetmap/openstreetmap-website/pull/5973/c2847798724</span><span>@</span><span>github</span><span>.</span><span>com></span></span></p>

<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/openstreetmap/openstreetmap-website/pull/5973#issuecomment-2847798724",
"url": "https://github.com/openstreetmap/openstreetmap-website/pull/5973#issuecomment-2847798724",
"name": "View Pull Request"
},
"description": "View this Pull Request on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>