TDMRep
The W3C text and data mining reservation, used mainly by publishers.
Why an agent cares
It is the mechanism EU copyright law points at for reserving text and data mining rights, so for publishers it carries legal weight the others do not. A malformed tdmrep.json reserves nothing, which is the failure mode worth catching.
Adoption
Early production. Several independent organisations run it in production, though it is still niche on the open web.
Direction of travel: ▲ rising, as at .
The strongest genuine opt-out adoption: the W3C adopters register lists 30+ STM publishers plus trade publishers, hosting platforms and French newspapers, driven by EU regulation.
| Adopter | Depth |
|---|---|
| Elsevier, Springer Nature, IEEE, Sage, Taylor & Francis, ACS and ~25 more | production |
| Hachette Livre, Mondadori, Penguin Random House Spain and Germany | production |
| Atypon, HighWire, Bookwire, Cairn.info, Edigita (platform opt-in) | production |
| Les Echos, Le Parisien, Ouest-France, Radio France, Sud Ouest | production |
All of the above are recorded in the same place: github.com.
What we check
| Check | Severity | Raises | On whose authority |
|---|---|---|---|
| TDMRep Malformed Document | high | conformance, usability | specification: W3C TDM Reservation Protocol |
Supporting documents: W3C TDM Reservation Protocol Required by W3C TDM Reservation Protocol. Bad: the file isn't a JSON array of rules as the spec requires, so no reservation is readable. Fix: serve an array, e.g. [{"location": "/", "tdm-reservation": 1}]. | |||
| TDMRep Invalid Reservation | high | conformance, usability | specification: W3C TDM Reservation Protocol |
Supporting documents: W3C TDM Reservation Protocol Required by W3C TDM Reservation Protocol. Bad: "tdm-reservation" isn't the number 0 or 1 (a quoted "1", another number, or a missing value is a protocol error), so the opt-out can't be interpreted. Fix: set the bare number 1 (reserved) or 0 (not reserved), unquoted. | |||
| TDMRep Missing Location | medium | conformance, usability | specification: W3C TDM Reservation Protocol |
Supporting documents: W3C TDM Reservation Protocol Required by W3C TDM Reservation Protocol. Bad: a rule omits its required "location" pattern, so agents can't tell which URLs the reservation covers. Fix: add a location to every rule ("/" covers the whole site). | |||
| TDMRep Invalid Policy | medium | conformance, usability | specification: W3C TDM Reservation Protocol |
Supporting documents: W3C TDM Reservation Protocol Required by W3C TDM Reservation Protocol. Bad: a "tdm-policy" is present but isn't an absolute http(s) URL, so agents can't fetch the licensing policy it points to. Fix: use the policy page's full URL. | |||
| TDMRep Insecure Policy | low | usability, security (CWE-319) | Lumar readiness bar, beyond W3C TDM Reservation Protocol |
Supporting documents: W3C TDM Reservation Protocol Lumar readiness bar: no specification requires this. Provisional security check; precision has not yet been measured. Bad: a rule's tdm-policy links a plain http:// URL, so the licence terms an agent is asked to honour can be altered on the way. A Lumar bar: TDMRep allows any URL. Fix: serve the policy over https and link "tdm-policy": "https://example.com/tdm-policy.json". An advertised HTTP destination permits unencrypted communication. OWASP API API8 (2023) — Security MisconfigurationASVS V12.2.1 (5.0.0) — TLS for external HTTP services Only advertised transport configuration is observed; API deployment security is not fully assessed. Related guidance does not establish exploitation or framework compliance. Security checks are provisional. | |||
Examples
Both run through the same checks as a live scan: the first passes, the second is flagged.
[
{ "location": "/", "tdm-reservation": 1, "tdm-policy": "https://example.com/tdm-policy.json" },
{ "location": "/blog/", "tdm-reservation": 1 },
{ "location": "/press-releases/", "tdm-reservation": 0 }
][
{ "tdm-reservation": 1 },
{ "location": "/blog/", "tdm-reservation": "1" },
{ "location": "/docs/", "tdm-reservation": 1, "tdm-policy": "/policies/tdm" },
{ "location": "/media/", "tdm-reservation": 1, "tdm-policy": "http://example.com/policies/tdm.json" }
]Specifications
| Document | Revision | Kind |
|---|---|---|
| W3C TDM Reservation Protocol | Final report, 10 May 2024 | specification |
Last re-read against the published documents: .