Deletion & Lifecycle
RO-Crates are deleted directly; what happens to the entities materialised from them is the implementation's call. This page covers the delete operation, tombstones, the entity knock-on, and the two patterns that replace entity-level writes: curation RO-Crates for enrichment, and the one constrained entity delete.
Deleting an RO-Crate
DELETE /ro-crate/https%3A%2F%2Fcatalog.paradisec.org.au%2Frepository%2FNT1%2F001
Deletion is not a deposit session — there is nothing to stage and the
operation is already atomic. It removes the RO-Crate's metadata document
and files. Implementations needing slow teardown MAY return 202 Accepted.
The specification mandates no preconditions. An implementation MAY
refuse a delete with 409 and a reason body per its own policy — curatorial
holds, cross-references, retention rules — but none is required.
The Entity Knock-On
What deletion does to the entities materialised from the RO-Crate is implementation-defined, with the same latitude as re-deposit pruning:
- An entity whose
roCrateIdsstill lists another contributor survives — deleting one contributor just removes it from the list. The merged-entity case needs no special protection; it is the same machinery as any re-materialisation. - An entity left with no contributors MAY be pruned — or deliberately retained. Retention is legitimate: an archive may keep an Organisation entity alive after its last contributing RO-Crate is deleted.
Entity URIs have no independent deletion semantics: entities disappear (or not) per the implementation's lifecycle rules, and when they do, their URIs adopt the same tombstone policy as everything else.
Previewing a Delete
There is no dry-run endpoint. Clients can approximate one:
GET /ro-crate/{id}and readentityIds.- For each listed entity,
GET /entity/{id}and inspectroCrateIds. - Any entity whose
roCrateIdscontains only this RO-Crate is a pruning candidate.
Treat the result as an indication, not a promise — the entity lifecycle is implementation-defined, so a candidate may still be retained.
Tombstones
Each implementation adopts one tombstone policy, declared as the
top-level tombstonePolicy
in /capabilities, covering deleted RO-Crate URIs (including
/ro-crate/{id}/metadata) and the entity knock-on alike — no mixing:
-
"410": deleted URIs return410 Gonewith a Tombstone body:{"id": "https://catalog.paradisec.org.au/repository/NT1/001","resourceType": "RO-Crate","deletedAt": "2026-07-21T04:12:00Z","reason": "Withdrawn at the depositor's request"}An entity or file tombstone MAY carry a
roCrateIdnaming the RO-Crate whose deletion orphaned it. -
"404": hard delete — deleted URIs are indistinguishable from URIs that never existed.
ID Reuse
A deleted RO-Crate ID MAY be recreated (POST /deposits with the
previously used ID); implementations MAY refuse with 409. Recreation is a
new RO-Crate, not a continuation — no version lineage and no
relationship to the deleted RO-Crate's entities is implied.
The policies pair naturally, though neither pairing is mandated: 410
tombstones suit archives that reserve IDs forever (trustworthy citations);
404 hard-delete suits clean reuse, including the delete-and-recreate flow
for changing an RO-Crate's ID.
Open Deposits When the RO-Crate Is Deleted
Delete wins. An open deposit targeting a deleted RO-Crate can no
longer finalise: the finalise fails, the failure is recorded in the
deposit's errors, and the deposit returns to open — the same shape as a
validation failure. The client's move is to abort. Implementations MAY
auto-abort such deposits; cautious archives can instead refuse the delete
via the implementation-defined 409 above.
Enriching Entities: Curation RO-Crates
There is no entity UPDATE. To enrich an entity beyond what its original
deposit said — without touching that deposit — deposit a small curation
RO-Crate whose metadata document mentions the entity's @id and carries
the extra metadata. The ordinary
many-to-one merge combines the contributions.
For example, to flesh out an Organisation entity that a collection deposit mentioned only by name, deposit a one-entity RO-Crate:
{
"@id": "https://ror.org/03zparb35",
"@type": "Organization",
"name": "Australian National University",
"url": "https://www.anu.edu.au/"
}
The merged entity now lists both RO-Crates in roCrateIds —
the enrichment survives re-deposit of the original RO-Crate, carries its own
provenance, and flows through the normal session pathway with nothing new
to learn.
Deleting a Contributor-less Entity
The one entity-level write:
DELETE /entity/{id} is valid only when the
entity's roCrateIds is empty, and returns 409 otherwise. It
exists because no session-based operation can reach an entity that no
RO-Crate contributes to — such as a retained Organisation whose last
contributor was deleted. Deposited data can never be touched this way:
while any RO-Crate contributes, the delete is refused and changes go
through deposit sessions instead.