Reconciling ActivityPub Deletes with NodeBB deletion

A little semantics thing: I’d argue that HTTP 410 and as:Tombstone are semantically equivalent, i.e.

  • an as:Tombstone should always be served with the HTTP 410 status, and
  • A HTTP 410 status should be treated as a tombstone

Software unaware of tombstones will then treat it as a hard delete. “Fully” tombstone aware software can then use logic like

if (status == 200 && contentType is as2) {
    // treat as normal
} else if (status == 410 && contentType is as2 && <as:Tombstone> in body.type) {
    // also treat as normal
} else if (status == 410) {
   // synthesize a tombstone
} else if (status == 404) {
   // hard delete?
} else // existing error handling logic
2 Likes