<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>According to documentation of Swift's new object versioning
      middleware [1], a deleted object won't be visible but previous
      version content is still recoverable.</p>
    <p>Documentation doesn't say how, though. After deleting <i>myobject</i>,
      I can see its versions:</p>
    <p><tt>$ openstack object delete testcontainer myobject<br>
        $ curl
        <a class="moz-txt-link-freetext" href="http://192.168.1.200:8080/v1/$ACCOUNT/testcontainer?versions">http://192.168.1.200:8080/v1/$ACCOUNT/testcontainer?versions</a> -H
        "x-auth-token: $T" | python -m json.tool | grep -e version_id -e
        name</tt><tt><br>
      </tt><tt>        "name": "myobject",</tt><tt><br>
      </tt><tt>        "version_id": "1590896642.07497"</tt><tt><br>
      </tt><tt>        "name": "myobject",</tt><tt><br>
      </tt><tt>        "version_id": "1590892906.83929"</tt><tt><br>
      </tt><tt>        "name": "myobject",</tt><tt><br>
      </tt><tt>        "version_id": "1590892899.36921"</tt><br>
    </p>
    <p>But I can't GET old versions of <i>myobject</i>:<br>
    </p>
    <p><tt>$ curl -i
<a class="moz-txt-link-freetext" href="http://192.168.1.200:8080/v1/$ACCOUNT/testcontainer/myobject?version-id=">http://192.168.1.200:8080/v1/$ACCOUNT/testcontainer/myobject?version-id=</a>"1590896642.07497" 
        -H "x-auth-token: $T"</tt><tt><br>
      </tt><tt>HTTP/1.1 404 Not Found</tt></p>
    <p>After creating another object with the same name <i>myobject</i>,
      old versions are accessible again. This is a solution, but dare I
      say not a very elegant one. <b>Can </b><b>a deleted, versioned
        object be recovered without creating a dummy object with the
        same name?</b><br>
    </p>
    <p>[1]
<a class="moz-txt-link-freetext" href="https://docs.openstack.org/swift/latest/middleware.html#object-crud-operations-to-a-versioned-container">https://docs.openstack.org/swift/latest/middleware.html#object-crud-operations-to-a-versioned-container</a><br>
    </p>
  </body>
</html>