Memento, and time-based access to a resource
Memento is the HTTP framework that lets a client ask a URL for the representation it had at a chosen datetime. It is the versioning and deprecation layer for anything an agent reads.
What it is
Memento is an HTTP framework, published as RFC 7089 by Herbert Van de Sompel, Michael Nelson and Robert Sanderson, for obtaining representations of prior states of a given resource. It introduces two mechanisms. Datetime negotiation is a variation on content negotiation that uses the resource's URI and the client's preferred datetime, carried in an Accept-Datetime request header; the response is a representation of the resource as it stood then, with a Memento-Datetime header stating which state was returned. TimeMaps are lists that enumerate the URIs of resources encapsulating prior states of the original resource.
The vocabulary is small and worth knowing. An Original Resource is the resource in its current form. A Memento is a resource that encapsulates a frozen prior state of it. A TimeGate is a resource that resolves a datetime to the appropriate Memento, and a TimeMap is the resource that lists them.
What it gives the knowledge layer
A URL points at whatever the resource says now. For an agent reading a page — or an internal knowledge base served over HTTP — that is a silent failure mode: the answer is fetched today, the claim was written at some other time, and nothing in the response says so.
Memento makes the version addressable. This is the web's own answer to "what did this page say last week", and it is therefore the versioning and deprecation layer for anything an agent reads: a citation can carry the datetime at which it was true, and a reader can re-fetch that state rather than the current one. It also composes with provenance — PROV-O records what a claim was derived from, and Memento is what makes the derived-from state retrievable.
Where the spec lives
The specification is RFC 7089, published by the RFC Editor at rfc-editor.org/rfc/rfc7089. The framework's project home, with the terminology and the deployment record, is mementoweb.org.
The RFC is useful beyond the headers because it describes four deployment patterns — the original resource acting as its own TimeGate, a remote resource acting as a TimeGate, an original resource that is fixed, and Mementos without a TimeGate — which is a practical map of how much version support a given server actually has.
What it does not solve
It only helps if someone kept the earlier versions. An unarchived page still has no past: the protocol can negotiate for a prior state, but a server that never stored one has nothing to return. An empty TimeMap is an honest answer rather than a fixed one.
Nor does it say which version is authoritative, or that the newest state is the right one to act on. That is a policy decision, and a currentness rule the knowledge layer has to state for itself — see Adoption for how that rule is put into practice.
FAQ
A URL returns whatever the resource says now. Memento lets a client ask for a representation as of a chosen datetime, so a reader can retrieve the state a claim was based on.
A TimeMap is a resource from which a list of URIs of Mementos of an original resource can be obtained — the versions that exist, with their datetimes. It is how a client discovers what prior states are available before asking for one.
No. It is a protocol for requesting and identifying prior states. If nobody archived them, there is nothing to negotiate for.
They answer different questions. Provenance records where a statement came from and what produced it; Memento makes the specific prior state of a URL retrievable.